{"version":3,"sources":["jsdelivr-header.js","/npm/federated-learning-client@0.0.5/dist/bundle.js"],"names":[],"mappings":"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","file":"/npm/federated-learning-client@0.0.5/dist/bundle.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/federated-learning-client@0.0.5/dist/bundle.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.federated = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){\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 = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, 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 tf = require(\"@tensorflow/tfjs\");\nvar socketProxy = require(\"socket.io-client\");\nvar uuid = require(\"uuid/v4\");\nvar common_1 = require(\"./common\");\nvar models_1 = require(\"./models\");\nvar socketio = socketProxy.default || socketProxy;\nvar CONNECTION_TIMEOUT = 10 * 1000;\nvar UPLOAD_TIMEOUT = 5 * 1000;\nvar COOKIE_NAME = 'federated-learner-uuid';\nvar YEAR_IN_MS = 365 * 24 * 60 * 60 * 1000;\nvar Client = (function () {\n    function Client(server, model, config) {\n        var _this = this;\n        this.server = server;\n        if (models_1.isFederatedClientModel(model)) {\n            this.model = model;\n        }\n        else {\n            var compileConfig = (config || {}).modelCompileConfig || {};\n            this.model = new models_1.FederatedClientTfModel(model, compileConfig);\n        }\n        this.uploadCallbacks = [];\n        this.versionCallbacks = [function (v1, v2) {\n                _this.log(\"Updated model: \" + v1 + \" -> \" + v2);\n            }];\n        this.versionUpdateCounts = {};\n        this.verbose = (config || {}).verbose;\n        this.sendMetrics = (config || {}).sendMetrics;\n        if ((config || {}).clientId) {\n            this.clientId = config.clientId;\n        }\n        else if (getCookie(COOKIE_NAME)) {\n            this.clientId = getCookie(COOKIE_NAME);\n        }\n        else {\n            this.clientId = uuid();\n            setCookie(COOKIE_NAME, this.clientId);\n        }\n        this.hyperparams = (config || {}).hyperparams || {};\n    }\n    Client.prototype.modelVersion = function () {\n        return this.msg == null ? 'unsynced' : this.msg.model.version;\n    };\n    Client.prototype.onNewVersion = function (callback) {\n        this.versionCallbacks.push(callback);\n    };\n    Client.prototype.onUpload = function (callback) {\n        this.uploadCallbacks.push(callback);\n    };\n    Client.prototype.setup = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var newVersion;\n            var _this = this;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4, this.time('Initial model setup', function () { return __awaiter(_this, void 0, void 0, function () {\n                            return __generator(this, function (_a) {\n                                switch (_a.label) {\n                                    case 0: return [4, this.model.setup()];\n                                    case 1:\n                                        _a.sent();\n                                        return [2];\n                                }\n                            });\n                        }); })];\n                    case 1:\n                        _a.sent();\n                        this.x = tf.tensor([], [0].concat(this.model.inputShape));\n                        this.y = tf.tensor([], [0].concat(this.model.outputShape));\n                        return [4, this.time('Download weights from server', function () { return __awaiter(_this, void 0, void 0, function () {\n                                var _a;\n                                return __generator(this, function (_b) {\n                                    switch (_b.label) {\n                                        case 0:\n                                            _a = this;\n                                            return [4, this.connectTo(this.server)];\n                                        case 1:\n                                            _a.msg = _b.sent();\n                                            return [2];\n                                    }\n                                });\n                            }); })];\n                    case 2:\n                        _a.sent();\n                        this.setVars(this.msg.model.vars);\n                        newVersion = this.modelVersion();\n                        this.versionUpdateCounts[newVersion] = 0;\n                        this.versionCallbacks.forEach(function (cb) { return cb(null, newVersion); });\n                        this.socket.on(common_1.Events.Download, function (msg) {\n                            var oldVersion = _this.modelVersion();\n                            var newVersion = msg.model.version;\n                            _this.msg = msg;\n                            _this.setVars(msg.model.vars);\n                            _this.versionUpdateCounts[newVersion] = 0;\n                            _this.versionCallbacks.forEach(function (cb) { return cb(oldVersion, newVersion); });\n                        });\n                        return [2];\n                }\n            });\n        });\n    };\n    Client.prototype.dispose = function () {\n        this.socket.disconnect();\n        this.log('Disconnected');\n    };\n    Client.prototype.federatedUpdate = function (x, y) {\n        return __awaiter(this, void 0, void 0, function () {\n            var xNew, yNew, examplesPerUpdate, _loop_1, this_1;\n            var _this = this;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        xNew = addRows(this.x, x, this.model.inputShape);\n                        yNew = addRows(this.y, y, this.model.outputShape);\n                        tf.dispose([this.x, this.y]);\n                        this.x = xNew;\n                        this.y = yNew;\n                        examplesPerUpdate = this.hyperparam('examplesPerUpdate');\n                        _loop_1 = function () {\n                            var modelVersion, xTrain, yTrain, fitConfig, metrics, stdDev, newVars, newTensors, uploadMsg, xRest, yRest;\n                            return __generator(this, function (_a) {\n                                switch (_a.label) {\n                                    case 0:\n                                        modelVersion = this_1.modelVersion();\n                                        xTrain = sliceWithEmptyTensors(this_1.x, 0, examplesPerUpdate);\n                                        yTrain = sliceWithEmptyTensors(this_1.y, 0, examplesPerUpdate);\n                                        fitConfig = {\n                                            epochs: this_1.hyperparam('epochs'),\n                                            batchSize: this_1.hyperparam('batchSize'),\n                                            learningRate: this_1.hyperparam('learningRate')\n                                        };\n                                        metrics = null;\n                                        if (this_1.sendMetrics) {\n                                            metrics = this_1.model.evaluate(xTrain, yTrain);\n                                        }\n                                        return [4, this_1.time('Fit model', function () { return __awaiter(_this, void 0, void 0, function () {\n                                                var err_1;\n                                                return __generator(this, function (_a) {\n                                                    switch (_a.label) {\n                                                        case 0:\n                                                            _a.trys.push([0, 2, , 3]);\n                                                            return [4, this.model.fit(xTrain, yTrain, fitConfig)];\n                                                        case 1:\n                                                            _a.sent();\n                                                            return [3, 3];\n                                                        case 2:\n                                                            err_1 = _a.sent();\n                                                            console.error(err_1);\n                                                            throw err_1;\n                                                        case 3: return [2];\n                                                    }\n                                                });\n                                            }); })];\n                                    case 1:\n                                        _a.sent();\n                                        stdDev = this_1.hyperparam('weightNoiseStddev');\n                                        newVars = void 0;\n                                        if (!stdDev) return [3, 3];\n                                        newTensors = tf.tidy(function () {\n                                            return _this.model.getVars().map(function (v) {\n                                                return v.add(tf.randomNormal(v.shape, 0, stdDev));\n                                            });\n                                        });\n                                        return [4, common_1.serializeVars(newTensors)];\n                                    case 2:\n                                        newVars = _a.sent();\n                                        tf.dispose(newTensors);\n                                        return [3, 5];\n                                    case 3: return [4, common_1.serializeVars(this_1.model.getVars())];\n                                    case 4:\n                                        newVars = _a.sent();\n                                        _a.label = 5;\n                                    case 5:\n                                        this_1.setVars(this_1.msg.model.vars);\n                                        uploadMsg = {\n                                            model: { version: modelVersion, vars: newVars },\n                                            clientId: this_1.clientId,\n                                        };\n                                        if (this_1.sendMetrics) {\n                                            uploadMsg.metrics = metrics;\n                                        }\n                                        return [4, this_1.time('Upload weights to server', function () { return __awaiter(_this, void 0, void 0, function () {\n                                                return __generator(this, function (_a) {\n                                                    switch (_a.label) {\n                                                        case 0: return [4, this.uploadVars(uploadMsg)];\n                                                        case 1:\n                                                            _a.sent();\n                                                            return [2];\n                                                    }\n                                                });\n                                            }); })];\n                                    case 6:\n                                        _a.sent();\n                                        this_1.uploadCallbacks.forEach(function (cb) { return cb(uploadMsg); });\n                                        this_1.versionUpdateCounts[modelVersion] += 1;\n                                        tf.dispose([xTrain, yTrain]);\n                                        xRest = sliceWithEmptyTensors(this_1.x, examplesPerUpdate);\n                                        yRest = sliceWithEmptyTensors(this_1.y, examplesPerUpdate);\n                                        tf.dispose([this_1.x, this_1.y]);\n                                        this_1.x = xRest;\n                                        this_1.y = yRest;\n                                        return [2];\n                                }\n                            });\n                        };\n                        this_1 = this;\n                        _a.label = 1;\n                    case 1:\n                        if (!(this.x.shape[0] >= examplesPerUpdate)) return [3, 3];\n                        return [5, _loop_1()];\n                    case 2:\n                        _a.sent();\n                        return [3, 1];\n                    case 3: return [2];\n                }\n            });\n        });\n    };\n    Client.prototype.evaluate = function (x, y) {\n        return this.model.evaluate(x, y);\n    };\n    Client.prototype.predict = function (x) {\n        return this.model.predict(x);\n    };\n    Object.defineProperty(Client.prototype, \"inputShape\", {\n        get: function () {\n            return this.model.inputShape;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Client.prototype, \"outputShape\", {\n        get: function () {\n            return this.model.outputShape;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Client.prototype.numUpdates = function () {\n        var _this = this;\n        var numTotal = 0;\n        Object.keys(this.versionUpdateCounts).forEach(function (k) {\n            numTotal += _this.versionUpdateCounts[k];\n        });\n        return numTotal;\n    };\n    Client.prototype.numVersions = function () {\n        return Object.keys(this.versionUpdateCounts).length;\n    };\n    Client.prototype.numExamples = function () {\n        return this.x.shape[0];\n    };\n    Client.prototype.hyperparam = function (key) {\n        return (this.hyperparams[key] || this.msg.hyperparams[key] ||\n            common_1.DEFAULT_CLIENT_HYPERPARAMS[key]);\n    };\n    Client.prototype.numExamplesPerUpdate = function () {\n        return this.hyperparam('examplesPerUpdate');\n    };\n    Client.prototype.numExamplesRemaining = function () {\n        return this.numExamplesPerUpdate() - this.numExamples();\n    };\n    Client.prototype.uploadVars = function (msg) {\n        return __awaiter(this, void 0, void 0, function () {\n            var prom;\n            var _this = this;\n            return __generator(this, function (_a) {\n                prom = new Promise(function (resolve, reject) {\n                    var rejectTimer = setTimeout(function () { return reject(\"uploadVars timed out\"); }, UPLOAD_TIMEOUT);\n                    _this.socket.emit(common_1.Events.Upload, msg, function () {\n                        clearTimeout(rejectTimer);\n                        resolve();\n                    });\n                });\n                return [2, prom];\n            });\n        });\n    };\n    Client.prototype.setVars = function (newVars) {\n        var _this = this;\n        tf.tidy(function () {\n            _this.model.setVars(newVars.map(function (v) { return common_1.deserializeVar(v); }));\n        });\n    };\n    Client.prototype.connectTo = function (server) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                if (typeof server === 'string') {\n                    this.socket = socketio(server);\n                }\n                else {\n                    this.socket = server();\n                }\n                return [2, fromEvent(this.socket, common_1.Events.Download, CONNECTION_TIMEOUT)];\n            });\n        });\n    };\n    Client.prototype.log = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        if (this.verbose) {\n            console.log.apply(console, ['Federated Client:'].concat(args));\n        }\n    };\n    Client.prototype.time = function (msg, action) {\n        return __awaiter(this, void 0, void 0, function () {\n            var t1, t2;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        t1 = new Date().getTime();\n                        return [4, action()];\n                    case 1:\n                        _a.sent();\n                        t2 = new Date().getTime();\n                        this.log(msg + \" took \" + (t2 - t1) + \"ms\");\n                        return [2];\n                }\n            });\n        });\n    };\n    return Client;\n}());\nexports.Client = Client;\nfunction fromEvent(emitter, eventName, timeout) {\n    return __awaiter(this, void 0, void 0, function () {\n        return __generator(this, function (_a) {\n            return [2, new Promise(function (resolve, reject) {\n                    var rejectTimer = setTimeout(function () { return reject(eventName + \" event timed out\"); }, timeout);\n                    var listener = function (evtArgs) {\n                        emitter.removeListener(eventName, listener);\n                        clearTimeout(rejectTimer);\n                        resolve(evtArgs);\n                    };\n                    emitter.on(eventName, listener);\n                })];\n        });\n    });\n}\nfunction concatWithEmptyTensors(a, b) {\n    if (a.shape[0] === 0) {\n        return b.clone();\n    }\n    else if (b.shape[0] === 0) {\n        return a.clone();\n    }\n    else {\n        return a.concat(b);\n    }\n}\nfunction sliceWithEmptyTensors(a, begin, size) {\n    if (begin >= a.shape[0]) {\n        return tf.tensor([], [0].concat(a.shape.slice(1)));\n    }\n    else {\n        return a.slice(begin, size);\n    }\n}\nfunction addRows(existing, newEls, unitShape) {\n    if (tf.util.arraysEqual(newEls.shape, unitShape)) {\n        return tf.tidy(function () { return concatWithEmptyTensors(existing, tf.expandDims(newEls)); });\n    }\n    else {\n        tf.util.assertShapesMatch(newEls.shape.slice(1), unitShape);\n        return tf.tidy(function () { return concatWithEmptyTensors(existing, newEls); });\n    }\n}\nfunction getCookie(name) {\n    if (typeof document === 'undefined') {\n        return null;\n    }\n    var v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)');\n    return v ? v[2] : null;\n}\nfunction setCookie(name, value) {\n    if (typeof document === 'undefined') {\n        return;\n    }\n    var d = new Date();\n    d.setTime(d.getTime() + YEAR_IN_MS);\n    document.cookie = name + '=' + value + ';path=/;expires=' + d.toUTCString();\n}\n\n},{\"./common\":2,\"./models\":4,\"@tensorflow/tfjs\":232,\"socket.io-client\":291,\"uuid/v4\":305}],2:[function(require,module,exports){\n(function (Buffer){\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 = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, 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 tf = require(\"@tensorflow/tfjs\");\nexports.dtypeToTypedArrayCtor = {\n    'float32': Float32Array,\n    'int32': Int32Array,\n    'bool': Uint8Array\n};\nfunction serializeVar(variable) {\n    return __awaiter(this, void 0, void 0, function () {\n        var data, copy;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0: return [4, variable.data()];\n                case 1:\n                    data = _a.sent();\n                    copy = data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);\n                    return [2, { dtype: variable.dtype, shape: variable.shape.slice(), data: copy }];\n            }\n        });\n    });\n}\nexports.serializeVar = serializeVar;\nfunction serializeVars(vars) {\n    return __awaiter(this, void 0, void 0, function () {\n        var varsP;\n        return __generator(this, function (_a) {\n            varsP = [];\n            vars.forEach(function (value, key) {\n                var lv = value;\n                if (lv.write != null) {\n                    varsP.push(serializeVar(lv.read()));\n                }\n                else {\n                    varsP.push(serializeVar(lv));\n                }\n            });\n            return [2, Promise.all(varsP)];\n        });\n    });\n}\nexports.serializeVars = serializeVars;\nfunction stackSerialized(vars) {\n    var updateCount = vars.length;\n    var weightCount = vars[0].length;\n    var stackedVars = [];\n    for (var wt = 0; wt < weightCount; wt++) {\n        var singleVar = vars[0][wt];\n        var byteLength = singleVar.data.byteLength;\n        var stackedVar = new Uint8Array(byteLength * updateCount);\n        for (var up = 0; up < updateCount; up++) {\n            var update = vars[up][wt].data;\n            stackedVar.set(new Uint8Array(update), up * byteLength);\n        }\n        stackedVars.push({\n            dtype: singleVar.dtype,\n            shape: [updateCount].concat(singleVar.shape),\n            data: stackedVar.buffer.slice(stackedVar.byteOffset, stackedVar.byteOffset + stackedVar.byteLength)\n        });\n    }\n    return stackedVars;\n}\nexports.stackSerialized = stackSerialized;\nfunction deserializeVars(vars) {\n    return vars.map(deserializeVar);\n}\nexports.deserializeVars = deserializeVars;\nfunction serializedToArray(serialized) {\n    var dtype = serialized.dtype, shape = serialized.shape, dataBuffer = serialized.data;\n    var data;\n    if (dataBuffer instanceof ArrayBuffer) {\n        data = dataBuffer;\n    }\n    else if (dataBuffer instanceof Buffer) {\n        var dataAsBuffer = dataBuffer;\n        data = dataAsBuffer.buffer.slice(dataAsBuffer.byteOffset, dataAsBuffer.byteOffset + dataAsBuffer.byteLength);\n    }\n    var numel = shape.reduce(function (x, y) { return x * y; }, 1);\n    var ctor = exports.dtypeToTypedArrayCtor[dtype];\n    return new ctor(data, 0, numel);\n}\nexports.serializedToArray = serializedToArray;\nfunction deserializeVar(serialized) {\n    var array = serializedToArray(serialized);\n    return tf.tensor(array, serialized.shape, serialized.dtype);\n}\nexports.deserializeVar = deserializeVar;\nvar Events;\n(function (Events) {\n    Events[\"Download\"] = \"downloadVars\";\n    Events[\"Upload\"] = \"uploadVars\";\n})(Events = exports.Events || (exports.Events = {}));\nexports.DEFAULT_CLIENT_HYPERPARAMS = {\n    examplesPerUpdate: 5,\n    learningRate: 0.001,\n    batchSize: 32,\n    epochs: 5,\n    weightNoiseStddev: 0\n};\nexports.DEFAULT_SERVER_HYPERPARAMS = {\n    aggregation: 'mean',\n    minUpdatesPerVersion: 20\n};\nfunction override(defaults, choices) {\n    var result = {};\n    for (var key in defaults) {\n        result[key] = (choices || {})[key] || defaults[key];\n    }\n    for (var key in (choices || {})) {\n        if (!(key in defaults)) {\n            throw new Error(\"Unrecognized key \\\"\" + key + \"\\\"\");\n        }\n    }\n    return result;\n}\nfunction clientHyperparams(hps) {\n    try {\n        return override(exports.DEFAULT_CLIENT_HYPERPARAMS, hps);\n    }\n    catch (err) {\n        throw new Error(\"Error setting clientHyperparams: \" + err.message);\n    }\n}\nexports.clientHyperparams = clientHyperparams;\nfunction serverHyperparams(hps) {\n    try {\n        return override(exports.DEFAULT_SERVER_HYPERPARAMS, hps);\n    }\n    catch (err) {\n        throw new Error(\"Error setting serverHyperparams: \" + err.message);\n    }\n}\nexports.serverHyperparams = serverHyperparams;\nfunction fetchModel(asyncModel) {\n    return __awaiter(this, void 0, void 0, function () {\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    if (!(typeof asyncModel === 'string')) return [3, 2];\n                    return [4, tf.loadModel(asyncModel)];\n                case 1: return [2, _a.sent()];\n                case 2:\n                    if (!(typeof asyncModel === 'function')) return [3, 4];\n                    return [4, asyncModel()];\n                case 3: return [2, _a.sent()];\n                case 4: return [2, asyncModel];\n            }\n        });\n    });\n}\nexports.fetchModel = fetchModel;\nvar FederatedTfModel = (function () {\n    function FederatedTfModel(initialModel, config) {\n        this._initialModel = initialModel;\n        this.compileConfig = {\n            loss: config.loss || 'categoricalCrossentropy',\n            metrics: config.metrics || ['accuracy'],\n            optimizer: 'sgd'\n        };\n    }\n    FederatedTfModel.prototype.fetchInitial = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var _a;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        if (!this._initialModel) return [3, 2];\n                        _a = this;\n                        return [4, fetchModel(this._initialModel)];\n                    case 1:\n                        _a.model = _b.sent();\n                        this.model.compile(this.compileConfig);\n                        return [3, 3];\n                    case 2: throw new Error('no initial model provided!');\n                    case 3: return [2];\n                }\n            });\n        });\n    };\n    FederatedTfModel.prototype.fit = function (x, y, config) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (config.learningRate) {\n                            this.model.optimizer\n                                .setLearningRate(config.learningRate);\n                        }\n                        return [4, this.model.fit(x, y, {\n                                epochs: config.epochs || exports.DEFAULT_CLIENT_HYPERPARAMS.epochs,\n                                batchSize: config.batchSize || exports.DEFAULT_CLIENT_HYPERPARAMS.batchSize\n                            })];\n                    case 1:\n                        _a.sent();\n                        return [2];\n                }\n            });\n        });\n    };\n    FederatedTfModel.prototype.predict = function (x) {\n        return this.model.predict(x);\n    };\n    FederatedTfModel.prototype.evaluate = function (x, y) {\n        var _this = this;\n        return tf.tidy(function () {\n            var results = _this.model.evaluate(x, y);\n            if (results instanceof Array) {\n                return results.map(function (r) { return r.dataSync()[0]; });\n            }\n            else {\n                return [results.dataSync()[0]];\n            }\n        });\n    };\n    FederatedTfModel.prototype.getVars = function () {\n        return this.model.trainableWeights.map(function (v) { return v.read(); });\n    };\n    FederatedTfModel.prototype.setVars = function (vals) {\n        for (var i = 0; i < vals.length; i++) {\n            this.model.trainableWeights[i].write(vals[i]);\n        }\n    };\n    Object.defineProperty(FederatedTfModel.prototype, \"inputShape\", {\n        get: function () {\n            return this.model.inputLayers[0].batchInputShape.slice(1);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(FederatedTfModel.prototype, \"outputShape\", {\n        get: function () {\n            return this.model.outputShape.slice(1);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    return FederatedTfModel;\n}());\nexports.FederatedTfModel = FederatedTfModel;\nvar FederatedDynamicModel = (function () {\n    function FederatedDynamicModel(args) {\n        this.isFederatedClientModel = true;\n        this.vars = args.vars;\n        this.predict = args.predict;\n        this.loss = args.loss;\n        this.optimizer = tf.train.sgd(exports.DEFAULT_CLIENT_HYPERPARAMS.learningRate);\n        this.inputShape = args.inputShape;\n        this.outputShape = args.outputShape;\n    }\n    FederatedDynamicModel.prototype.setup = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                return [2, Promise.resolve()];\n            });\n        });\n    };\n    FederatedDynamicModel.prototype.fit = function (x, y, config) {\n        return __awaiter(this, void 0, void 0, function () {\n            var epochs, i, ret;\n            var _this = this;\n            return __generator(this, function (_a) {\n                if (config.learningRate) {\n                    this.optimizer.setLearningRate(config.learningRate);\n                }\n                epochs = (config && config.epochs) || 1;\n                for (i = 0; i < epochs; i++) {\n                    ret = this.optimizer.minimize(function () { return _this.loss(y, _this.predict(x)); });\n                    tf.dispose(ret);\n                }\n                return [2];\n            });\n        });\n    };\n    FederatedDynamicModel.prototype.evaluate = function (x, y) {\n        return Array.prototype.slice.call(this.loss(y, this.predict(x)).dataSync());\n    };\n    FederatedDynamicModel.prototype.getVars = function () {\n        return this.vars;\n    };\n    FederatedDynamicModel.prototype.setVars = function (vals) {\n        this.vars.forEach(function (v, i) {\n            v.assign(vals[i]);\n        });\n    };\n    return FederatedDynamicModel;\n}());\nexports.FederatedDynamicModel = FederatedDynamicModel;\n\n}).call(this,require(\"buffer\").Buffer)\n},{\"@tensorflow/tfjs\":232,\"buffer\":241}],3:[function(require,module,exports){\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(\"./models\"));\n__export(require(\"./client\"));\n__export(require(\"./common\"));\n\n},{\"./client\":1,\"./common\":2,\"./models\":4}],4:[function(require,module,exports){\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 = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, 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 common_1 = require(\"./common\");\nvar FederatedClientTfModel = (function (_super) {\n    __extends(FederatedClientTfModel, _super);\n    function FederatedClientTfModel() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.isFederatedClientModel = true;\n        return _this;\n    }\n    FederatedClientTfModel.prototype.setup = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4, this.fetchInitial()];\n                    case 1:\n                        _a.sent();\n                        return [2];\n                }\n            });\n        });\n    };\n    return FederatedClientTfModel;\n}(common_1.FederatedTfModel));\nexports.FederatedClientTfModel = FederatedClientTfModel;\nfunction isFederatedClientModel(model) {\n    return model && model.isFederatedClientModel;\n}\nexports.isFederatedClientModel = isFederatedClientModel;\n\n},{\"./common\":2}],5:[function(require,module,exports){\n\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n    var params  = new Array(arguments.length - 1),\r\n        offset  = 0,\r\n        index   = 2,\r\n        pending = true;\r\n    while (index < arguments.length)\r\n        params[offset++] = arguments[index++];\r\n    return new Promise(function executor(resolve, reject) {\r\n        params[offset] = function callback(err/*, varargs */) {\r\n            if (pending) {\r\n                pending = false;\r\n                if (err)\r\n                    reject(err);\r\n                else {\r\n                    var params = new Array(arguments.length - 1),\r\n                        offset = 0;\r\n                    while (offset < params.length)\r\n                        params[offset++] = arguments[offset];\r\n                    resolve.apply(null, params);\r\n                }\r\n            }\r\n        };\r\n        try {\r\n            fn.apply(ctx || null, params);\r\n        } catch (err) {\r\n            if (pending) {\r\n                pending = false;\r\n                reject(err);\r\n            }\r\n        }\r\n    });\r\n}\r\n\n},{}],6:[function(require,module,exports){\n\"use strict\";\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n    var p = string.length;\r\n    if (!p)\r\n        return 0;\r\n    var n = 0;\r\n    while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n        ++n;\r\n    return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n    s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n    var parts = null,\r\n        chunk = [];\r\n    var i = 0, // output index\r\n        j = 0, // goto index\r\n        t;     // temporary\r\n    while (start < end) {\r\n        var b = buffer[start++];\r\n        switch (j) {\r\n            case 0:\r\n                chunk[i++] = b64[b >> 2];\r\n                t = (b & 3) << 4;\r\n                j = 1;\r\n                break;\r\n            case 1:\r\n                chunk[i++] = b64[t | b >> 4];\r\n                t = (b & 15) << 2;\r\n                j = 2;\r\n                break;\r\n            case 2:\r\n                chunk[i++] = b64[t | b >> 6];\r\n                chunk[i++] = b64[b & 63];\r\n                j = 0;\r\n                break;\r\n        }\r\n        if (i > 8191) {\r\n            (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n            i = 0;\r\n        }\r\n    }\r\n    if (j) {\r\n        chunk[i++] = b64[t];\r\n        chunk[i++] = 61;\r\n        if (j === 1)\r\n            chunk[i++] = 61;\r\n    }\r\n    if (parts) {\r\n        if (i)\r\n            parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n        return parts.join(\"\");\r\n    }\r\n    return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n    var start = offset;\r\n    var j = 0, // goto index\r\n        t;     // temporary\r\n    for (var i = 0; i < string.length;) {\r\n        var c = string.charCodeAt(i++);\r\n        if (c === 61 && j > 1)\r\n            break;\r\n        if ((c = s64[c]) === undefined)\r\n            throw Error(invalidEncoding);\r\n        switch (j) {\r\n            case 0:\r\n                t = c;\r\n                j = 1;\r\n                break;\r\n            case 1:\r\n                buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n                t = c;\r\n                j = 2;\r\n                break;\r\n            case 2:\r\n                buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n                t = c;\r\n                j = 3;\r\n                break;\r\n            case 3:\r\n                buffer[offset++] = (t & 3) << 6 | c;\r\n                j = 0;\r\n                break;\r\n        }\r\n    }\r\n    if (j === 1)\r\n        throw Error(invalidEncoding);\r\n    return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n    return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n\n},{}],7:[function(require,module,exports){\n\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n    /**\r\n     * Registered listeners.\r\n     * @type {Object.<string,*>}\r\n     * @private\r\n     */\r\n    this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n    (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n        fn  : fn,\r\n        ctx : ctx || this\r\n    });\r\n    return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n    if (evt === undefined)\r\n        this._listeners = {};\r\n    else {\r\n        if (fn === undefined)\r\n            this._listeners[evt] = [];\r\n        else {\r\n            var listeners = this._listeners[evt];\r\n            for (var i = 0; i < listeners.length;)\r\n                if (listeners[i].fn === fn)\r\n                    listeners.splice(i, 1);\r\n                else\r\n                    ++i;\r\n        }\r\n    }\r\n    return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n    var listeners = this._listeners[evt];\r\n    if (listeners) {\r\n        var args = [],\r\n            i = 1;\r\n        for (; i < arguments.length;)\r\n            args.push(arguments[i++]);\r\n        for (i = 0; i < listeners.length;)\r\n            listeners[i].fn.apply(listeners[i++].ctx, args);\r\n    }\r\n    return this;\r\n};\r\n\n},{}],8:[function(require,module,exports){\n\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n    // float: typed array\r\n    if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n        var f32 = new Float32Array([ -0 ]),\r\n            f8b = new Uint8Array(f32.buffer),\r\n            le  = f8b[3] === 128;\r\n\r\n        function writeFloat_f32_cpy(val, buf, pos) {\r\n            f32[0] = val;\r\n            buf[pos    ] = f8b[0];\r\n            buf[pos + 1] = f8b[1];\r\n            buf[pos + 2] = f8b[2];\r\n            buf[pos + 3] = f8b[3];\r\n        }\r\n\r\n        function writeFloat_f32_rev(val, buf, pos) {\r\n            f32[0] = val;\r\n            buf[pos    ] = f8b[3];\r\n            buf[pos + 1] = f8b[2];\r\n            buf[pos + 2] = f8b[1];\r\n            buf[pos + 3] = f8b[0];\r\n        }\r\n\r\n        /* istanbul ignore next */\r\n        exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n        /* istanbul ignore next */\r\n        exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n        function readFloat_f32_cpy(buf, pos) {\r\n            f8b[0] = buf[pos    ];\r\n            f8b[1] = buf[pos + 1];\r\n            f8b[2] = buf[pos + 2];\r\n            f8b[3] = buf[pos + 3];\r\n            return f32[0];\r\n        }\r\n\r\n        function readFloat_f32_rev(buf, pos) {\r\n            f8b[3] = buf[pos    ];\r\n            f8b[2] = buf[pos + 1];\r\n            f8b[1] = buf[pos + 2];\r\n            f8b[0] = buf[pos + 3];\r\n            return f32[0];\r\n        }\r\n\r\n        /* istanbul ignore next */\r\n        exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n        /* istanbul ignore next */\r\n        exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n    // float: ieee754\r\n    })(); else (function() {\r\n\r\n        function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n            var sign = val < 0 ? 1 : 0;\r\n            if (sign)\r\n                val = -val;\r\n            if (val === 0)\r\n                writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n            else if (isNaN(val))\r\n                writeUint(2143289344, buf, pos);\r\n            else if (val > 3.4028234663852886e+38) // +-Infinity\r\n                writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n            else if (val < 1.1754943508222875e-38) // denormal\r\n                writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n            else {\r\n                var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n                    mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n                writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n            }\r\n        }\r\n\r\n        exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n        exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n        function readFloat_ieee754(readUint, buf, pos) {\r\n            var uint = readUint(buf, pos),\r\n                sign = (uint >> 31) * 2 + 1,\r\n                exponent = uint >>> 23 & 255,\r\n                mantissa = uint & 8388607;\r\n            return exponent === 255\r\n                ? mantissa\r\n                ? NaN\r\n                : sign * Infinity\r\n                : exponent === 0 // denormal\r\n                ? sign * 1.401298464324817e-45 * mantissa\r\n                : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n        }\r\n\r\n        exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n        exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n    })();\r\n\r\n    // double: typed array\r\n    if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n        var f64 = new Float64Array([-0]),\r\n            f8b = new Uint8Array(f64.buffer),\r\n            le  = f8b[7] === 128;\r\n\r\n        function writeDouble_f64_cpy(val, buf, pos) {\r\n            f64[0] = val;\r\n            buf[pos    ] = f8b[0];\r\n            buf[pos + 1] = f8b[1];\r\n            buf[pos + 2] = f8b[2];\r\n            buf[pos + 3] = f8b[3];\r\n            buf[pos + 4] = f8b[4];\r\n            buf[pos + 5] = f8b[5];\r\n            buf[pos + 6] = f8b[6];\r\n            buf[pos + 7] = f8b[7];\r\n        }\r\n\r\n        function writeDouble_f64_rev(val, buf, pos) {\r\n            f64[0] = val;\r\n            buf[pos    ] = f8b[7];\r\n            buf[pos + 1] = f8b[6];\r\n            buf[pos + 2] = f8b[5];\r\n            buf[pos + 3] = f8b[4];\r\n            buf[pos + 4] = f8b[3];\r\n            buf[pos + 5] = f8b[2];\r\n            buf[pos + 6] = f8b[1];\r\n            buf[pos + 7] = f8b[0];\r\n        }\r\n\r\n        /* istanbul ignore next */\r\n        exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n        /* istanbul ignore next */\r\n        exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n        function readDouble_f64_cpy(buf, pos) {\r\n            f8b[0] = buf[pos    ];\r\n            f8b[1] = buf[pos + 1];\r\n            f8b[2] = buf[pos + 2];\r\n            f8b[3] = buf[pos + 3];\r\n            f8b[4] = buf[pos + 4];\r\n            f8b[5] = buf[pos + 5];\r\n            f8b[6] = buf[pos + 6];\r\n            f8b[7] = buf[pos + 7];\r\n            return f64[0];\r\n        }\r\n\r\n        function readDouble_f64_rev(buf, pos) {\r\n            f8b[7] = buf[pos    ];\r\n            f8b[6] = buf[pos + 1];\r\n            f8b[5] = buf[pos + 2];\r\n            f8b[4] = buf[pos + 3];\r\n            f8b[3] = buf[pos + 4];\r\n            f8b[2] = buf[pos + 5];\r\n            f8b[1] = buf[pos + 6];\r\n            f8b[0] = buf[pos + 7];\r\n            return f64[0];\r\n        }\r\n\r\n        /* istanbul ignore next */\r\n        exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n        /* istanbul ignore next */\r\n        exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n    // double: ieee754\r\n    })(); else (function() {\r\n\r\n        function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n            var sign = val < 0 ? 1 : 0;\r\n            if (sign)\r\n                val = -val;\r\n            if (val === 0) {\r\n                writeUint(0, buf, pos + off0);\r\n                writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n            } else if (isNaN(val)) {\r\n                writeUint(0, buf, pos + off0);\r\n                writeUint(2146959360, buf, pos + off1);\r\n            } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n                writeUint(0, buf, pos + off0);\r\n                writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n            } else {\r\n                var mantissa;\r\n                if (val < 2.2250738585072014e-308) { // denormal\r\n                    mantissa = val / 5e-324;\r\n                    writeUint(mantissa >>> 0, buf, pos + off0);\r\n                    writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n                } else {\r\n                    var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n                    if (exponent === 1024)\r\n                        exponent = 1023;\r\n                    mantissa = val * Math.pow(2, -exponent);\r\n                    writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n                    writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n                }\r\n            }\r\n        }\r\n\r\n        exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n        exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n        function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n            var lo = readUint(buf, pos + off0),\r\n                hi = readUint(buf, pos + off1);\r\n            var sign = (hi >> 31) * 2 + 1,\r\n                exponent = hi >>> 20 & 2047,\r\n                mantissa = 4294967296 * (hi & 1048575) + lo;\r\n            return exponent === 2047\r\n                ? mantissa\r\n                ? NaN\r\n                : sign * Infinity\r\n                : exponent === 0 // denormal\r\n                ? sign * 5e-324 * mantissa\r\n                : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n        }\r\n\r\n        exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n        exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n    })();\r\n\r\n    return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n    buf[pos    ] =  val        & 255;\r\n    buf[pos + 1] =  val >>> 8  & 255;\r\n    buf[pos + 2] =  val >>> 16 & 255;\r\n    buf[pos + 3] =  val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n    buf[pos    ] =  val >>> 24;\r\n    buf[pos + 1] =  val >>> 16 & 255;\r\n    buf[pos + 2] =  val >>> 8  & 255;\r\n    buf[pos + 3] =  val        & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n    return (buf[pos    ]\r\n          | buf[pos + 1] << 8\r\n          | buf[pos + 2] << 16\r\n          | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n    return (buf[pos    ] << 24\r\n          | buf[pos + 1] << 16\r\n          | buf[pos + 2] << 8\r\n          | buf[pos + 3]) >>> 0;\r\n}\r\n\n},{}],9:[function(require,module,exports){\n\"use strict\";\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n    try {\r\n        var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n        if (mod && (mod.length || Object.keys(mod).length))\r\n            return mod;\r\n    } catch (e) {} // eslint-disable-line no-empty\r\n    return null;\r\n}\r\n\n},{}],10:[function(require,module,exports){\n\"use strict\";\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n    var SIZE   = size || 8192;\r\n    var MAX    = SIZE >>> 1;\r\n    var slab   = null;\r\n    var offset = SIZE;\r\n    return function pool_alloc(size) {\r\n        if (size < 1 || size > MAX)\r\n            return alloc(size);\r\n        if (offset + size > SIZE) {\r\n            slab = alloc(SIZE);\r\n            offset = 0;\r\n        }\r\n        var buf = slice.call(slab, offset, offset += size);\r\n        if (offset & 7) // align to 32 bit\r\n            offset = (offset | 7) + 1;\r\n        return buf;\r\n    };\r\n}\r\n\n},{}],11:[function(require,module,exports){\n\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n    var len = 0,\r\n        c = 0;\r\n    for (var i = 0; i < string.length; ++i) {\r\n        c = string.charCodeAt(i);\r\n        if (c < 128)\r\n            len += 1;\r\n        else if (c < 2048)\r\n            len += 2;\r\n        else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n            ++i;\r\n            len += 4;\r\n        } else\r\n            len += 3;\r\n    }\r\n    return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n    var len = end - start;\r\n    if (len < 1)\r\n        return \"\";\r\n    var parts = null,\r\n        chunk = [],\r\n        i = 0, // char offset\r\n        t;     // temporary\r\n    while (start < end) {\r\n        t = buffer[start++];\r\n        if (t < 128)\r\n            chunk[i++] = t;\r\n        else if (t > 191 && t < 224)\r\n            chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n        else if (t > 239 && t < 365) {\r\n            t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n            chunk[i++] = 0xD800 + (t >> 10);\r\n            chunk[i++] = 0xDC00 + (t & 1023);\r\n        } else\r\n            chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n        if (i > 8191) {\r\n            (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n            i = 0;\r\n        }\r\n    }\r\n    if (parts) {\r\n        if (i)\r\n            parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n        return parts.join(\"\");\r\n    }\r\n    return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n    var start = offset,\r\n        c1, // character 1\r\n        c2; // character 2\r\n    for (var i = 0; i < string.length; ++i) {\r\n        c1 = string.charCodeAt(i);\r\n        if (c1 < 128) {\r\n            buffer[offset++] = c1;\r\n        } else if (c1 < 2048) {\r\n            buffer[offset++] = c1 >> 6       | 192;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n            c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n            ++i;\r\n            buffer[offset++] = c1 >> 18      | 240;\r\n            buffer[offset++] = c1 >> 12 & 63 | 128;\r\n            buffer[offset++] = c1 >> 6  & 63 | 128;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        } else {\r\n            buffer[offset++] = c1 >> 12      | 224;\r\n            buffer[offset++] = c1 >> 6  & 63 | 128;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        }\r\n    }\r\n    return offset - start;\r\n};\r\n\n},{}],12:[function(require,module,exports){\n/*eslint-disable block-scoped-var, no-redeclare, no-control-regex, no-prototype-builtins*/\n\"use strict\";\n\nvar $protobuf = require(\"protobufjs/minimal\");\n\nvar $Reader = $protobuf.Reader, $util = $protobuf.util;\n\nvar $root = $protobuf.roots[\"default\"] || ($protobuf.roots[\"default\"] = {});\n\n$root.tensorflow = (function() {\n\n    var tensorflow = {};\n\n    tensorflow.Any = (function() {\n\n        function Any(p) {\n            if (p)\n                for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                    if (p[ks[i]] != null)\n                        this[ks[i]] = p[ks[i]];\n        }\n\n        Any.prototype.typeUrl = \"\";\n        Any.prototype.value = $util.newBuffer([]);\n\n        Any.decode = function decode(r, l) {\n            if (!(r instanceof $Reader))\n                r = $Reader.create(r);\n            var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.Any();\n            while (r.pos < c) {\n                var t = r.uint32();\n                switch (t >>> 3) {\n                case 1:\n                    m.typeUrl = r.string();\n                    break;\n                case 2:\n                    m.value = r.bytes();\n                    break;\n                default:\n                    r.skipType(t & 7);\n                    break;\n                }\n            }\n            return m;\n        };\n\n        return Any;\n    })();\n\n    tensorflow.DataType = (function() {\n        var valuesById = {}, values = Object.create(valuesById);\n        values[valuesById[0] = \"DT_INVALID\"] = 0;\n        values[valuesById[1] = \"DT_FLOAT\"] = 1;\n        values[valuesById[2] = \"DT_DOUBLE\"] = 2;\n        values[valuesById[3] = \"DT_INT32\"] = 3;\n        values[valuesById[4] = \"DT_UINT8\"] = 4;\n        values[valuesById[5] = \"DT_INT16\"] = 5;\n        values[valuesById[6] = \"DT_INT8\"] = 6;\n        values[valuesById[7] = \"DT_STRING\"] = 7;\n        values[valuesById[8] = \"DT_COMPLEX64\"] = 8;\n        values[valuesById[9] = \"DT_INT64\"] = 9;\n        values[valuesById[10] = \"DT_BOOL\"] = 10;\n        values[valuesById[11] = \"DT_QINT8\"] = 11;\n        values[valuesById[12] = \"DT_QUINT8\"] = 12;\n        values[valuesById[13] = \"DT_QINT32\"] = 13;\n        values[valuesById[14] = \"DT_BFLOAT16\"] = 14;\n        values[valuesById[101] = \"DT_FLOAT_REF\"] = 101;\n        values[valuesById[102] = \"DT_DOUBLE_REF\"] = 102;\n        values[valuesById[103] = \"DT_INT32_REF\"] = 103;\n        values[valuesById[104] = \"DT_UINT8_REF\"] = 104;\n        values[valuesById[105] = \"DT_INT16_REF\"] = 105;\n        values[valuesById[106] = \"DT_INT8_REF\"] = 106;\n        values[valuesById[107] = \"DT_STRING_REF\"] = 107;\n        values[valuesById[108] = \"DT_COMPLEX64_REF\"] = 108;\n        values[valuesById[109] = \"DT_INT64_REF\"] = 109;\n        values[valuesById[110] = \"DT_BOOL_REF\"] = 110;\n        values[valuesById[111] = \"DT_QINT8_REF\"] = 111;\n        values[valuesById[112] = \"DT_QUINT8_REF\"] = 112;\n        values[valuesById[113] = \"DT_QINT32_REF\"] = 113;\n        values[valuesById[114] = \"DT_BFLOAT16_REF\"] = 114;\n        return values;\n    })();\n\n    tensorflow.TensorShape = (function() {\n\n        function TensorShape(p) {\n            this.dim = [];\n            if (p)\n                for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                    if (p[ks[i]] != null)\n                        this[ks[i]] = p[ks[i]];\n        }\n\n        TensorShape.prototype.dim = $util.emptyArray;\n        TensorShape.prototype.unknownRank = false;\n\n        TensorShape.decode = function decode(r, l) {\n            if (!(r instanceof $Reader))\n                r = $Reader.create(r);\n            var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.TensorShape();\n            while (r.pos < c) {\n                var t = r.uint32();\n                switch (t >>> 3) {\n                case 2:\n                    if (!(m.dim && m.dim.length))\n                        m.dim = [];\n                    m.dim.push($root.tensorflow.TensorShape.Dim.decode(r, r.uint32()));\n                    break;\n                case 3:\n                    m.unknownRank = r.bool();\n                    break;\n                default:\n                    r.skipType(t & 7);\n                    break;\n                }\n            }\n            return m;\n        };\n\n        TensorShape.Dim = (function() {\n\n            function Dim(p) {\n                if (p)\n                    for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                        if (p[ks[i]] != null)\n                            this[ks[i]] = p[ks[i]];\n            }\n\n            Dim.prototype.size = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n            Dim.prototype.name = \"\";\n\n            Dim.decode = function decode(r, l) {\n                if (!(r instanceof $Reader))\n                    r = $Reader.create(r);\n                var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.TensorShape.Dim();\n                while (r.pos < c) {\n                    var t = r.uint32();\n                    switch (t >>> 3) {\n                    case 1:\n                        m.size = r.int64();\n                        break;\n                    case 2:\n                        m.name = r.string();\n                        break;\n                    default:\n                        r.skipType(t & 7);\n                        break;\n                    }\n                }\n                return m;\n            };\n\n            return Dim;\n        })();\n\n        return TensorShape;\n    })();\n\n    tensorflow.Tensor = (function() {\n\n        function Tensor(p) {\n            this.floatVal = [];\n            this.doubleVal = [];\n            this.intVal = [];\n            this.stringVal = [];\n            this.scomplexVal = [];\n            this.int64Val = [];\n            this.boolVal = [];\n            this.uint32Val = [];\n            this.uint64Val = [];\n            if (p)\n                for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                    if (p[ks[i]] != null)\n                        this[ks[i]] = p[ks[i]];\n        }\n\n        Tensor.prototype.dtype = 0;\n        Tensor.prototype.tensorShape = null;\n        Tensor.prototype.versionNumber = 0;\n        Tensor.prototype.tensorContent = $util.newBuffer([]);\n        Tensor.prototype.floatVal = $util.emptyArray;\n        Tensor.prototype.doubleVal = $util.emptyArray;\n        Tensor.prototype.intVal = $util.emptyArray;\n        Tensor.prototype.stringVal = $util.emptyArray;\n        Tensor.prototype.scomplexVal = $util.emptyArray;\n        Tensor.prototype.int64Val = $util.emptyArray;\n        Tensor.prototype.boolVal = $util.emptyArray;\n        Tensor.prototype.uint32Val = $util.emptyArray;\n        Tensor.prototype.uint64Val = $util.emptyArray;\n\n        Tensor.decode = function decode(r, l) {\n            if (!(r instanceof $Reader))\n                r = $Reader.create(r);\n            var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.Tensor();\n            while (r.pos < c) {\n                var t = r.uint32();\n                switch (t >>> 3) {\n                case 1:\n                    m.dtype = r.int32();\n                    break;\n                case 2:\n                    m.tensorShape = $root.tensorflow.TensorShape.decode(r, r.uint32());\n                    break;\n                case 3:\n                    m.versionNumber = r.int32();\n                    break;\n                case 4:\n                    m.tensorContent = r.bytes();\n                    break;\n                case 5:\n                    if (!(m.floatVal && m.floatVal.length))\n                        m.floatVal = [];\n                    if ((t & 7) === 2) {\n                        var c2 = r.uint32() + r.pos;\n                        while (r.pos < c2)\n                            m.floatVal.push(r.float());\n                    } else\n                        m.floatVal.push(r.float());\n                    break;\n                case 6:\n                    if (!(m.doubleVal && m.doubleVal.length))\n                        m.doubleVal = [];\n                    if ((t & 7) === 2) {\n                        var c2 = r.uint32() + r.pos;\n                        while (r.pos < c2)\n                            m.doubleVal.push(r.double());\n                    } else\n                        m.doubleVal.push(r.double());\n                    break;\n                case 7:\n                    if (!(m.intVal && m.intVal.length))\n                        m.intVal = [];\n                    if ((t & 7) === 2) {\n                        var c2 = r.uint32() + r.pos;\n                        while (r.pos < c2)\n                            m.intVal.push(r.int32());\n                    } else\n                        m.intVal.push(r.int32());\n                    break;\n                case 8:\n                    if (!(m.stringVal && m.stringVal.length))\n                        m.stringVal = [];\n                    m.stringVal.push(r.bytes());\n                    break;\n                case 9:\n                    if (!(m.scomplexVal && m.scomplexVal.length))\n                        m.scomplexVal = [];\n                    if ((t & 7) === 2) {\n                        var c2 = r.uint32() + r.pos;\n                        while (r.pos < c2)\n                            m.scomplexVal.push(r.float());\n                    } else\n                        m.scomplexVal.push(r.float());\n                    break;\n                case 10:\n                    if (!(m.int64Val && m.int64Val.length))\n                        m.int64Val = [];\n                    if ((t & 7) === 2) {\n                        var c2 = r.uint32() + r.pos;\n                        while (r.pos < c2)\n                            m.int64Val.push(r.int64());\n                    } else\n                        m.int64Val.push(r.int64());\n                    break;\n                case 11:\n                    if (!(m.boolVal && m.boolVal.length))\n                        m.boolVal = [];\n                    if ((t & 7) === 2) {\n                        var c2 = r.uint32() + r.pos;\n                        while (r.pos < c2)\n                            m.boolVal.push(r.bool());\n                    } else\n                        m.boolVal.push(r.bool());\n                    break;\n                case 16:\n                    if (!(m.uint32Val && m.uint32Val.length))\n                        m.uint32Val = [];\n                    if ((t & 7) === 2) {\n                        var c2 = r.uint32() + r.pos;\n                        while (r.pos < c2)\n                            m.uint32Val.push(r.uint32());\n                    } else\n                        m.uint32Val.push(r.uint32());\n                    break;\n                case 17:\n                    if (!(m.uint64Val && m.uint64Val.length))\n                        m.uint64Val = [];\n                    if ((t & 7) === 2) {\n                        var c2 = r.uint32() + r.pos;\n                        while (r.pos < c2)\n                            m.uint64Val.push(r.uint64());\n                    } else\n                        m.uint64Val.push(r.uint64());\n                    break;\n                default:\n                    r.skipType(t & 7);\n                    break;\n                }\n            }\n            return m;\n        };\n\n        return Tensor;\n    })();\n\n    tensorflow.AttrValue = (function() {\n\n        function AttrValue(p) {\n            if (p)\n                for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                    if (p[ks[i]] != null)\n                        this[ks[i]] = p[ks[i]];\n        }\n\n        AttrValue.prototype.list = null;\n        AttrValue.prototype.s = $util.newBuffer([]);\n        AttrValue.prototype.i = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n        AttrValue.prototype.f = 0;\n        AttrValue.prototype.b = false;\n        AttrValue.prototype.type = 0;\n        AttrValue.prototype.shape = null;\n        AttrValue.prototype.tensor = null;\n        AttrValue.prototype.placeholder = \"\";\n        AttrValue.prototype.func = null;\n\n        var $oneOfFields;\n\n        Object.defineProperty(AttrValue.prototype, \"value\", {\n            get: $util.oneOfGetter($oneOfFields = [\"list\", \"s\", \"i\", \"f\", \"b\", \"type\", \"shape\", \"tensor\", \"placeholder\", \"func\"]),\n            set: $util.oneOfSetter($oneOfFields)\n        });\n\n        AttrValue.decode = function decode(r, l) {\n            if (!(r instanceof $Reader))\n                r = $Reader.create(r);\n            var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.AttrValue();\n            while (r.pos < c) {\n                var t = r.uint32();\n                switch (t >>> 3) {\n                case 1:\n                    m.list = $root.tensorflow.AttrValue.ListValue.decode(r, r.uint32());\n                    break;\n                case 2:\n                    m.s = r.bytes();\n                    break;\n                case 3:\n                    m.i = r.int64();\n                    break;\n                case 4:\n                    m.f = r.float();\n                    break;\n                case 5:\n                    m.b = r.bool();\n                    break;\n                case 6:\n                    m.type = r.int32();\n                    break;\n                case 7:\n                    m.shape = $root.tensorflow.TensorShape.decode(r, r.uint32());\n                    break;\n                case 8:\n                    m.tensor = $root.tensorflow.Tensor.decode(r, r.uint32());\n                    break;\n                case 9:\n                    m.placeholder = r.string();\n                    break;\n                case 10:\n                    m.func = $root.tensorflow.NameAttrList.decode(r, r.uint32());\n                    break;\n                default:\n                    r.skipType(t & 7);\n                    break;\n                }\n            }\n            return m;\n        };\n\n        AttrValue.ListValue = (function() {\n\n            function ListValue(p) {\n                this.s = [];\n                this.i = [];\n                this.f = [];\n                this.b = [];\n                this.type = [];\n                this.shape = [];\n                this.tensor = [];\n                this.func = [];\n                if (p)\n                    for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                        if (p[ks[i]] != null)\n                            this[ks[i]] = p[ks[i]];\n            }\n\n            ListValue.prototype.s = $util.emptyArray;\n            ListValue.prototype.i = $util.emptyArray;\n            ListValue.prototype.f = $util.emptyArray;\n            ListValue.prototype.b = $util.emptyArray;\n            ListValue.prototype.type = $util.emptyArray;\n            ListValue.prototype.shape = $util.emptyArray;\n            ListValue.prototype.tensor = $util.emptyArray;\n            ListValue.prototype.func = $util.emptyArray;\n\n            ListValue.decode = function decode(r, l) {\n                if (!(r instanceof $Reader))\n                    r = $Reader.create(r);\n                var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.AttrValue.ListValue();\n                while (r.pos < c) {\n                    var t = r.uint32();\n                    switch (t >>> 3) {\n                    case 2:\n                        if (!(m.s && m.s.length))\n                            m.s = [];\n                        m.s.push(r.bytes());\n                        break;\n                    case 3:\n                        if (!(m.i && m.i.length))\n                            m.i = [];\n                        if ((t & 7) === 2) {\n                            var c2 = r.uint32() + r.pos;\n                            while (r.pos < c2)\n                                m.i.push(r.int64());\n                        } else\n                            m.i.push(r.int64());\n                        break;\n                    case 4:\n                        if (!(m.f && m.f.length))\n                            m.f = [];\n                        if ((t & 7) === 2) {\n                            var c2 = r.uint32() + r.pos;\n                            while (r.pos < c2)\n                                m.f.push(r.float());\n                        } else\n                            m.f.push(r.float());\n                        break;\n                    case 5:\n                        if (!(m.b && m.b.length))\n                            m.b = [];\n                        if ((t & 7) === 2) {\n                            var c2 = r.uint32() + r.pos;\n                            while (r.pos < c2)\n                                m.b.push(r.bool());\n                        } else\n                            m.b.push(r.bool());\n                        break;\n                    case 6:\n                        if (!(m.type && m.type.length))\n                            m.type = [];\n                        if ((t & 7) === 2) {\n                            var c2 = r.uint32() + r.pos;\n                            while (r.pos < c2)\n                                m.type.push(r.int32());\n                        } else\n                            m.type.push(r.int32());\n                        break;\n                    case 7:\n                        if (!(m.shape && m.shape.length))\n                            m.shape = [];\n                        m.shape.push($root.tensorflow.TensorShape.decode(r, r.uint32()));\n                        break;\n                    case 8:\n                        if (!(m.tensor && m.tensor.length))\n                            m.tensor = [];\n                        m.tensor.push($root.tensorflow.Tensor.decode(r, r.uint32()));\n                        break;\n                    case 9:\n                        if (!(m.func && m.func.length))\n                            m.func = [];\n                        m.func.push($root.tensorflow.NameAttrList.decode(r, r.uint32()));\n                        break;\n                    default:\n                        r.skipType(t & 7);\n                        break;\n                    }\n                }\n                return m;\n            };\n\n            return ListValue;\n        })();\n\n        return AttrValue;\n    })();\n\n    tensorflow.NameAttrList = (function() {\n\n        function NameAttrList(p) {\n            this.attr = {};\n            if (p)\n                for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                    if (p[ks[i]] != null)\n                        this[ks[i]] = p[ks[i]];\n        }\n\n        NameAttrList.prototype.name = \"\";\n        NameAttrList.prototype.attr = $util.emptyObject;\n\n        NameAttrList.decode = function decode(r, l) {\n            if (!(r instanceof $Reader))\n                r = $Reader.create(r);\n            var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.NameAttrList(), k;\n            while (r.pos < c) {\n                var t = r.uint32();\n                switch (t >>> 3) {\n                case 1:\n                    m.name = r.string();\n                    break;\n                case 2:\n                    r.skip().pos++;\n                    if (m.attr === $util.emptyObject)\n                        m.attr = {};\n                    k = r.string();\n                    r.pos++;\n                    m.attr[k] = $root.tensorflow.AttrValue.decode(r, r.uint32());\n                    break;\n                default:\n                    r.skipType(t & 7);\n                    break;\n                }\n            }\n            return m;\n        };\n\n        return NameAttrList;\n    })();\n\n    tensorflow.NodeDef = (function() {\n\n        function NodeDef(p) {\n            this.input = [];\n            this.attr = {};\n            if (p)\n                for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                    if (p[ks[i]] != null)\n                        this[ks[i]] = p[ks[i]];\n        }\n\n        NodeDef.prototype.name = \"\";\n        NodeDef.prototype.op = \"\";\n        NodeDef.prototype.input = $util.emptyArray;\n        NodeDef.prototype.device = \"\";\n        NodeDef.prototype.attr = $util.emptyObject;\n\n        NodeDef.decode = function decode(r, l) {\n            if (!(r instanceof $Reader))\n                r = $Reader.create(r);\n            var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.NodeDef(), k;\n            while (r.pos < c) {\n                var t = r.uint32();\n                switch (t >>> 3) {\n                case 1:\n                    m.name = r.string();\n                    break;\n                case 2:\n                    m.op = r.string();\n                    break;\n                case 3:\n                    if (!(m.input && m.input.length))\n                        m.input = [];\n                    m.input.push(r.string());\n                    break;\n                case 4:\n                    m.device = r.string();\n                    break;\n                case 5:\n                    r.skip().pos++;\n                    if (m.attr === $util.emptyObject)\n                        m.attr = {};\n                    k = r.string();\n                    r.pos++;\n                    m.attr[k] = $root.tensorflow.AttrValue.decode(r, r.uint32());\n                    break;\n                default:\n                    r.skipType(t & 7);\n                    break;\n                }\n            }\n            return m;\n        };\n\n        return NodeDef;\n    })();\n\n    tensorflow.VersionDef = (function() {\n\n        function VersionDef(p) {\n            this.badConsumers = [];\n            if (p)\n                for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                    if (p[ks[i]] != null)\n                        this[ks[i]] = p[ks[i]];\n        }\n\n        VersionDef.prototype.producer = 0;\n        VersionDef.prototype.minConsumer = 0;\n        VersionDef.prototype.badConsumers = $util.emptyArray;\n\n        VersionDef.decode = function decode(r, l) {\n            if (!(r instanceof $Reader))\n                r = $Reader.create(r);\n            var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.VersionDef();\n            while (r.pos < c) {\n                var t = r.uint32();\n                switch (t >>> 3) {\n                case 1:\n                    m.producer = r.int32();\n                    break;\n                case 2:\n                    m.minConsumer = r.int32();\n                    break;\n                case 3:\n                    if (!(m.badConsumers && m.badConsumers.length))\n                        m.badConsumers = [];\n                    if ((t & 7) === 2) {\n                        var c2 = r.uint32() + r.pos;\n                        while (r.pos < c2)\n                            m.badConsumers.push(r.int32());\n                    } else\n                        m.badConsumers.push(r.int32());\n                    break;\n                default:\n                    r.skipType(t & 7);\n                    break;\n                }\n            }\n            return m;\n        };\n\n        return VersionDef;\n    })();\n\n    tensorflow.GraphDef = (function() {\n\n        function GraphDef(p) {\n            this.node = [];\n            if (p)\n                for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                    if (p[ks[i]] != null)\n                        this[ks[i]] = p[ks[i]];\n        }\n\n        GraphDef.prototype.node = $util.emptyArray;\n        GraphDef.prototype.versions = null;\n        GraphDef.prototype.library = null;\n\n        GraphDef.decode = function decode(r, l) {\n            if (!(r instanceof $Reader))\n                r = $Reader.create(r);\n            var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.GraphDef();\n            while (r.pos < c) {\n                var t = r.uint32();\n                switch (t >>> 3) {\n                case 1:\n                    if (!(m.node && m.node.length))\n                        m.node = [];\n                    m.node.push($root.tensorflow.NodeDef.decode(r, r.uint32()));\n                    break;\n                case 4:\n                    m.versions = $root.tensorflow.VersionDef.decode(r, r.uint32());\n                    break;\n                case 2:\n                    m.library = $root.tensorflow.FunctionDefLibrary.decode(r, r.uint32());\n                    break;\n                default:\n                    r.skipType(t & 7);\n                    break;\n                }\n            }\n            return m;\n        };\n\n        return GraphDef;\n    })();\n\n    tensorflow.CollectionDef = (function() {\n\n        function CollectionDef(p) {\n            if (p)\n                for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                    if (p[ks[i]] != null)\n                        this[ks[i]] = p[ks[i]];\n        }\n\n        CollectionDef.prototype.nodeList = null;\n        CollectionDef.prototype.bytesList = null;\n        CollectionDef.prototype.int64List = null;\n        CollectionDef.prototype.floatList = null;\n        CollectionDef.prototype.anyList = null;\n\n        var $oneOfFields;\n\n        Object.defineProperty(CollectionDef.prototype, \"kind\", {\n            get: $util.oneOfGetter($oneOfFields = [\"nodeList\", \"bytesList\", \"int64List\", \"floatList\", \"anyList\"]),\n            set: $util.oneOfSetter($oneOfFields)\n        });\n\n        CollectionDef.decode = function decode(r, l) {\n            if (!(r instanceof $Reader))\n                r = $Reader.create(r);\n            var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.CollectionDef();\n            while (r.pos < c) {\n                var t = r.uint32();\n                switch (t >>> 3) {\n                case 1:\n                    m.nodeList = $root.tensorflow.CollectionDef.NodeList.decode(r, r.uint32());\n                    break;\n                case 2:\n                    m.bytesList = $root.tensorflow.CollectionDef.BytesList.decode(r, r.uint32());\n                    break;\n                case 3:\n                    m.int64List = $root.tensorflow.CollectionDef.Int64List.decode(r, r.uint32());\n                    break;\n                case 4:\n                    m.floatList = $root.tensorflow.CollectionDef.FloatList.decode(r, r.uint32());\n                    break;\n                case 5:\n                    m.anyList = $root.tensorflow.CollectionDef.AnyList.decode(r, r.uint32());\n                    break;\n                default:\n                    r.skipType(t & 7);\n                    break;\n                }\n            }\n            return m;\n        };\n\n        CollectionDef.NodeList = (function() {\n\n            function NodeList(p) {\n                this.value = [];\n                if (p)\n                    for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                        if (p[ks[i]] != null)\n                            this[ks[i]] = p[ks[i]];\n            }\n\n            NodeList.prototype.value = $util.emptyArray;\n\n            NodeList.decode = function decode(r, l) {\n                if (!(r instanceof $Reader))\n                    r = $Reader.create(r);\n                var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.CollectionDef.NodeList();\n                while (r.pos < c) {\n                    var t = r.uint32();\n                    switch (t >>> 3) {\n                    case 1:\n                        if (!(m.value && m.value.length))\n                            m.value = [];\n                        m.value.push(r.string());\n                        break;\n                    default:\n                        r.skipType(t & 7);\n                        break;\n                    }\n                }\n                return m;\n            };\n\n            return NodeList;\n        })();\n\n        CollectionDef.BytesList = (function() {\n\n            function BytesList(p) {\n                this.value = [];\n                if (p)\n                    for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                        if (p[ks[i]] != null)\n                            this[ks[i]] = p[ks[i]];\n            }\n\n            BytesList.prototype.value = $util.emptyArray;\n\n            BytesList.decode = function decode(r, l) {\n                if (!(r instanceof $Reader))\n                    r = $Reader.create(r);\n                var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.CollectionDef.BytesList();\n                while (r.pos < c) {\n                    var t = r.uint32();\n                    switch (t >>> 3) {\n                    case 1:\n                        if (!(m.value && m.value.length))\n                            m.value = [];\n                        m.value.push(r.bytes());\n                        break;\n                    default:\n                        r.skipType(t & 7);\n                        break;\n                    }\n                }\n                return m;\n            };\n\n            return BytesList;\n        })();\n\n        CollectionDef.Int64List = (function() {\n\n            function Int64List(p) {\n                this.value = [];\n                if (p)\n                    for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                        if (p[ks[i]] != null)\n                            this[ks[i]] = p[ks[i]];\n            }\n\n            Int64List.prototype.value = $util.emptyArray;\n\n            Int64List.decode = function decode(r, l) {\n                if (!(r instanceof $Reader))\n                    r = $Reader.create(r);\n                var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.CollectionDef.Int64List();\n                while (r.pos < c) {\n                    var t = r.uint32();\n                    switch (t >>> 3) {\n                    case 1:\n                        if (!(m.value && m.value.length))\n                            m.value = [];\n                        if ((t & 7) === 2) {\n                            var c2 = r.uint32() + r.pos;\n                            while (r.pos < c2)\n                                m.value.push(r.int64());\n                        } else\n                            m.value.push(r.int64());\n                        break;\n                    default:\n                        r.skipType(t & 7);\n                        break;\n                    }\n                }\n                return m;\n            };\n\n            return Int64List;\n        })();\n\n        CollectionDef.FloatList = (function() {\n\n            function FloatList(p) {\n                this.value = [];\n                if (p)\n                    for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                        if (p[ks[i]] != null)\n                            this[ks[i]] = p[ks[i]];\n            }\n\n            FloatList.prototype.value = $util.emptyArray;\n\n            FloatList.decode = function decode(r, l) {\n                if (!(r instanceof $Reader))\n                    r = $Reader.create(r);\n                var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.CollectionDef.FloatList();\n                while (r.pos < c) {\n                    var t = r.uint32();\n                    switch (t >>> 3) {\n                    case 1:\n                        if (!(m.value && m.value.length))\n                            m.value = [];\n                        if ((t & 7) === 2) {\n                            var c2 = r.uint32() + r.pos;\n                            while (r.pos < c2)\n                                m.value.push(r.float());\n                        } else\n                            m.value.push(r.float());\n                        break;\n                    default:\n                        r.skipType(t & 7);\n                        break;\n                    }\n                }\n                return m;\n            };\n\n            return FloatList;\n        })();\n\n        CollectionDef.AnyList = (function() {\n\n            function AnyList(p) {\n                this.value = [];\n                if (p)\n                    for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                        if (p[ks[i]] != null)\n                            this[ks[i]] = p[ks[i]];\n            }\n\n            AnyList.prototype.value = $util.emptyArray;\n\n            AnyList.decode = function decode(r, l) {\n                if (!(r instanceof $Reader))\n                    r = $Reader.create(r);\n                var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.CollectionDef.AnyList();\n                while (r.pos < c) {\n                    var t = r.uint32();\n                    switch (t >>> 3) {\n                    case 1:\n                        if (!(m.value && m.value.length))\n                            m.value = [];\n                        m.value.push($root.tensorflow.Any.decode(r, r.uint32()));\n                        break;\n                    default:\n                        r.skipType(t & 7);\n                        break;\n                    }\n                }\n                return m;\n            };\n\n            return AnyList;\n        })();\n\n        return CollectionDef;\n    })();\n\n    tensorflow.SaverDef = (function() {\n\n        function SaverDef(p) {\n            if (p)\n                for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                    if (p[ks[i]] != null)\n                        this[ks[i]] = p[ks[i]];\n        }\n\n        SaverDef.prototype.filenameTensorName = \"\";\n        SaverDef.prototype.saveTensorName = \"\";\n        SaverDef.prototype.restoreOpName = \"\";\n        SaverDef.prototype.maxToKeep = 0;\n        SaverDef.prototype.sharded = false;\n        SaverDef.prototype.keepCheckpointEveryNHours = 0;\n        SaverDef.prototype.version = 0;\n\n        SaverDef.decode = function decode(r, l) {\n            if (!(r instanceof $Reader))\n                r = $Reader.create(r);\n            var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.SaverDef();\n            while (r.pos < c) {\n                var t = r.uint32();\n                switch (t >>> 3) {\n                case 1:\n                    m.filenameTensorName = r.string();\n                    break;\n                case 2:\n                    m.saveTensorName = r.string();\n                    break;\n                case 3:\n                    m.restoreOpName = r.string();\n                    break;\n                case 4:\n                    m.maxToKeep = r.int32();\n                    break;\n                case 5:\n                    m.sharded = r.bool();\n                    break;\n                case 6:\n                    m.keepCheckpointEveryNHours = r.float();\n                    break;\n                case 7:\n                    m.version = r.int32();\n                    break;\n                default:\n                    r.skipType(t & 7);\n                    break;\n                }\n            }\n            return m;\n        };\n\n        SaverDef.CheckpointFormatVersion = (function() {\n            var valuesById = {}, values = Object.create(valuesById);\n            values[valuesById[0] = \"LEGACY\"] = 0;\n            values[valuesById[1] = \"V1\"] = 1;\n            values[valuesById[2] = \"V2\"] = 2;\n            return values;\n        })();\n\n        return SaverDef;\n    })();\n\n    tensorflow.TensorInfo = (function() {\n\n        function TensorInfo(p) {\n            if (p)\n                for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                    if (p[ks[i]] != null)\n                        this[ks[i]] = p[ks[i]];\n        }\n\n        TensorInfo.prototype.name = \"\";\n        TensorInfo.prototype.cooSparse = null;\n        TensorInfo.prototype.dtype = 0;\n        TensorInfo.prototype.tensorShape = null;\n\n        var $oneOfFields;\n\n        Object.defineProperty(TensorInfo.prototype, \"encoding\", {\n            get: $util.oneOfGetter($oneOfFields = [\"name\", \"cooSparse\"]),\n            set: $util.oneOfSetter($oneOfFields)\n        });\n\n        TensorInfo.decode = function decode(r, l) {\n            if (!(r instanceof $Reader))\n                r = $Reader.create(r);\n            var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.TensorInfo();\n            while (r.pos < c) {\n                var t = r.uint32();\n                switch (t >>> 3) {\n                case 1:\n                    m.name = r.string();\n                    break;\n                case 4:\n                    m.cooSparse = $root.tensorflow.TensorInfo.CooSparse.decode(r, r.uint32());\n                    break;\n                case 2:\n                    m.dtype = r.int32();\n                    break;\n                case 3:\n                    m.tensorShape = $root.tensorflow.TensorShape.decode(r, r.uint32());\n                    break;\n                default:\n                    r.skipType(t & 7);\n                    break;\n                }\n            }\n            return m;\n        };\n\n        TensorInfo.CooSparse = (function() {\n\n            function CooSparse(p) {\n                if (p)\n                    for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                        if (p[ks[i]] != null)\n                            this[ks[i]] = p[ks[i]];\n            }\n\n            CooSparse.prototype.valuesTensorName = \"\";\n            CooSparse.prototype.indicesTensorName = \"\";\n            CooSparse.prototype.denseShapeTensorName = \"\";\n\n            CooSparse.decode = function decode(r, l) {\n                if (!(r instanceof $Reader))\n                    r = $Reader.create(r);\n                var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.TensorInfo.CooSparse();\n                while (r.pos < c) {\n                    var t = r.uint32();\n                    switch (t >>> 3) {\n                    case 1:\n                        m.valuesTensorName = r.string();\n                        break;\n                    case 2:\n                        m.indicesTensorName = r.string();\n                        break;\n                    case 3:\n                        m.denseShapeTensorName = r.string();\n                        break;\n                    default:\n                        r.skipType(t & 7);\n                        break;\n                    }\n                }\n                return m;\n            };\n\n            return CooSparse;\n        })();\n\n        return TensorInfo;\n    })();\n\n    tensorflow.SignatureDef = (function() {\n\n        function SignatureDef(p) {\n            this.inputs = {};\n            this.outputs = {};\n            if (p)\n                for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                    if (p[ks[i]] != null)\n                        this[ks[i]] = p[ks[i]];\n        }\n\n        SignatureDef.prototype.inputs = $util.emptyObject;\n        SignatureDef.prototype.outputs = $util.emptyObject;\n        SignatureDef.prototype.methodName = \"\";\n\n        SignatureDef.decode = function decode(r, l) {\n            if (!(r instanceof $Reader))\n                r = $Reader.create(r);\n            var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.SignatureDef(), k;\n            while (r.pos < c) {\n                var t = r.uint32();\n                switch (t >>> 3) {\n                case 1:\n                    r.skip().pos++;\n                    if (m.inputs === $util.emptyObject)\n                        m.inputs = {};\n                    k = r.string();\n                    r.pos++;\n                    m.inputs[k] = $root.tensorflow.TensorInfo.decode(r, r.uint32());\n                    break;\n                case 2:\n                    r.skip().pos++;\n                    if (m.outputs === $util.emptyObject)\n                        m.outputs = {};\n                    k = r.string();\n                    r.pos++;\n                    m.outputs[k] = $root.tensorflow.TensorInfo.decode(r, r.uint32());\n                    break;\n                case 3:\n                    m.methodName = r.string();\n                    break;\n                default:\n                    r.skipType(t & 7);\n                    break;\n                }\n            }\n            return m;\n        };\n\n        return SignatureDef;\n    })();\n\n    tensorflow.AssetFileDef = (function() {\n\n        function AssetFileDef(p) {\n            if (p)\n                for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                    if (p[ks[i]] != null)\n                        this[ks[i]] = p[ks[i]];\n        }\n\n        AssetFileDef.prototype.tensorInfo = null;\n        AssetFileDef.prototype.filename = \"\";\n\n        AssetFileDef.decode = function decode(r, l) {\n            if (!(r instanceof $Reader))\n                r = $Reader.create(r);\n            var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.AssetFileDef();\n            while (r.pos < c) {\n                var t = r.uint32();\n                switch (t >>> 3) {\n                case 1:\n                    m.tensorInfo = $root.tensorflow.TensorInfo.decode(r, r.uint32());\n                    break;\n                case 2:\n                    m.filename = r.string();\n                    break;\n                default:\n                    r.skipType(t & 7);\n                    break;\n                }\n            }\n            return m;\n        };\n\n        return AssetFileDef;\n    })();\n\n    tensorflow.OpDef = (function() {\n\n        function OpDef(p) {\n            this.inputArg = [];\n            this.outputArg = [];\n            this.attr = [];\n            if (p)\n                for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                    if (p[ks[i]] != null)\n                        this[ks[i]] = p[ks[i]];\n        }\n\n        OpDef.prototype.name = \"\";\n        OpDef.prototype.inputArg = $util.emptyArray;\n        OpDef.prototype.outputArg = $util.emptyArray;\n        OpDef.prototype.attr = $util.emptyArray;\n        OpDef.prototype.deprecation = null;\n        OpDef.prototype.summary = \"\";\n        OpDef.prototype.description = \"\";\n        OpDef.prototype.isCommutative = false;\n        OpDef.prototype.isAggregate = false;\n        OpDef.prototype.isStateful = false;\n        OpDef.prototype.allowsUninitializedInput = false;\n\n        OpDef.decode = function decode(r, l) {\n            if (!(r instanceof $Reader))\n                r = $Reader.create(r);\n            var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.OpDef();\n            while (r.pos < c) {\n                var t = r.uint32();\n                switch (t >>> 3) {\n                case 1:\n                    m.name = r.string();\n                    break;\n                case 2:\n                    if (!(m.inputArg && m.inputArg.length))\n                        m.inputArg = [];\n                    m.inputArg.push($root.tensorflow.OpDef.ArgDef.decode(r, r.uint32()));\n                    break;\n                case 3:\n                    if (!(m.outputArg && m.outputArg.length))\n                        m.outputArg = [];\n                    m.outputArg.push($root.tensorflow.OpDef.ArgDef.decode(r, r.uint32()));\n                    break;\n                case 4:\n                    if (!(m.attr && m.attr.length))\n                        m.attr = [];\n                    m.attr.push($root.tensorflow.OpDef.AttrDef.decode(r, r.uint32()));\n                    break;\n                case 8:\n                    m.deprecation = $root.tensorflow.OpDef.OpDeprecation.decode(r, r.uint32());\n                    break;\n                case 5:\n                    m.summary = r.string();\n                    break;\n                case 6:\n                    m.description = r.string();\n                    break;\n                case 18:\n                    m.isCommutative = r.bool();\n                    break;\n                case 16:\n                    m.isAggregate = r.bool();\n                    break;\n                case 17:\n                    m.isStateful = r.bool();\n                    break;\n                case 19:\n                    m.allowsUninitializedInput = r.bool();\n                    break;\n                default:\n                    r.skipType(t & 7);\n                    break;\n                }\n            }\n            return m;\n        };\n\n        OpDef.ArgDef = (function() {\n\n            function ArgDef(p) {\n                if (p)\n                    for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                        if (p[ks[i]] != null)\n                            this[ks[i]] = p[ks[i]];\n            }\n\n            ArgDef.prototype.name = \"\";\n            ArgDef.prototype.description = \"\";\n            ArgDef.prototype.type = 0;\n            ArgDef.prototype.typeAttr = \"\";\n            ArgDef.prototype.numberAttr = \"\";\n            ArgDef.prototype.typeListAttr = \"\";\n            ArgDef.prototype.isRef = false;\n\n            ArgDef.decode = function decode(r, l) {\n                if (!(r instanceof $Reader))\n                    r = $Reader.create(r);\n                var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.OpDef.ArgDef();\n                while (r.pos < c) {\n                    var t = r.uint32();\n                    switch (t >>> 3) {\n                    case 1:\n                        m.name = r.string();\n                        break;\n                    case 2:\n                        m.description = r.string();\n                        break;\n                    case 3:\n                        m.type = r.int32();\n                        break;\n                    case 4:\n                        m.typeAttr = r.string();\n                        break;\n                    case 5:\n                        m.numberAttr = r.string();\n                        break;\n                    case 6:\n                        m.typeListAttr = r.string();\n                        break;\n                    case 16:\n                        m.isRef = r.bool();\n                        break;\n                    default:\n                        r.skipType(t & 7);\n                        break;\n                    }\n                }\n                return m;\n            };\n\n            return ArgDef;\n        })();\n\n        OpDef.AttrDef = (function() {\n\n            function AttrDef(p) {\n                if (p)\n                    for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                        if (p[ks[i]] != null)\n                            this[ks[i]] = p[ks[i]];\n            }\n\n            AttrDef.prototype.name = \"\";\n            AttrDef.prototype.type = \"\";\n            AttrDef.prototype.defaultValue = null;\n            AttrDef.prototype.description = \"\";\n            AttrDef.prototype.hasMinimum = false;\n            AttrDef.prototype.minimum = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n            AttrDef.prototype.allowedValues = null;\n\n            AttrDef.decode = function decode(r, l) {\n                if (!(r instanceof $Reader))\n                    r = $Reader.create(r);\n                var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.OpDef.AttrDef();\n                while (r.pos < c) {\n                    var t = r.uint32();\n                    switch (t >>> 3) {\n                    case 1:\n                        m.name = r.string();\n                        break;\n                    case 2:\n                        m.type = r.string();\n                        break;\n                    case 3:\n                        m.defaultValue = $root.tensorflow.AttrValue.decode(r, r.uint32());\n                        break;\n                    case 4:\n                        m.description = r.string();\n                        break;\n                    case 5:\n                        m.hasMinimum = r.bool();\n                        break;\n                    case 6:\n                        m.minimum = r.int64();\n                        break;\n                    case 7:\n                        m.allowedValues = $root.tensorflow.AttrValue.decode(r, r.uint32());\n                        break;\n                    default:\n                        r.skipType(t & 7);\n                        break;\n                    }\n                }\n                return m;\n            };\n\n            return AttrDef;\n        })();\n\n        OpDef.OpDeprecation = (function() {\n\n            function OpDeprecation(p) {\n                if (p)\n                    for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                        if (p[ks[i]] != null)\n                            this[ks[i]] = p[ks[i]];\n            }\n\n            OpDeprecation.prototype.version = 0;\n            OpDeprecation.prototype.explanation = \"\";\n\n            OpDeprecation.decode = function decode(r, l) {\n                if (!(r instanceof $Reader))\n                    r = $Reader.create(r);\n                var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.OpDef.OpDeprecation();\n                while (r.pos < c) {\n                    var t = r.uint32();\n                    switch (t >>> 3) {\n                    case 1:\n                        m.version = r.int32();\n                        break;\n                    case 2:\n                        m.explanation = r.string();\n                        break;\n                    default:\n                        r.skipType(t & 7);\n                        break;\n                    }\n                }\n                return m;\n            };\n\n            return OpDeprecation;\n        })();\n\n        return OpDef;\n    })();\n\n    tensorflow.OpList = (function() {\n\n        function OpList(p) {\n            this.op = [];\n            if (p)\n                for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                    if (p[ks[i]] != null)\n                        this[ks[i]] = p[ks[i]];\n        }\n\n        OpList.prototype.op = $util.emptyArray;\n\n        OpList.decode = function decode(r, l) {\n            if (!(r instanceof $Reader))\n                r = $Reader.create(r);\n            var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.OpList();\n            while (r.pos < c) {\n                var t = r.uint32();\n                switch (t >>> 3) {\n                case 1:\n                    if (!(m.op && m.op.length))\n                        m.op = [];\n                    m.op.push($root.tensorflow.OpDef.decode(r, r.uint32()));\n                    break;\n                default:\n                    r.skipType(t & 7);\n                    break;\n                }\n            }\n            return m;\n        };\n\n        return OpList;\n    })();\n\n    tensorflow.MetaGraphDef = (function() {\n\n        function MetaGraphDef(p) {\n            this.collectionDef = {};\n            this.signatureDef = {};\n            this.assetFileDef = [];\n            if (p)\n                for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                    if (p[ks[i]] != null)\n                        this[ks[i]] = p[ks[i]];\n        }\n\n        MetaGraphDef.prototype.metaInfoDef = null;\n        MetaGraphDef.prototype.graphDef = null;\n        MetaGraphDef.prototype.saverDef = null;\n        MetaGraphDef.prototype.collectionDef = $util.emptyObject;\n        MetaGraphDef.prototype.signatureDef = $util.emptyObject;\n        MetaGraphDef.prototype.assetFileDef = $util.emptyArray;\n\n        MetaGraphDef.decode = function decode(r, l) {\n            if (!(r instanceof $Reader))\n                r = $Reader.create(r);\n            var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.MetaGraphDef(), k;\n            while (r.pos < c) {\n                var t = r.uint32();\n                switch (t >>> 3) {\n                case 1:\n                    m.metaInfoDef = $root.tensorflow.MetaGraphDef.MetaInfoDef.decode(r, r.uint32());\n                    break;\n                case 2:\n                    m.graphDef = $root.tensorflow.GraphDef.decode(r, r.uint32());\n                    break;\n                case 3:\n                    m.saverDef = $root.tensorflow.SaverDef.decode(r, r.uint32());\n                    break;\n                case 4:\n                    r.skip().pos++;\n                    if (m.collectionDef === $util.emptyObject)\n                        m.collectionDef = {};\n                    k = r.string();\n                    r.pos++;\n                    m.collectionDef[k] = $root.tensorflow.CollectionDef.decode(r, r.uint32());\n                    break;\n                case 5:\n                    r.skip().pos++;\n                    if (m.signatureDef === $util.emptyObject)\n                        m.signatureDef = {};\n                    k = r.string();\n                    r.pos++;\n                    m.signatureDef[k] = $root.tensorflow.SignatureDef.decode(r, r.uint32());\n                    break;\n                case 6:\n                    if (!(m.assetFileDef && m.assetFileDef.length))\n                        m.assetFileDef = [];\n                    m.assetFileDef.push($root.tensorflow.AssetFileDef.decode(r, r.uint32()));\n                    break;\n                default:\n                    r.skipType(t & 7);\n                    break;\n                }\n            }\n            return m;\n        };\n\n        MetaGraphDef.MetaInfoDef = (function() {\n\n            function MetaInfoDef(p) {\n                this.tags = [];\n                if (p)\n                    for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                        if (p[ks[i]] != null)\n                            this[ks[i]] = p[ks[i]];\n            }\n\n            MetaInfoDef.prototype.metaGraphVersion = \"\";\n            MetaInfoDef.prototype.strippedOpList = null;\n            MetaInfoDef.prototype.anyInfo = null;\n            MetaInfoDef.prototype.tags = $util.emptyArray;\n            MetaInfoDef.prototype.tensorflowVersion = \"\";\n            MetaInfoDef.prototype.tensorflowGitVersion = \"\";\n\n            MetaInfoDef.decode = function decode(r, l) {\n                if (!(r instanceof $Reader))\n                    r = $Reader.create(r);\n                var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.MetaGraphDef.MetaInfoDef();\n                while (r.pos < c) {\n                    var t = r.uint32();\n                    switch (t >>> 3) {\n                    case 1:\n                        m.metaGraphVersion = r.string();\n                        break;\n                    case 2:\n                        m.strippedOpList = $root.tensorflow.OpList.decode(r, r.uint32());\n                        break;\n                    case 3:\n                        m.anyInfo = $root.tensorflow.Any.decode(r, r.uint32());\n                        break;\n                    case 4:\n                        if (!(m.tags && m.tags.length))\n                            m.tags = [];\n                        m.tags.push(r.string());\n                        break;\n                    case 5:\n                        m.tensorflowVersion = r.string();\n                        break;\n                    case 6:\n                        m.tensorflowGitVersion = r.string();\n                        break;\n                    default:\n                        r.skipType(t & 7);\n                        break;\n                    }\n                }\n                return m;\n            };\n\n            return MetaInfoDef;\n        })();\n\n        return MetaGraphDef;\n    })();\n\n    tensorflow.SavedModel = (function() {\n\n        function SavedModel(p) {\n            this.metaGraphs = [];\n            if (p)\n                for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                    if (p[ks[i]] != null)\n                        this[ks[i]] = p[ks[i]];\n        }\n\n        SavedModel.prototype.savedModelSchemaVersion = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n        SavedModel.prototype.metaGraphs = $util.emptyArray;\n\n        SavedModel.decode = function decode(r, l) {\n            if (!(r instanceof $Reader))\n                r = $Reader.create(r);\n            var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.SavedModel();\n            while (r.pos < c) {\n                var t = r.uint32();\n                switch (t >>> 3) {\n                case 1:\n                    m.savedModelSchemaVersion = r.int64();\n                    break;\n                case 2:\n                    if (!(m.metaGraphs && m.metaGraphs.length))\n                        m.metaGraphs = [];\n                    m.metaGraphs.push($root.tensorflow.MetaGraphDef.decode(r, r.uint32()));\n                    break;\n                default:\n                    r.skipType(t & 7);\n                    break;\n                }\n            }\n            return m;\n        };\n\n        return SavedModel;\n    })();\n\n    tensorflow.FunctionDefLibrary = (function() {\n\n        function FunctionDefLibrary(p) {\n            this[\"function\"] = [];\n            this.gradient = [];\n            if (p)\n                for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                    if (p[ks[i]] != null)\n                        this[ks[i]] = p[ks[i]];\n        }\n\n        FunctionDefLibrary.prototype[\"function\"] = $util.emptyArray;\n        FunctionDefLibrary.prototype.gradient = $util.emptyArray;\n\n        FunctionDefLibrary.decode = function decode(r, l) {\n            if (!(r instanceof $Reader))\n                r = $Reader.create(r);\n            var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.FunctionDefLibrary();\n            while (r.pos < c) {\n                var t = r.uint32();\n                switch (t >>> 3) {\n                case 1:\n                    if (!(m[\"function\"] && m[\"function\"].length))\n                        m[\"function\"] = [];\n                    m[\"function\"].push($root.tensorflow.FunctionDef.decode(r, r.uint32()));\n                    break;\n                case 2:\n                    if (!(m.gradient && m.gradient.length))\n                        m.gradient = [];\n                    m.gradient.push($root.tensorflow.GradientDef.decode(r, r.uint32()));\n                    break;\n                default:\n                    r.skipType(t & 7);\n                    break;\n                }\n            }\n            return m;\n        };\n\n        return FunctionDefLibrary;\n    })();\n\n    tensorflow.FunctionDef = (function() {\n\n        function FunctionDef(p) {\n            this.attr = {};\n            this.nodeDef = [];\n            this.ret = {};\n            if (p)\n                for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                    if (p[ks[i]] != null)\n                        this[ks[i]] = p[ks[i]];\n        }\n\n        FunctionDef.prototype.signature = null;\n        FunctionDef.prototype.attr = $util.emptyObject;\n        FunctionDef.prototype.nodeDef = $util.emptyArray;\n        FunctionDef.prototype.ret = $util.emptyObject;\n\n        FunctionDef.decode = function decode(r, l) {\n            if (!(r instanceof $Reader))\n                r = $Reader.create(r);\n            var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.FunctionDef(), k;\n            while (r.pos < c) {\n                var t = r.uint32();\n                switch (t >>> 3) {\n                case 1:\n                    m.signature = $root.tensorflow.OpDef.decode(r, r.uint32());\n                    break;\n                case 5:\n                    r.skip().pos++;\n                    if (m.attr === $util.emptyObject)\n                        m.attr = {};\n                    k = r.string();\n                    r.pos++;\n                    m.attr[k] = $root.tensorflow.AttrValue.decode(r, r.uint32());\n                    break;\n                case 3:\n                    if (!(m.nodeDef && m.nodeDef.length))\n                        m.nodeDef = [];\n                    m.nodeDef.push($root.tensorflow.NodeDef.decode(r, r.uint32()));\n                    break;\n                case 4:\n                    r.skip().pos++;\n                    if (m.ret === $util.emptyObject)\n                        m.ret = {};\n                    k = r.string();\n                    r.pos++;\n                    m.ret[k] = r.string();\n                    break;\n                default:\n                    r.skipType(t & 7);\n                    break;\n                }\n            }\n            return m;\n        };\n\n        return FunctionDef;\n    })();\n\n    tensorflow.GradientDef = (function() {\n\n        function GradientDef(p) {\n            if (p)\n                for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n                    if (p[ks[i]] != null)\n                        this[ks[i]] = p[ks[i]];\n        }\n\n        GradientDef.prototype.functionName = \"\";\n        GradientDef.prototype.gradientFunc = \"\";\n\n        GradientDef.decode = function decode(r, l) {\n            if (!(r instanceof $Reader))\n                r = $Reader.create(r);\n            var c = l === undefined ? r.len : r.pos + l, m = new $root.tensorflow.GradientDef();\n            while (r.pos < c) {\n                var t = r.uint32();\n                switch (t >>> 3) {\n                case 1:\n                    m.functionName = r.string();\n                    break;\n                case 2:\n                    m.gradientFunc = r.string();\n                    break;\n                default:\n                    r.skipType(t & 7);\n                    break;\n                }\n            }\n            return m;\n        };\n\n        return GradientDef;\n    })();\n\n    return tensorflow;\n})();\n\nmodule.exports = $root;\n\n},{\"protobufjs/minimal\":268}],13:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ExecutionContext = (function () {\n    function ExecutionContext(weightMap, tensorArrayMap) {\n        this.weightMap = weightMap;\n        this.tensorArrayMap = tensorArrayMap;\n        this.rootContext = { id: 0, frameName: '', iterationId: 0 };\n        this.contexts = [this.rootContext];\n        this.lastId = 0;\n        this.generateCurrentContextIds();\n    }\n    ExecutionContext.prototype.newFrame = function (id, frameName) {\n        return { id: id, frameName: frameName, iterationId: 0 };\n    };\n    Object.defineProperty(ExecutionContext.prototype, \"currentContext\", {\n        get: function () {\n            return this.contexts;\n        },\n        set: function (contexts) {\n            if (this.contexts !== contexts) {\n                this.contexts = contexts;\n                this.generateCurrentContextIds();\n            }\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(ExecutionContext.prototype, \"currentContextId\", {\n        get: function () {\n            return this._currentContextIds[0];\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(ExecutionContext.prototype, \"currentContextIds\", {\n        get: function () {\n            return this._currentContextIds;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    ExecutionContext.prototype.generateCurrentContextIds = function () {\n        var names = [];\n        for (var i = 0; i < this.contexts.length - 1; i++) {\n            var contexts = this.contexts.slice(0, this.contexts.length - i);\n            names.push(this.contextIdforContexts(contexts));\n        }\n        names.push('');\n        this._currentContextIds = names;\n    };\n    ExecutionContext.prototype.contextIdforContexts = function (contexts) {\n        return contexts ?\n            contexts\n                .map(function (context) { return (context.id === 0 && context.iterationId === 0) ?\n                '' :\n                context.frameName + \"-\" + context.iterationId; })\n                .join('/') :\n            '';\n    };\n    ExecutionContext.prototype.enterFrame = function (frameId) {\n        if (this.contexts) {\n            this.lastId++;\n            this.contexts = this.contexts.slice();\n            this.contexts.push(this.newFrame(this.lastId, frameId));\n            this._currentContextIds.unshift(this.contextIdforContexts(this.contexts));\n        }\n    };\n    ExecutionContext.prototype.exitFrame = function () {\n        if (this.contexts && this.contexts.length > 1) {\n            this.contexts = this.contexts.slice();\n            this.contexts.splice(-1);\n            this.currentContextIds.shift();\n        }\n        else {\n            throw new Error('Cannot exit frame, the context is empty');\n        }\n    };\n    ExecutionContext.prototype.nextIteration = function () {\n        if (this.contexts && this.contexts.length > 0) {\n            this.contexts = this.contexts.slice();\n            this.lastId++;\n            var context = Object.assign({}, this.contexts[this.contexts.length - 1]);\n            context.iterationId += 1;\n            context.id = this.lastId;\n            this.contexts.splice(-1, 1, context);\n            this._currentContextIds.splice(0, 1, this.contextIdforContexts(this.contexts));\n        }\n        else {\n            throw new Error('Cannot increase frame iteration, the context is empty');\n        }\n    };\n    ExecutionContext.prototype.getWeight = function (name) {\n        return this.weightMap[name];\n    };\n    ExecutionContext.prototype.addTensorArray = function (tensorArray) {\n        this.tensorArrayMap[tensorArray.id] = tensorArray;\n    };\n    ExecutionContext.prototype.getTensorArray = function (id) {\n        return this.tensorArrayMap[id];\n    };\n    return ExecutionContext;\n}());\nexports.ExecutionContext = ExecutionContext;\n\n},{}],14:[function(require,module,exports){\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 tfc = require(\"@tensorflow/tfjs-core\");\nvar Url = require(\"url\");\nvar compiled_api_1 = require(\"../data/compiled_api\");\nvar operation_mapper_1 = require(\"../operations/operation_mapper\");\nvar graph_executor_1 = require(\"./graph_executor\");\nvar FrozenModel = (function () {\n    function FrozenModel(modelUrl, weightManifestUrl, requestOption) {\n        this.modelUrl = modelUrl;\n        this.weightManifestUrl = weightManifestUrl;\n        this.requestOption = requestOption;\n        this.version = 'n/a';\n        this.pathPrefix = this.getPathPrefix();\n    }\n    Object.defineProperty(FrozenModel.prototype, \"modelVersion\", {\n        get: function () {\n            return this.version;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(FrozenModel.prototype, \"inputNodes\", {\n        get: function () {\n            return this.executor.inputNodes;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(FrozenModel.prototype, \"outputNodes\", {\n        get: function () {\n            return this.executor.outputNodes;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(FrozenModel.prototype, \"inputs\", {\n        get: function () {\n            return this.executor.inputs;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(FrozenModel.prototype, \"outputs\", {\n        get: function () {\n            return this.executor.outputs;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(FrozenModel.prototype, \"weights\", {\n        get: function () {\n            return this.executor.weightMap;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    FrozenModel.prototype.getPathPrefix = function () {\n        var url = Url.parse(this.weightManifestUrl);\n        var segments = url.pathname.split('/');\n        segments.splice(-1);\n        url.pathname = segments.join('/');\n        return Url.format(url) + '/';\n    };\n    FrozenModel.prototype.loadRemoteProtoFile = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var response, _a, _b, _c, error_1;\n            return __generator(this, function (_d) {\n                switch (_d.label) {\n                    case 0:\n                        _d.trys.push([0, 3, , 4]);\n                        return [4, fetch(this.modelUrl, this.requestOption)];\n                    case 1:\n                        response = _d.sent();\n                        _b = (_a = compiled_api_1.tensorflow.GraphDef).decode;\n                        _c = Uint8Array.bind;\n                        return [4, response.arrayBuffer()];\n                    case 2: return [2, _b.apply(_a, [new (_c.apply(Uint8Array, [void 0, _d.sent()]))()])];\n                    case 3:\n                        error_1 = _d.sent();\n                        throw new Error(this.modelUrl + \" not found. \" + error_1);\n                    case 4: return [2];\n                }\n            });\n        });\n    };\n    FrozenModel.prototype.loadWeightManifest = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var manifest, _a, error_2;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        _b.trys.push([0, 3, , 4]);\n                        return [4, fetch(this.weightManifestUrl, this.requestOption)];\n                    case 1:\n                        manifest = _b.sent();\n                        _a = this;\n                        return [4, manifest.clone().json()];\n                    case 2:\n                        _a.weightManifest = _b.sent();\n                        return [3, 4];\n                    case 3:\n                        error_2 = _b.sent();\n                        throw new Error(this.weightManifestUrl + \" not found. \" + error_2);\n                    case 4: return [2];\n                }\n            });\n        });\n    };\n    FrozenModel.prototype.load = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var graphPromise, manifestPromise, graph, weightMap;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        graphPromise = this.loadRemoteProtoFile();\n                        manifestPromise = this.loadWeightManifest();\n                        return [4, Promise.all([graphPromise, manifestPromise])];\n                    case 1:\n                        graph = (_a.sent())[0];\n                        this.version = graph.versions.producer + \".\" + graph.versions.minConsumer;\n                        return [4, tfc.io.loadWeights(this.weightManifest, this.pathPrefix, undefined, this.requestOption)];\n                    case 2:\n                        weightMap = _a.sent();\n                        this.executor =\n                            new graph_executor_1.GraphExecutor(operation_mapper_1.OperationMapper.Instance.transformGraph(graph));\n                        this.executor.weightMap = this.convertTensorMapToTensorsMap(weightMap);\n                        return [2, true];\n                }\n            });\n        });\n    };\n    FrozenModel.prototype.predict = function (inputs, config) {\n        return this.execute(inputs, this.outputNodes);\n    };\n    FrozenModel.prototype.constructTensorMap = function (inputs) {\n        var inputArray = inputs instanceof tfc.Tensor ? [inputs] : inputs;\n        if (inputArray.length !== this.inputNodes.length) {\n            throw new Error('Input tensor count mismatch,' +\n                (\"the frozen model has \" + this.inputNodes.length + \" placeholders, \") +\n                (\"while there are \" + inputArray.length + \" input tensors.\"));\n        }\n        return this.inputNodes.reduce(function (map, inputName, i) {\n            map[inputName] = inputArray[i];\n            return map;\n        }, {});\n    };\n    FrozenModel.prototype.execute = function (inputs, outputs) {\n        outputs = outputs || this.outputNodes;\n        if (inputs instanceof tfc.Tensor || Array.isArray(inputs)) {\n            inputs = this.constructTensorMap(inputs);\n        }\n        if (this.executor.isControlFlowModel || this.executor.isDynamicShapeModel) {\n            throw new Error('The model contains control flow or dynamic shape ops, ' +\n                'please use executeAsync method');\n        }\n        var result = this.executor.execute(this.convertTensorMapToTensorsMap(inputs), outputs);\n        var keys = Object.keys(result);\n        return (Array.isArray(outputs) && outputs.length > 1) ?\n            outputs.map(function (node) { return result[node]; }) :\n            result[keys[0]];\n    };\n    FrozenModel.prototype.executeAsync = function (inputs, outputs) {\n        return __awaiter(this, void 0, void 0, function () {\n            var result, keys;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (!(this.executor.isControlFlowModel &&\n                            this.executor.isDynamicShapeModel)) {\n                            throw new Error('The model does not contain control flow or dynamic shape ops, ' +\n                                'please use execute method for better performance.');\n                        }\n                        outputs = outputs || this.outputNodes;\n                        if (inputs instanceof tfc.Tensor || Array.isArray(inputs)) {\n                            inputs = this.constructTensorMap(inputs);\n                        }\n                        return [4, this.executor.executeAsync(this.convertTensorMapToTensorsMap(inputs), outputs)];\n                    case 1:\n                        result = _a.sent();\n                        keys = Object.keys(result);\n                        return [2, Array.isArray(outputs) && outputs.length > 1 ?\n                                outputs.map(function (node) { return result[node]; }) :\n                                result[keys[0]]];\n                }\n            });\n        });\n    };\n    FrozenModel.prototype.convertTensorMapToTensorsMap = function (map) {\n        return Object.keys(map).reduce(function (newMap, key) {\n            newMap[key] = [map[key]];\n            return newMap;\n        }, {});\n    };\n    FrozenModel.prototype.dispose = function () {\n        this.executor.dispose();\n    };\n    return FrozenModel;\n}());\nexports.FrozenModel = FrozenModel;\nfunction loadFrozenModel(modelUrl, weightsManifestUrl, requestOption) {\n    return __awaiter(this, void 0, void 0, function () {\n        var model;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    model = new FrozenModel(modelUrl, weightsManifestUrl, requestOption);\n                    return [4, model.load()];\n                case 1:\n                    _a.sent();\n                    return [2, model];\n            }\n        });\n    });\n}\nexports.loadFrozenModel = loadFrozenModel;\n\n},{\"../data/compiled_api\":12,\"../operations/operation_mapper\":50,\"./graph_executor\":15,\"@tensorflow/tfjs-core\":59,\"url\":301}],15:[function(require,module,exports){\n\"use strict\";\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n        s = arguments[i];\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n            t[p] = s[p];\n    }\n    return t;\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 tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar utils_1 = require(\"../operations/executors/utils\");\nvar operation_executor_1 = require(\"../operations/operation_executor\");\nvar execution_context_1 = require(\"./execution_context\");\nvar GraphExecutor = (function () {\n    function GraphExecutor(graph) {\n        this.graph = graph;\n        this.compiledOrder = [];\n        this._weightMap = {};\n        this.placeholders = graph.placeholders;\n        this._outputs = graph.outputs;\n        this.compile();\n    }\n    Object.defineProperty(GraphExecutor.prototype, \"weightMap\", {\n        get: function () {\n            return this._weightMap;\n        },\n        set: function (weightMap) {\n            var weightIds = Object.keys(weightMap).map(function (key) { return weightMap[key].map(function (tensor) { return tensor.id; }); });\n            this.weightIds = [].concat.apply([], weightIds);\n            this._weightMap = weightMap;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(GraphExecutor.prototype, \"inputs\", {\n        get: function () {\n            return this.placeholders.map(function (node) {\n                return {\n                    name: node.name,\n                    shape: node.params['shape'] ? node.params['shape'].value :\n                        undefined,\n                    dtype: node.params['dtype'] ? node.params['dtype'].value :\n                        undefined\n                };\n            });\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(GraphExecutor.prototype, \"outputs\", {\n        get: function () {\n            return this._outputs.map(function (node) {\n                return {\n                    name: node.name,\n                    shape: node.params['shape'] ? node.params['shape'].value :\n                        undefined,\n                    dtype: node.params['dtype'] ? node.params['dtype'].value :\n                        undefined\n                };\n            });\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(GraphExecutor.prototype, \"inputNodes\", {\n        get: function () {\n            return this.placeholders.map(function (node) { return node.name; });\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(GraphExecutor.prototype, \"outputNodes\", {\n        get: function () {\n            return this.outputs.map(function (node) { return node.name; });\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(GraphExecutor.prototype, \"isControlFlowModel\", {\n        get: function () {\n            return this.graph.withControlFlow;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(GraphExecutor.prototype, \"isDynamicShapeModel\", {\n        get: function () {\n            return this.graph.withDynamicShape;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    GraphExecutor.prototype.compile = function () {\n        if (this.graph.withControlFlow || this.graph.withDynamicShape) {\n            return;\n        }\n        var stack = this.graph.inputs.slice();\n        var visited = {};\n        while (stack.length > 0) {\n            var node = stack.pop();\n            visited[node.name] = true;\n            this.compiledOrder.push(node);\n            node.children.forEach(function (childNode) {\n                if (!visited[childNode.name] && childNode.inputNames.every(function (name) {\n                    var nodeName = utils_1.getNodeNameAndIndex(name)[0];\n                    return visited[nodeName];\n                })) {\n                    stack.push(childNode);\n                }\n            });\n        }\n    };\n    GraphExecutor.prototype.execute = function (inputs, outputs) {\n        var _this = this;\n        this.checkInput(inputs);\n        this.checkInputShapeAndType(inputs);\n        var tensorArrayMap = {};\n        var result = tfjs_core_1.tidy(function () {\n            var context = new execution_context_1.ExecutionContext(_this._weightMap, tensorArrayMap);\n            var tensors = _this.compiledOrder.reduce(function (map, node) {\n                map[node.name] = operation_executor_1.executeOp(node, map, context);\n                return map;\n            }, __assign({}, _this.weightMap, inputs));\n            return _this.findOutputs(tensors, context, outputs);\n        });\n        return result;\n    };\n    GraphExecutor.prototype.executeAsync = function (inputs, outputs) {\n        return __awaiter(this, void 0, void 0, function () {\n            var _this = this;\n            var tensorArrayMap, context, tensors, results, outputIds, inputIdArray, inputIds;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        this.checkInput(inputs);\n                        this.checkInputShapeAndType(inputs);\n                        tensorArrayMap = {};\n                        context = new execution_context_1.ExecutionContext(this._weightMap, tensorArrayMap);\n                        return [4, this.executeWithControlFlow(inputs, context)];\n                    case 1:\n                        tensors = _a.sent();\n                        results = this.findOutputs(tensors, context, outputs);\n                        outputIds = Object.keys(results).map(function (key) { return results[key].id; });\n                        inputIdArray = Object.keys(inputs).map(function (key) { return inputs[key].map(function (input) { return input.id; }); });\n                        inputIds = [].concat.apply([], inputIdArray);\n                        Object.keys(tensors).forEach(function (key) {\n                            var tensorArray = tensors[key];\n                            tensorArray.forEach(function (tensor) {\n                                if (tensor && outputIds.indexOf(tensor.id) === -1 &&\n                                    inputIds.indexOf(tensor.id) === -1 &&\n                                    _this.weightIds.indexOf(tensor.id) === -1) {\n                                    tensor.dispose();\n                                }\n                            });\n                        });\n                        return [2, results];\n                }\n            });\n        });\n    };\n    GraphExecutor.prototype.executeWithControlFlow = function (inputs, context) {\n        return __awaiter(this, void 0, void 0, function () {\n            var stack, tensorMap, added, item, nodeName, tensors, _a, _b;\n            return __generator(this, function (_c) {\n                switch (_c.label) {\n                    case 0:\n                        stack = this.graph.inputs.map(function (node) {\n                            return { node: node, contexts: context.currentContext };\n                        });\n                        tensorMap = __assign({}, this.weightMap, inputs);\n                        added = {};\n                        _c.label = 1;\n                    case 1:\n                        if (!(stack.length > 0)) return [3, 3];\n                        item = stack.pop();\n                        context.currentContext = item.contexts;\n                        nodeName = '';\n                        if (item.node.op === 'enter' &&\n                            utils_1.getParamValue('isConstant', item.node, tensorMap, context)) {\n                            nodeName = utils_1.getNodeNameAndIndex(item.node.name, context)[0];\n                        }\n                        tensors = operation_executor_1.executeOp(item.node, tensorMap, context);\n                        if (!nodeName) {\n                            nodeName = utils_1.getNodeNameAndIndex(item.node.name, context)[0];\n                        }\n                        _a = tensorMap;\n                        _b = nodeName;\n                        return [4, tensors];\n                    case 2:\n                        _a[_b] = _c.sent();\n                        item.node.children.forEach(function (childNode) {\n                            var nodeName = utils_1.getNodeNameAndIndex(childNode.name, context)[0];\n                            if (!added[nodeName]) {\n                                if (childNode.op === 'merge') {\n                                    if (childNode.inputNames.some(function (name) {\n                                        return !!utils_1.getTensor(name, tensorMap, context);\n                                    })) {\n                                        added[nodeName] = true;\n                                        stack.push({ contexts: context.currentContext, node: childNode });\n                                    }\n                                }\n                                else if (childNode.inputNames.every(function (name) {\n                                    return !!utils_1.getTensor(name, tensorMap, context);\n                                })) {\n                                    added[nodeName] = true;\n                                    stack.push({ contexts: context.currentContext, node: childNode });\n                                }\n                            }\n                        });\n                        return [3, 1];\n                    case 3: return [2, tensorMap];\n                }\n            });\n        });\n    };\n    GraphExecutor.prototype.findOutputs = function (tensorMap, context, outputs) {\n        if (outputs && !(outputs instanceof Array)) {\n            outputs = [outputs];\n        }\n        var requestedOutputs = (outputs || this.graph.outputs.map(function (node) { return node.name; }));\n        return requestedOutputs.reduce(function (map, name) {\n            map[name] = utils_1.getTensor(name, tensorMap, context);\n            return map;\n        }, {});\n    };\n    GraphExecutor.prototype.dispose = function () {\n        var _this = this;\n        Object.keys(this.weightMap)\n            .forEach(function (key) { return _this.weightMap[key].forEach(function (tensor) { return tensor.dispose(); }); });\n    };\n    GraphExecutor.prototype.checkInputShapeAndType = function (inputs) {\n        this.placeholders.forEach(function (node) {\n            var input = inputs[node.name][0];\n            if (node.params['shape'] && node.params['shape'].value) {\n                var shape_1 = node.params['shape'].value;\n                var match = shape_1.length === input.shape.length &&\n                    input.shape.every(function (dim, index) { return shape_1[index] === -1 || shape_1[index] === dim; });\n                tfjs_core_1.util.assert(match, \"The shape of dict['\" + node.name + \"'] provided in model.execute(dict) must be [\" + shape_1 + \"], but was [\" + input.shape + \"]\");\n            }\n            if (node.params['dtype'] && node.params['dtype'].value) {\n                tfjs_core_1.util.assert(input.dtype === node.params['dtype'].value, \"The dtype of dict['\" + node.name + \"'] provided in model.execute(dict) must be \" + node.params['dtype'].value + \", but was \" + input.dtype);\n            }\n        });\n    };\n    GraphExecutor.prototype.checkInput = function (inputs) {\n        var _this = this;\n        var inputKeys = Object.keys(inputs);\n        var missing = [];\n        var extra = [];\n        this.inputNodes.forEach(function (name) {\n            if (inputKeys.indexOf(name) === -1)\n                missing.push(name);\n        });\n        inputKeys.forEach(function (name) {\n            if (_this.inputNodes.indexOf(name) === -1)\n                extra.push(name);\n        });\n        if (missing.length > 0) {\n            throw new Error(\"The dict provided in model.execute(dict) has the keys \" +\n                (\"[\" + inputKeys + \"], but is missing the required keys: [\" + missing + \"].\"));\n        }\n        if (extra.length > 0) {\n            throw new Error(\"The dict provided in model.execute(dict) has \" +\n                (\"unused keys: [\" + extra + \"]. Please provide only the following keys: \") +\n                (\"[\" + this.inputNodes + \"].\"));\n        }\n    };\n    return GraphExecutor;\n}());\nexports.GraphExecutor = GraphExecutor;\n\n},{\"../operations/executors/utils\":33,\"../operations/operation_executor\":49,\"./execution_context\":13,\"@tensorflow/tfjs-core\":59}],16:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar TensorArray = (function () {\n    function TensorArray(name, dtype, maxSize, elementShape, identicalElementShapes, dynamicSize, clearAfterRead) {\n        this.name = name;\n        this.dtype = dtype;\n        this.maxSize = maxSize;\n        this.elementShape = elementShape;\n        this.identicalElementShapes = identicalElementShapes;\n        this.dynamicSize = dynamicSize;\n        this.clearAfterRead = clearAfterRead;\n        this.tensors = [];\n        this.closed_ = false;\n        this.id = TensorArray.nextId++;\n    }\n    Object.defineProperty(TensorArray.prototype, \"closed\", {\n        get: function () {\n            return this.closed_;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    TensorArray.prototype.clearAndClose = function () {\n        this.tensors.forEach(function (tensor) { return tensor.tensor.dispose(); });\n        this.tensors = [];\n        this.closed_ = true;\n    };\n    TensorArray.prototype.size = function () {\n        return this.tensors.length;\n    };\n    TensorArray.prototype.read = function (index) {\n        if (this.closed_) {\n            throw new Error(\"TensorArray \" + this.name + \" has already been closed.\");\n        }\n        if (index < 0 || index >= this.tensors.length) {\n            throw new Error(\"Tried to read from index \" + index + \", but array size is: \" + this.tensors.length);\n        }\n        var tensorWithState = this.tensors[index];\n        if (tensorWithState.cleared) {\n            throw new Error(\"TensorArray \" + this.name + \": Could not read index \" + index + \" twice because it was cleared after a previous read \" +\n                \"(perhaps try setting clear_after_read = false?).\");\n        }\n        if (this.clearAfterRead) {\n            tensorWithState.cleared = true;\n        }\n        tensorWithState.read = true;\n        return tensorWithState.tensor;\n    };\n    TensorArray.prototype.readMany = function (indices) {\n        var _this = this;\n        return indices.map(function (index) { return _this.read(index); });\n    };\n    TensorArray.prototype.write = function (index, tensor) {\n        if (this.closed_) {\n            throw new Error(\"TensorArray \" + this.name + \" has already been closed.\");\n        }\n        if (index < 0 || !this.dynamicSize && index >= this.maxSize) {\n            throw new Error(\"Tried to write to index \" + index + \", but array is not resizeable and size is: \" + this.maxSize);\n        }\n        var t = this.tensors[index] || {};\n        if (tensor.dtype !== this.dtype) {\n            throw new Error(\"TensorArray \" + this.name + \": Could not write to TensorArray index \" + index + \",\\n          because the value dtype is \" + tensor.dtype + \", but TensorArray dtype is \" + this.dtype + \".\");\n        }\n        if (this.size() === 0 && this.elementShape.length === 0) {\n            this.elementShape = tensor.shape;\n        }\n        tfjs_core_1.util.assertShapesMatch(this.elementShape, tensor.shape, \"TensorArray \" + this.name + \": Could not write to TensorArray index \" + index + \".\");\n        if (t && t.read) {\n            throw new Error(\"TensorArray \" + this.name + \": Could not write to TensorArray index \" + index + \", because it has already been read.\");\n        }\n        if (t && t.written) {\n            throw new Error(\"TensorArray \" + this.name + \": Could not write to TensorArray index \" + index + \", because it has already been written.\");\n        }\n        t.tensor = tensor;\n        t.written = true;\n        this.tensors[index] = t;\n    };\n    TensorArray.prototype.writeMany = function (indices, tensors) {\n        var _this = this;\n        if (indices.length !== tensors.length) {\n            throw new Error(\"TensorArray \" + this.name + \": could not write multiple tensors,\" +\n                (\"because the index size: \" + indices.length + \" is not the same as tensors size: \" + tensors.length + \".\"));\n        }\n        indices.map(function (i, index) { return _this.write(i, tensors[index]); });\n    };\n    TensorArray.prototype.gather = function (indices, dtype) {\n        if (!!dtype && dtype !== this.dtype) {\n            throw new Error(\"TensorArray dtype is \" + this.dtype + \" but gather requested dtype \" + dtype);\n        }\n        if (!indices) {\n            indices = [];\n            for (var i = 0; i < this.size(); i++) {\n                indices.push(i);\n            }\n        }\n        if (indices.length === 0) {\n            return tfjs_core_1.tensor([], [0].concat(this.elementShape));\n        }\n        var tensors = this.readMany(indices);\n        tfjs_core_1.util.assertShapesMatch(this.elementShape, tensors[0].shape, 'TensorArray shape mismatch: ');\n        return tfjs_core_1.stack(tensors, 0);\n    };\n    TensorArray.prototype.concat = function (dtype) {\n        if (!!dtype && dtype !== this.dtype) {\n            throw new Error(\"TensorArray dtype is \" + this.dtype + \" but concat requested dtype \" + dtype);\n        }\n        if (this.size() === 0) {\n            return tfjs_core_1.tensor([], [0].concat(this.elementShape));\n        }\n        var indices = [];\n        for (var i = 0; i < this.size(); i++) {\n            indices.push(i);\n        }\n        var tensors = this.readMany(indices);\n        tfjs_core_1.util.assertShapesMatch(this.elementShape, tensors[0].shape, \"TensorArray shape mismatch: tensor array shape (\" + this.elementShape + \") vs first tensor shape (\" + tensors[0].shape + \")\");\n        return tfjs_core_1.concat(tensors, 0);\n    };\n    TensorArray.prototype.scatter = function (indices, tensor) {\n        if (tensor.dtype !== this.dtype) {\n            throw new Error(\"TensorArray dtype is \" + this.dtype + \" but tensor has dtype \" + tensor.dtype);\n        }\n        if (indices.length !== tensor.shape[0]) {\n            throw new Error(\"Expected len(indices) == tensor.shape[0], but saw: \" + indices.length + \" vs. \" + tensor.shape[0]);\n        }\n        var maxIndex = Math.max.apply(Math, indices);\n        if (!this.dynamicSize && maxIndex >= this.maxSize) {\n            throw new Error(\"Max index must be < array size (\" + maxIndex + \"  vs. \" + this.maxSize + \")\");\n        }\n        this.writeMany(indices, tfjs_core_1.unstack(tensor, 0));\n    };\n    TensorArray.prototype.split = function (length, tensor) {\n        var _this = this;\n        if (tensor.dtype !== this.dtype) {\n            throw new Error(\"TensorArray dtype is \" + this.dtype + \" but tensor has dtype \" + tensor.dtype);\n        }\n        var totalLength = 0;\n        var cumulativeLengths = length.map(function (len) {\n            totalLength += len;\n            return totalLength;\n        });\n        if (totalLength !== tensor.shape[0]) {\n            throw new Error(\"Expected sum of lengths to be equal to\\n          tensor.shape[0], but sum of lengths is\\n        \" + totalLength + \", and tensor's shape is: \" + tensor.shape);\n        }\n        if (!this.dynamicSize && length.length !== this.maxSize) {\n            throw new Error(\"TensorArray's size is not equal to the size of lengths (\" + this.maxSize + \" vs. \" + length.length + \"), \" +\n                'and the TensorArray is not marked as dynamically resizeable');\n        }\n        var elementPerRow = totalLength === 0 ? 0 : tensor.size / totalLength;\n        var tensors = [];\n        tfjs_core_1.tidy(function () {\n            tensor = tensor.reshape([1, totalLength, elementPerRow]);\n            for (var i = 0; i < length.length; ++i) {\n                var previousLength = (i === 0) ? 0 : cumulativeLengths[i - 1];\n                var indices_1 = [0, previousLength, 0];\n                var sizes = [1, length[i], elementPerRow];\n                tensors[i] = tfjs_core_1.slice(tensor, indices_1, sizes).reshape(_this.elementShape);\n            }\n            return tensors;\n        });\n        var indices = [];\n        for (var i = 0; i < length.length; i++) {\n            indices[i] = i;\n        }\n        this.writeMany(indices, tensors);\n    };\n    TensorArray.nextId = 0;\n    return TensorArray;\n}());\nexports.TensorArray = TensorArray;\n\n},{\"@tensorflow/tfjs-core\":59}],17:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar frozen_model_1 = require(\"./executor/frozen_model\");\nexports.FrozenModel = frozen_model_1.FrozenModel;\nexports.loadFrozenModel = frozen_model_1.loadFrozenModel;\nvar version_1 = require(\"./version\");\nexports.version_converter = version_1.version;\n\n},{\"./executor/frozen_model\":14,\"./version\":51}],18:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfc = require(\"@tensorflow/tfjs-core\");\nvar utils_1 = require(\"./utils\");\nexports.executeOp = function (node, tensorMap, context) {\n    switch (node.op) {\n        case 'add': {\n            return [tfc.add(utils_1.getParamValue('a', node, tensorMap, context), utils_1.getParamValue('b', node, tensorMap, context))];\n        }\n        case 'mod':\n            return [tfc.mod(utils_1.getParamValue('a', node, tensorMap, context), utils_1.getParamValue('b', node, tensorMap, context))];\n        case 'mul':\n            return [tfc.mul(utils_1.getParamValue('a', node, tensorMap, context), utils_1.getParamValue('b', node, tensorMap, context))];\n        case 'div': {\n            return [tfc.div(utils_1.getParamValue('a', node, tensorMap, context), utils_1.getParamValue('b', node, tensorMap, context))];\n        }\n        case 'floorDiv': {\n            return [tfc.floorDiv(utils_1.getParamValue('a', node, tensorMap, context), utils_1.getParamValue('b', node, tensorMap, context))];\n        }\n        case 'sub': {\n            return [tfc.sub(utils_1.getParamValue('a', node, tensorMap, context), utils_1.getParamValue('b', node, tensorMap, context))];\n        }\n        case 'minimum': {\n            return [tfc.minimum(utils_1.getParamValue('a', node, tensorMap, context), utils_1.getParamValue('b', node, tensorMap, context))];\n        }\n        case 'maximum': {\n            return [tfc.maximum(utils_1.getParamValue('a', node, tensorMap, context), utils_1.getParamValue('b', node, tensorMap, context))];\n        }\n        case 'pow': {\n            return [tfc.pow(utils_1.getParamValue('a', node, tensorMap, context), utils_1.getParamValue('b', node, tensorMap, context))];\n        }\n        case 'squaredDifference': {\n            return [tfc.squaredDifference(utils_1.getParamValue('a', node, tensorMap, context), utils_1.getParamValue('b', node, tensorMap, context))];\n        }\n        default:\n            throw TypeError(\"Node type \" + node.op + \" is not implemented\");\n    }\n};\nexports.CATEGORY = 'arithmetic';\n\n},{\"./utils\":33,\"@tensorflow/tfjs-core\":59}],19:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfc = require(\"@tensorflow/tfjs-core\");\nvar utils_1 = require(\"./utils\");\nexports.executeOp = function (node, tensorMap, context) {\n    switch (node.op) {\n        case 'abs':\n            return [tfc.abs(utils_1.getParamValue('x', node, tensorMap, context))];\n        case 'acos':\n            return [tfc.acos(utils_1.getParamValue('x', node, tensorMap, context))];\n        case 'acosh':\n            return [tfc.acosh(utils_1.getParamValue('x', node, tensorMap, context))];\n        case 'asin':\n            return [tfc.asin(utils_1.getParamValue('x', node, tensorMap, context))];\n        case 'asinh':\n            return [tfc.asinh(utils_1.getParamValue('x', node, tensorMap, context))];\n        case 'atan':\n            return [tfc.atan(utils_1.getParamValue('x', node, tensorMap, context))];\n        case 'atanh':\n            return [tfc.atanh(utils_1.getParamValue('x', node, tensorMap, context))];\n        case 'ceil':\n            return [tfc.ceil(utils_1.getParamValue('x', node, tensorMap, context))];\n        case 'cos':\n            return [tfc.cos(utils_1.getParamValue('x', node, tensorMap, context))];\n        case 'cosh':\n            return [tfc.cosh(utils_1.getParamValue('x', node, tensorMap, context))];\n        case 'elu':\n            return [tfc.elu(utils_1.getParamValue('x', node, tensorMap, context))];\n        case 'erf':\n            return [tfc.erf(utils_1.getParamValue('x', node, tensorMap, context))];\n        case 'exp':\n            return [tfc.exp(utils_1.getParamValue('x', node, tensorMap, context))];\n        case 'expm1': {\n            return [tfc.expm1(utils_1.getParamValue('x', node, tensorMap, context))];\n        }\n        case 'floor':\n            return [tfc.floor(utils_1.getParamValue('x', node, tensorMap, context))];\n        case 'log':\n            return [tfc.log(utils_1.getParamValue('x', node, tensorMap, context))];\n        case 'log1p': {\n            return [tfc.log1p(utils_1.getParamValue('x', node, tensorMap, context))];\n        }\n        case 'neg':\n            return [tfc.neg(utils_1.getParamValue('x', node, tensorMap, context))];\n        case 'reciprocal': {\n            return [tfc.reciprocal(utils_1.getParamValue('x', node, tensorMap, context))];\n        }\n        case 'relu':\n            return [tfc.relu(utils_1.getParamValue('x', node, tensorMap, context))];\n        case 'round': {\n            return [tfc.round(utils_1.getParamValue('x', node, tensorMap, context))];\n        }\n        case 'selu':\n            return [tfc.selu(utils_1.getParamValue('x', node, tensorMap, context))];\n        case 'sigmoid':\n            return [tfc.sigmoid(utils_1.getParamValue('x', node, tensorMap, context))];\n        case 'sin':\n            return [tfc.sin(utils_1.getParamValue('x', node, tensorMap, context))];\n        case 'sign': {\n            return [tfc.sign(utils_1.getParamValue('x', node, tensorMap, context))];\n        }\n        case 'sinh': {\n            return [tfc.sinh(utils_1.getParamValue('x', node, tensorMap, context))];\n        }\n        case 'softplus': {\n            return [tfc.softplus(utils_1.getParamValue('x', node, tensorMap, context))];\n        }\n        case 'sqrt': {\n            return [tfc.sqrt(utils_1.getParamValue('x', node, tensorMap, context))];\n        }\n        case 'square': {\n            return [tfc.square(utils_1.getParamValue('x', node, tensorMap, context))];\n        }\n        case 'tanh': {\n            return [tfc.tanh(utils_1.getParamValue('x', node, tensorMap, context))];\n        }\n        case 'tan':\n            return [tfc.tan(utils_1.getParamValue('x', node, tensorMap, context))];\n        case 'clipByValue':\n            return [tfc.clipByValue(utils_1.getParamValue('x', node, tensorMap, context), utils_1.getParamValue('clipValueMin', node, tensorMap, context), utils_1.getParamValue('clipValueMax', node, tensorMap, context))];\n        case 'rsqrt':\n            return [tfc.div(tfc.scalar(1.0, 'float32'), tfc.sqrt(utils_1.getTensor(node.inputNames[0], tensorMap, context)))];\n        default:\n            throw TypeError(\"Node type \" + node.op + \" is not implemented\");\n    }\n};\nexports.CATEGORY = 'basic_math';\n\n},{\"./utils\":33,\"@tensorflow/tfjs-core\":59}],20:[function(require,module,exports){\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 tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar tensor_array_1 = require(\"../../executor/tensor_array\");\nvar utils_1 = require(\"./utils\");\nfunction executeOp(node, tensorMap, context) {\n    return __awaiter(this, void 0, void 0, function () {\n        var _a, pred, data_1, inputName, frameId, data, tensor, input, size, dtype, elementShape, dynamicSize, clearAfterRead, identicalElementShapes, name_1, tensorArray, id, index, writeTensor, writeTensorArray, readId, readIndex, readTensorArray, gatherId, gatherIndices, gatherDtype, gatherTensorArray, scatterId, scatterIndices, scatterTensor, scatterTensorArray, concatId, concatTensorArray, concatDtype, splitId, splitTensor, lengths, splitTensorArray, sizeId, sizeTensorArray, closeId, closeTensorArray;\n        return __generator(this, function (_b) {\n            switch (_b.label) {\n                case 0:\n                    _a = node.op;\n                    switch (_a) {\n                        case 'loopCond': return [3, 1];\n                        case 'switch': return [3, 2];\n                        case 'merge': return [3, 4];\n                        case 'enter': return [3, 5];\n                        case 'exit': return [3, 6];\n                        case 'nextIteration': return [3, 7];\n                        case 'tensorArray': return [3, 8];\n                        case 'tensorArrayWrite': return [3, 9];\n                        case 'tensorArrayRead': return [3, 10];\n                        case 'tensorArrayGather': return [3, 11];\n                        case 'tensorArrayScatter': return [3, 12];\n                        case 'tensorArrayConcat': return [3, 13];\n                        case 'tensorArraySplit': return [3, 14];\n                        case 'tensorArraySize': return [3, 15];\n                        case 'tensorArrayClose': return [3, 16];\n                    }\n                    return [3, 17];\n                case 1: return [2, [utils_1.getParamValue('pred', node, tensorMap, context)]];\n                case 2:\n                    pred = utils_1.getParamValue('pred', node, tensorMap, context);\n                    data_1 = utils_1.getParamValue('data', node, tensorMap, context);\n                    return [4, pred.data()];\n                case 3: return [2, (_b.sent())[0] ? [undefined, data_1] : [data_1, undefined]];\n                case 4:\n                    inputName = node.inputNames.find(function (name) { return utils_1.getTensor(name, tensorMap, context) !== undefined; });\n                    return [2, inputName ? [utils_1.getTensor(inputName, tensorMap, context)] : undefined];\n                case 5:\n                    frameId = utils_1.getParamValue('frameName', node, tensorMap, context);\n                    data = utils_1.getParamValue('tensor', node, tensorMap, context);\n                    context.enterFrame(frameId);\n                    return [2, [data]];\n                case 6:\n                    tensor = utils_1.getParamValue('tensor', node, tensorMap, context);\n                    context.exitFrame();\n                    return [2, [tensor]];\n                case 7:\n                    input = utils_1.getParamValue('tensor', node, tensorMap, context);\n                    context.nextIteration();\n                    return [2, [input]];\n                case 8:\n                    size = utils_1.getParamValue('size', node, tensorMap, context);\n                    dtype = utils_1.getParamValue('dtype', node, tensorMap, context);\n                    elementShape = utils_1.getParamValue('elementShape', node, tensorMap, context);\n                    dynamicSize = utils_1.getParamValue('dynamicSize', node, tensorMap, context);\n                    clearAfterRead = utils_1.getParamValue('clearAfterRead', node, tensorMap, context);\n                    identicalElementShapes = utils_1.getParamValue('identicalElementShapes', node, tensorMap, context);\n                    name_1 = utils_1.getParamValue('name', node, tensorMap, context);\n                    tensorArray = new tensor_array_1.TensorArray(name_1, dtype, size, elementShape, identicalElementShapes, dynamicSize, clearAfterRead);\n                    context.addTensorArray(tensorArray);\n                    return [2, [tfjs_core_1.scalar(tensorArray.id), tfjs_core_1.scalar(1.0)]];\n                case 9:\n                    id = utils_1.getParamValue('tensorArrayId', node, tensorMap, context);\n                    index = utils_1.getParamValue('index', node, tensorMap, context);\n                    writeTensor = utils_1.getParamValue('tensor', node, tensorMap, context);\n                    writeTensorArray = context.getTensorArray(id);\n                    writeTensorArray.write(index, writeTensor);\n                    return [2, [tfjs_core_1.scalar(1.0)]];\n                case 10:\n                    readId = utils_1.getParamValue('tensorArrayId', node, tensorMap, context);\n                    readIndex = utils_1.getParamValue('index', node, tensorMap, context);\n                    readTensorArray = context.getTensorArray(readId);\n                    return [2, [readTensorArray.read(readIndex)]];\n                case 11:\n                    gatherId = utils_1.getParamValue('tensorArrayId', node, tensorMap, context);\n                    gatherIndices = utils_1.getParamValue('indices', node, tensorMap, context);\n                    gatherDtype = utils_1.getParamValue('dtype', node, tensorMap, context);\n                    gatherTensorArray = context.getTensorArray(gatherId);\n                    return [2, [gatherTensorArray.gather(gatherIndices, gatherDtype)]];\n                case 12:\n                    scatterId = utils_1.getParamValue('tensorArrayId', node, tensorMap, context);\n                    scatterIndices = utils_1.getParamValue('indices', node, tensorMap, context);\n                    scatterTensor = utils_1.getParamValue('tensor', node, tensorMap, context);\n                    scatterTensorArray = context.getTensorArray(scatterId);\n                    scatterTensorArray.scatter(scatterIndices, scatterTensor);\n                    return [2, [tfjs_core_1.scalar(1.0)]];\n                case 13:\n                    concatId = utils_1.getParamValue('tensorArrayId', node, tensorMap, context);\n                    concatTensorArray = context.getTensorArray(concatId);\n                    concatDtype = utils_1.getParamValue('dtype', node, tensorMap, context);\n                    return [2, [concatTensorArray.concat(concatDtype)]];\n                case 14:\n                    splitId = utils_1.getParamValue('tensorArrayId', node, tensorMap, context);\n                    splitTensor = utils_1.getParamValue('tensor', node, tensorMap, context);\n                    lengths = utils_1.getParamValue('lengths', node, tensorMap, context);\n                    splitTensorArray = context.getTensorArray(splitId);\n                    splitTensorArray.split(lengths, splitTensor);\n                    return [2, [tfjs_core_1.scalar(1.0)]];\n                case 15:\n                    sizeId = utils_1.getParamValue('tensorArrayId', node, tensorMap, context);\n                    sizeTensorArray = context.getTensorArray(sizeId);\n                    return [2, [tfjs_core_1.scalar(sizeTensorArray.size(), 'int32')]];\n                case 16:\n                    closeId = utils_1.getParamValue('tensorArrayId', node, tensorMap, context);\n                    closeTensorArray = context.getTensorArray(closeId);\n                    closeTensorArray.clearAndClose();\n                    return [2, []];\n                case 17: throw TypeError(\"Node type \" + node.op + \" is not implemented\");\n            }\n        });\n    });\n}\nexports.executeOp = executeOp;\nexports.CATEGORY = 'control';\n\n},{\"../../executor/tensor_array\":16,\"./utils\":33,\"@tensorflow/tfjs-core\":59}],21:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfc = require(\"@tensorflow/tfjs-core\");\nvar utils_1 = require(\"./utils\");\nexports.executeOp = function (node, tensorMap, context) {\n    switch (node.op) {\n        case 'conv1d': {\n            var stride = utils_1.getParamValue('stride', node, tensorMap, context);\n            var pad = utils_1.getParamValue('pad', node, tensorMap, context);\n            var dataFormat = utils_1.getParamValue('dataFormat', node, tensorMap, context)\n                .toUpperCase();\n            var dilation = utils_1.getParamValue('dilation', node, tensorMap, context);\n            return [tfc.conv1d(utils_1.getParamValue('x', node, tensorMap, context), utils_1.getParamValue('filter', node, tensorMap, context), stride, pad, dataFormat, dilation)];\n        }\n        case 'conv2d': {\n            var stride = utils_1.getParamValue('strides', node, tensorMap, context);\n            var pad = utils_1.getParamValue('pad', node, tensorMap, context);\n            var dataFormat = utils_1.getParamValue('dataFormat', node, tensorMap, context)\n                .toUpperCase();\n            var dilations = utils_1.getParamValue('dilations', node, tensorMap, context);\n            return [tfc.conv2d(utils_1.getParamValue('x', node, tensorMap, context), utils_1.getParamValue('filter', node, tensorMap, context), [stride[1], stride[2]], pad, dataFormat, [dilations[0], dilations[1]])];\n        }\n        case 'conv2dTranspose': {\n            var shape = utils_1.getParamValue('outputShape', node, tensorMap, context);\n            var stride = utils_1.getParamValue('strides', node, tensorMap, context);\n            var pad = utils_1.getParamValue('pad', node, tensorMap, context);\n            return [tfc.conv2dTranspose(utils_1.getParamValue('x', node, tensorMap, context), utils_1.getParamValue('filter', node, tensorMap, context), shape, [stride[1], stride[2]], pad)];\n        }\n        case 'depthwiseConv2d': {\n            var stride = utils_1.getParamValue('strides', node, tensorMap, context);\n            var pad = utils_1.getParamValue('pad', node, tensorMap, context);\n            var dilations = utils_1.getParamValue('dilations', node, tensorMap, context);\n            var dataFormat = utils_1.getParamValue('dataFormat', node, tensorMap, context)\n                .toUpperCase();\n            return [tfc.depthwiseConv2d(utils_1.getParamValue('input', node, tensorMap, context), utils_1.getParamValue('filter', node, tensorMap, context), [stride[1], stride[2]], pad, dataFormat, [dilations[0], dilations[1]])];\n        }\n        case 'avgPool': {\n            var stride = utils_1.getParamValue('strides', node, tensorMap, context);\n            var pad = utils_1.getParamValue('pad', node, tensorMap, context);\n            var kernelSize = utils_1.getParamValue('kernelSize', node, tensorMap, context);\n            return [tfc.avgPool(utils_1.getParamValue('x', node, tensorMap, context), [kernelSize[1], kernelSize[2]], [stride[1], stride[2]], pad)];\n        }\n        case 'maxPool': {\n            var stride = utils_1.getParamValue('strides', node, tensorMap, context);\n            var pad = utils_1.getParamValue('pad', node, tensorMap, context);\n            var kernelSize = utils_1.getParamValue('kernelSize', node, tensorMap, context);\n            return [tfc.maxPool(utils_1.getParamValue('x', node, tensorMap, context), [kernelSize[1], kernelSize[2]], [stride[1], stride[2]], pad)];\n        }\n        default:\n            throw TypeError(\"Node type \" + node.op + \" is not implemented\");\n    }\n};\nexports.CATEGORY = 'convolution';\n\n},{\"./utils\":33,\"@tensorflow/tfjs-core\":59}],22:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfc = require(\"@tensorflow/tfjs-core\");\nvar utils_1 = require(\"./utils\");\nexports.executeOp = function (node, tensorMap, context) {\n    switch (node.op) {\n        case 'fill': {\n            var shape = utils_1.getParamValue('shape', node, tensorMap, context);\n            var value = utils_1.getParamValue('value', node, tensorMap, context);\n            return [tfc.fill(shape, value)];\n        }\n        case 'linspace': {\n            var start = utils_1.getParamValue('start', node, tensorMap, context);\n            var stop_1 = utils_1.getParamValue('stop', node, tensorMap, context);\n            var num = utils_1.getParamValue('num', node, tensorMap, context);\n            return [tfc.linspace(start, stop_1, num)];\n        }\n        case 'oneHot': {\n            var indices = utils_1.getParamValue('indices', node, tensorMap, context);\n            var depth = utils_1.getParamValue('depth', node, tensorMap, context);\n            var onValue = utils_1.getParamValue('onValue', node, tensorMap, context);\n            var offValue = utils_1.getParamValue('offValue', node, tensorMap, context);\n            return [tfc.oneHot(indices, depth, onValue, offValue)];\n        }\n        case 'ones': {\n            return [tfc.ones(utils_1.getParamValue('shape', node, tensorMap, context), utils_1.getParamValue('dtype', node, tensorMap, context))];\n        }\n        case 'onesLike': {\n            return [tfc.onesLike(utils_1.getParamValue('x', node, tensorMap, context))];\n        }\n        case 'randomUniform': {\n            return [tfc.randomUniform(utils_1.getParamValue('shape', node, tensorMap, context), utils_1.getParamValue('minval', node, tensorMap, context), utils_1.getParamValue('maxval', node, tensorMap, context), utils_1.getParamValue('dtype', node, tensorMap, context))];\n        }\n        case 'range': {\n            var start = utils_1.getParamValue('start', node, tensorMap, context);\n            var stop_2 = utils_1.getParamValue('stop', node, tensorMap, context);\n            var step = utils_1.getParamValue('step', node, tensorMap, context);\n            return [tfc.range(start, stop_2, step, utils_1.getParamValue('dtype', node, tensorMap, context))];\n        }\n        case 'truncatedNormal': {\n            var shape = utils_1.getParamValue('shape', node, tensorMap, context);\n            var mean = utils_1.getParamValue('mean', node, tensorMap, context);\n            var stdDev = utils_1.getParamValue('stdDev', node, tensorMap, context);\n            var seed = utils_1.getParamValue('seed', node, tensorMap, context);\n            return [tfc.truncatedNormal(shape, mean, stdDev, utils_1.getParamValue('dtype', node, tensorMap, context), seed)];\n        }\n        case 'zeros': {\n            return [tfc.zeros(utils_1.getParamValue('shape', node, tensorMap, context), utils_1.getParamValue('dtype', node, tensorMap, context))];\n        }\n        case 'zerosLike': {\n            return [tfc.zerosLike(utils_1.getParamValue('x', node, tensorMap, context))];\n        }\n        default:\n            throw TypeError(\"Node type \" + node.op + \" is not implemented\");\n    }\n};\nexports.CATEGORY = 'creation';\n\n},{\"./utils\":33,\"@tensorflow/tfjs-core\":59}],23:[function(require,module,exports){\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};\nvar _this = this;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfc = require(\"@tensorflow/tfjs-core\");\nvar utils_1 = require(\"./utils\");\nexports.executeOp = function (node, tensorMap, context) { return __awaiter(_this, void 0, void 0, function () {\n    var _a, boxes, scores, maxOutputSize, iouThreshold, scoreThreshold;\n    return __generator(this, function (_b) {\n        switch (_b.label) {\n            case 0:\n                _a = node.op;\n                switch (_a) {\n                    case 'nonMaxSuppression': return [3, 1];\n                    case 'whereAsync': return [3, 3];\n                }\n                return [3, 5];\n            case 1:\n                boxes = utils_1.getParamValue('boxes', node, tensorMap, context);\n                scores = utils_1.getParamValue('scores', node, tensorMap, context);\n                maxOutputSize = utils_1.getParamValue('maxOutputSize', node, tensorMap, context);\n                iouThreshold = utils_1.getParamValue('iouThreshold', node, tensorMap, context);\n                scoreThreshold = utils_1.getParamValue('scoreThreshold', node, tensorMap, context);\n                return [4, tfc.image.nonMaxSuppressionAsync(boxes, scores, maxOutputSize, iouThreshold, scoreThreshold)];\n            case 2: return [2, [_b.sent()]];\n            case 3: return [4, tfc.whereAsync(utils_1.getParamValue('condition', node, tensorMap, context))];\n            case 4: return [2, [_b.sent()]];\n            case 5: throw TypeError(\"Node type \" + node.op + \" is not implemented\");\n        }\n    });\n}); };\nexports.CATEGORY = 'dynamic';\n\n},{\"./utils\":33,\"@tensorflow/tfjs-core\":59}],24:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfc = require(\"@tensorflow/tfjs-core\");\nvar utils_1 = require(\"./utils\");\nexports.executeOp = function (node, tensorMap, context) {\n    switch (node.op) {\n        case 'topK': {\n            var x = utils_1.getParamValue('x', node, tensorMap, context);\n            var k = utils_1.getParamValue('k', node, tensorMap, context);\n            var sorted = utils_1.getParamValue('sorted', node, tensorMap, context);\n            var result = tfc.topk(x, k, sorted);\n            return [result.values, result.indices];\n        }\n        default:\n            throw TypeError(\"Node type \" + node.op + \" is not implemented\");\n    }\n};\nexports.CATEGORY = 'evaluation';\n\n},{\"./utils\":33,\"@tensorflow/tfjs-core\":59}],25:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfc = require(\"@tensorflow/tfjs-core\");\nvar utils_1 = require(\"./utils\");\nexports.executeOp = function (node, tensorMap, context) {\n    switch (node.op) {\n        case 'const': {\n            return tensorMap[node.name];\n        }\n        case 'placeholder':\n            var def = utils_1.getParamValue('default', node, tensorMap, context);\n            return [utils_1.getTensor(node.name, tensorMap, context) || def];\n        case 'identity':\n        case 'stopGradient':\n        case 'fakeQuantWithMinMaxVars':\n            return [utils_1.getParamValue('x', node, tensorMap, context)];\n        case 'snapshot':\n            var snapshot = utils_1.getParamValue('x', node, tensorMap, context);\n            return [snapshot.clone()];\n        case 'shape':\n            return [tfc.tensor1d(utils_1.getParamValue('x', node, tensorMap, context).shape, 'int32')];\n        case 'size':\n            return [tfc.scalar(utils_1.getParamValue('x', node, tensorMap, context).size, 'int32')];\n        case 'rank':\n            return [tfc.scalar(utils_1.getParamValue('x', node, tensorMap, context).rank, 'int32')];\n        case 'noop':\n            return [];\n        case 'print':\n            var input = utils_1.getParamValue('x', node, tensorMap, context);\n            var data = utils_1.getParamValue('data', node, tensorMap, context);\n            var message = utils_1.getParamValue('message', node, tensorMap, context);\n            var summarize = utils_1.getParamValue('summarize', node, tensorMap, context);\n            console.warn('The graph has a tf.print() operation,' +\n                'usually used for debugging, which slows down performance.');\n            console.log(message);\n            for (var i = 0; i < data.length; i++) {\n                console.log(Array.prototype.slice.call(data[0].dataSync()).slice(0, summarize));\n            }\n            return [input];\n        default:\n            throw TypeError(\"Node type \" + node.op + \" is not implemented\");\n    }\n};\nexports.CATEGORY = 'graph';\n\n},{\"./utils\":33,\"@tensorflow/tfjs-core\":59}],26:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfc = require(\"@tensorflow/tfjs-core\");\nvar utils_1 = require(\"./utils\");\nexports.executeOp = function (node, tensorMap, context) {\n    switch (node.op) {\n        case 'resizeBilinear': {\n            var images = utils_1.getParamValue('images', node, tensorMap, context);\n            var size = utils_1.getParamValue('size', node, tensorMap, context);\n            var alignCorners = utils_1.getParamValue('alignCorners', node, tensorMap, context);\n            return [tfc.image.resizeBilinear(images, [size[0], size[1]], alignCorners)];\n        }\n        case 'resizeNearestNeighbor': {\n            var images = utils_1.getParamValue('images', node, tensorMap, context);\n            var size = utils_1.getParamValue('size', node, tensorMap, context);\n            var alignCorners = utils_1.getParamValue('alignCorners', node, tensorMap, context);\n            return [tfc.image.resizeNearestNeighbor(images, [size[0], size[1]], alignCorners)];\n        }\n        default:\n            throw TypeError(\"Node type \" + node.op + \" is not implemented\");\n    }\n};\nexports.CATEGORY = 'image';\n\n},{\"./utils\":33,\"@tensorflow/tfjs-core\":59}],27:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfc = require(\"@tensorflow/tfjs-core\");\nvar utils_1 = require(\"./utils\");\nexports.executeOp = function (node, tensorMap, context) {\n    switch (node.op) {\n        case 'equal': {\n            return [tfc.equal(utils_1.getParamValue('a', node, tensorMap, context), utils_1.getParamValue('b', node, tensorMap, context))];\n        }\n        case 'notEqual': {\n            return [tfc.notEqual(utils_1.getParamValue('a', node, tensorMap, context), utils_1.getParamValue('b', node, tensorMap, context))];\n        }\n        case 'greater': {\n            return [tfc.greater(utils_1.getParamValue('a', node, tensorMap, context), utils_1.getParamValue('b', node, tensorMap, context))];\n        }\n        case 'greaterEqual': {\n            return [tfc.greaterEqual(utils_1.getParamValue('a', node, tensorMap, context), utils_1.getParamValue('b', node, tensorMap, context))];\n        }\n        case 'less': {\n            return [tfc.less(utils_1.getParamValue('a', node, tensorMap, context), utils_1.getParamValue('b', node, tensorMap, context))];\n        }\n        case 'lessEqual': {\n            return [tfc.lessEqual(utils_1.getParamValue('a', node, tensorMap, context), utils_1.getParamValue('b', node, tensorMap, context))];\n        }\n        case 'logicalAnd': {\n            return [tfc.logicalAnd(utils_1.getParamValue('a', node, tensorMap, context), utils_1.getParamValue('b', node, tensorMap, context))];\n        }\n        case 'logicalNot': {\n            return [tfc.logicalNot(utils_1.getParamValue('a', node, tensorMap, context))];\n        }\n        case 'logicalOr': {\n            return [tfc.logicalOr(utils_1.getParamValue('a', node, tensorMap, context), utils_1.getParamValue('b', node, tensorMap, context))];\n        }\n        case 'where': {\n            return [tfc.where(utils_1.getParamValue('condition', node, tensorMap, context), utils_1.getParamValue('a', node, tensorMap, context), utils_1.getParamValue('b', node, tensorMap, context))];\n        }\n        default:\n            throw TypeError(\"Node type \" + node.op + \" is not implemented\");\n    }\n};\nexports.CATEGORY = 'logical';\n\n},{\"./utils\":33,\"@tensorflow/tfjs-core\":59}],28:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfc = require(\"@tensorflow/tfjs-core\");\nvar utils_1 = require(\"./utils\");\nexports.executeOp = function (node, tensorMap, context) {\n    switch (node.op) {\n        case 'matMul':\n            return [tfc.matMul(utils_1.getParamValue('a', node, tensorMap, context), utils_1.getParamValue('b', node, tensorMap, context), utils_1.getParamValue('transposeA', node, tensorMap, context), utils_1.getParamValue('transposeB', node, tensorMap, context))];\n        case 'transpose':\n            return [tfc.transpose(utils_1.getParamValue('x', node, tensorMap, context), utils_1.getParamValue('perm', node, tensorMap, context))];\n        default:\n            throw TypeError(\"Node type \" + node.op + \" is not implemented\");\n    }\n};\nexports.CATEGORY = 'matrices';\n\n},{\"./utils\":33,\"@tensorflow/tfjs-core\":59}],29:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfc = require(\"@tensorflow/tfjs-core\");\nvar utils_1 = require(\"./utils\");\nexports.executeOp = function (node, tensorMap, context) {\n    switch (node.op) {\n        case 'batchNormalization': {\n            return [tfc.batchNormalization(utils_1.getParamValue('x', node, tensorMap, context), utils_1.getParamValue('mean', node, tensorMap, context), utils_1.getParamValue('variance', node, tensorMap, context), utils_1.getParamValue('epsilon', node, tensorMap, context), utils_1.getParamValue('scale', node, tensorMap, context), utils_1.getParamValue('offset', node, tensorMap, context))];\n        }\n        case 'localResponseNormalization': {\n            return [tfc.localResponseNormalization(utils_1.getParamValue('x', node, tensorMap, context), utils_1.getParamValue('radius', node, tensorMap, context), utils_1.getParamValue('bias', node, tensorMap, context), utils_1.getParamValue('alpha', node, tensorMap, context), utils_1.getParamValue('beta', node, tensorMap, context))];\n        }\n        case 'softmax': {\n            return [tfc.softmax(utils_1.getParamValue('x', node, tensorMap, context))];\n        }\n        default:\n            throw TypeError(\"Node type \" + node.op + \" is not implemented\");\n    }\n};\nexports.CATEGORY = 'normalization';\n\n},{\"./utils\":33,\"@tensorflow/tfjs-core\":59}],30:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfc = require(\"@tensorflow/tfjs-core\");\nvar utils_1 = require(\"./utils\");\nexports.executeOp = function (node, tensorMap, context) {\n    switch (node.op) {\n        case 'max': {\n            var axis = utils_1.getParamValue('axis', node, tensorMap, context);\n            var keepDims = utils_1.getParamValue('keepDims', node, tensorMap, context);\n            return [tfc.max(utils_1.getParamValue('x', node, tensorMap, context), axis, keepDims)];\n        }\n        case 'mean': {\n            var axis = utils_1.getParamValue('axis', node, tensorMap, context);\n            var keepDims = utils_1.getParamValue('keepDims', node, tensorMap, context);\n            return [tfc.mean(utils_1.getParamValue('x', node, tensorMap, context), axis, keepDims)];\n        }\n        case 'min': {\n            var axis = utils_1.getParamValue('axis', node, tensorMap, context);\n            var keepDims = utils_1.getParamValue('keepDims', node, tensorMap, context);\n            return [tfc.min(utils_1.getParamValue('x', node, tensorMap, context), axis, keepDims)];\n        }\n        case 'sum': {\n            var axis = utils_1.getParamValue('axis', node, tensorMap, context);\n            var keepDims = utils_1.getParamValue('keepDims', node, tensorMap, context);\n            return [tfc.sum(utils_1.getParamValue('x', node, tensorMap, context), axis, keepDims)];\n        }\n        case 'all': {\n            var axis = utils_1.getParamValue('axis', node, tensorMap, context);\n            var keepDims = utils_1.getParamValue('keepDims', node, tensorMap, context);\n            return [tfc.all(utils_1.getParamValue('x', node, tensorMap, context), axis, keepDims)];\n        }\n        case 'any': {\n            var axis = utils_1.getParamValue('axis', node, tensorMap, context);\n            var keepDims = utils_1.getParamValue('keepDims', node, tensorMap, context);\n            return [tfc.any(utils_1.getParamValue('x', node, tensorMap, context), axis, keepDims)];\n        }\n        case 'argMax': {\n            var axis = utils_1.getParamValue('axis', node, tensorMap, context);\n            return [tfc.argMax(utils_1.getParamValue('x', node, tensorMap, context), axis)];\n        }\n        case 'argMin': {\n            var axis = utils_1.getParamValue('axis', node, tensorMap, context);\n            return [tfc.argMin(utils_1.getParamValue('x', node, tensorMap, context), axis)];\n        }\n        default:\n            throw TypeError(\"Node type \" + node.op + \" is not implemented\");\n    }\n};\nexports.CATEGORY = 'reduction';\n\n},{\"./utils\":33,\"@tensorflow/tfjs-core\":59}],31:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfc = require(\"@tensorflow/tfjs-core\");\nvar utils_1 = require(\"./utils\");\nexports.executeOp = function (node, tensorMap, context) {\n    switch (node.op) {\n        case 'concat': {\n            var axis = utils_1.getParamValue('axis', node, tensorMap, context);\n            var inputs = utils_1.getParamValue('tensors', node, tensorMap, context);\n            return [tfc.concat(inputs, axis)];\n        }\n        case 'gather': {\n            var axis = utils_1.getParamValue('axis', node, tensorMap, context);\n            var input = utils_1.getParamValue('x', node, tensorMap, context);\n            var indices = utils_1.getParamValue('indices', node, tensorMap, context);\n            return [tfc.gather(input, indices, axis)];\n        }\n        case 'reverse': {\n            var axis = utils_1.getParamValue('axis', node, tensorMap, context);\n            var input = utils_1.getParamValue('x', node, tensorMap, context);\n            return [tfc.reverse(input, axis)];\n        }\n        case 'slice': {\n            var begin = utils_1.getParamValue('begin', node, tensorMap, context);\n            var size = utils_1.getParamValue('size', node, tensorMap, context);\n            return [tfc.slice(utils_1.getParamValue('x', node, tensorMap, context), begin, size)];\n        }\n        case 'stridedSlice': {\n            var begin = utils_1.getParamValue('begin', node, tensorMap, context);\n            var end = utils_1.getParamValue('end', node, tensorMap, context);\n            var strides = utils_1.getParamValue('strides', node, tensorMap, context);\n            var beginMask = utils_1.getParamValue('beginMask', node, tensorMap, context);\n            var endMask = utils_1.getParamValue('endMask', node, tensorMap, context);\n            var tensor = utils_1.getParamValue('x', node, tensorMap, context);\n            if (begin.length === 1 && tensor.shape.length > 1) {\n                for (var i = 1; i < tensor.shape.length; i++) {\n                    begin.push(0);\n                    end.push(tensor.shape[i]);\n                    strides.push(strides[0]);\n                }\n            }\n            return [tfc.stridedSlice(tensor, begin, end, strides, beginMask, endMask)];\n        }\n        case 'stack': {\n            return tfc.tidy(function () {\n                var axis = utils_1.getParamValue('axis', node, tensorMap, context);\n                var tensors = utils_1.getParamValue('tensors', node, tensorMap, context);\n                var shape = tensors[0].shape;\n                var squeezedShape = tensors[0].squeeze().shape;\n                var mapped = tensors.map(function (tensor) {\n                    var sameShape = tfc.util.arraysEqual(tensor.shape, shape);\n                    if (!sameShape &&\n                        !tfc.util.arraysEqual(tensor.squeeze().shape, squeezedShape)) {\n                        throw new Error('the input tensors shape does not match');\n                    }\n                    return sameShape ? tensor : tensor.reshape(shape);\n                });\n                return [tfc.stack(mapped, axis)];\n            });\n        }\n        case 'unstack': {\n            return tfc.tidy(function () {\n                var axis = utils_1.getParamValue('axis', node, tensorMap, context);\n                var tensor = utils_1.getParamValue('tensor', node, tensorMap, context);\n                return tfc.unstack(tensor, axis);\n            });\n        }\n        case 'tile': {\n            var reps = utils_1.getParamValue('reps', node, tensorMap, context);\n            return [tfc.tile(utils_1.getParamValue('x', node, tensorMap, context), reps)];\n        }\n        case 'split': {\n            var axis = utils_1.getParamValue('axis', node, tensorMap, context);\n            var numOrSizeSplits = utils_1.getParamValue('numOrSizeSplits', node, tensorMap, context);\n            return tfc.split(utils_1.getParamValue('x', node, tensorMap, context), numOrSizeSplits, axis);\n        }\n        default:\n            throw TypeError(\"Node type \" + node.op + \" is not implemented\");\n    }\n};\nexports.CATEGORY = 'slice_join';\n\n},{\"./utils\":33,\"@tensorflow/tfjs-core\":59}],32:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfc = require(\"@tensorflow/tfjs-core\");\nvar utils_1 = require(\"./utils\");\nexports.executeOp = function (node, tensorMap, context) {\n    switch (node.op) {\n        case 'cast': {\n            return [tfc.cast(utils_1.getParamValue('x', node, tensorMap, context), utils_1.getParamValue('dtype', node, tensorMap, context))];\n        }\n        case 'expandDims': {\n            var axis = node.params['axis'].value;\n            return [tfc.expandDims(utils_1.getParamValue('x', node, tensorMap, context), axis)];\n        }\n        case 'squeeze': {\n            var axis = node.params['axis'].value;\n            return [tfc.squeeze(utils_1.getParamValue('x', node, tensorMap, context), axis)];\n        }\n        case 'reshape': {\n            return [tfc.reshape(utils_1.getParamValue('x', node, tensorMap, context), utils_1.getParamValue('shape', node, tensorMap, context))];\n        }\n        case 'pad': {\n            return [tfc.pad(utils_1.getParamValue('x', node, tensorMap, context), utils_1.split(utils_1.getParamValue('padding', node, tensorMap, context), 2), utils_1.getParamValue('constantValue', node, tensorMap, context))];\n        }\n        case 'spaceToBatchND': {\n            var blockShape = utils_1.getParamValue('blockShape', node, tensorMap, context);\n            var paddings = utils_1.split(utils_1.getParamValue('paddings', node, tensorMap, context), 2);\n            return [tfc.spaceToBatchND(utils_1.getParamValue('x', node, tensorMap, context), blockShape, paddings)];\n        }\n        case 'batchToSpaceND': {\n            var blockShape = utils_1.getParamValue('blockShape', node, tensorMap, context);\n            var crops = utils_1.split(utils_1.getParamValue('crops', node, tensorMap, context), 2);\n            return [tfc.batchToSpaceND(utils_1.getParamValue('x', node, tensorMap, context), blockShape, crops)];\n        }\n        default:\n            throw TypeError(\"Node type \" + node.op + \" is not implemented\");\n    }\n};\nexports.CATEGORY = 'transformation';\n\n},{\"./utils\":33,\"@tensorflow/tfjs-core\":59}],33:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction getParamValue(paramName, node, tensorMap, context) {\n    var param = node.params[paramName];\n    if (param && param.inputIndex !== undefined) {\n        if (param.type === 'tensor') {\n            return getTensor(node.inputNames[param.inputIndex], tensorMap, context);\n        }\n        if (param.type === 'tensors') {\n            var inputs = param.inputIndex === 0 ?\n                (param.inputParamLength === 0 ?\n                    node.inputNames :\n                    node.inputNames.slice(param.inputIndex, -param.inputParamLength)) :\n                node.inputNames.splice(param.inputIndex);\n            return inputs.map(function (name) { return getTensor(name, tensorMap, context); });\n        }\n        var data = Array.prototype.slice.call(getTensor(node.inputNames.slice(param.inputIndex)[0], tensorMap, context)\n            .dataSync());\n        return param.type === 'number' ? data[0] : data;\n    }\n    return param && param.value;\n}\nexports.getParamValue = getParamValue;\nfunction getTensor(name, tensorsMap, context) {\n    var _a = parseNodeName(name), nodeName = _a[0], index = _a[1];\n    var contextId = context.currentContextIds.find(function (contextId) {\n        return !!tensorsMap[getNodeNameWithContextId(nodeName, contextId)];\n    });\n    return contextId !== undefined ?\n        tensorsMap[getNodeNameWithContextId(nodeName, contextId)][index] :\n        undefined;\n}\nexports.getTensor = getTensor;\nfunction getNodeNameAndIndex(inputName, context) {\n    var _a = parseNodeName(inputName), nodeName = _a[0], index = _a[1];\n    return [\n        getNodeNameWithContextId(nodeName, context && context.currentContextId),\n        index\n    ];\n}\nexports.getNodeNameAndIndex = getNodeNameAndIndex;\nfunction getNodeNameWithContextId(name, contextId) {\n    return !!contextId ? name + \"-\" + contextId : name;\n}\nfunction parseNodeName(name) {\n    var index = name.lastIndexOf(':');\n    if (index === -1)\n        return [name, 0];\n    var nodeName = name.substring(0, index);\n    return [nodeName, Number(name.substring(index + 1))];\n}\nexports.parseNodeName = parseNodeName;\nfunction split(arr, size) {\n    var res = [];\n    for (var i = 0; i < arr.length; i += size) {\n        res.push(arr.slice(i, i + size));\n    }\n    return res;\n}\nexports.split = split;\n\n},{}],34:[function(require,module,exports){\nmodule.exports=[\n  {\n    \"tfOpName\": \"Add\",\n    \"dlOpName\": \"add\",\n    \"category\": \"arithmetic\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"a\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"b\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"BiasAdd\",\n    \"dlOpName\": \"add\",\n    \"category\": \"arithmetic\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"a\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"b\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Sub\",\n    \"dlOpName\": \"sub\",\n    \"category\": \"arithmetic\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"a\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"b\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"RealDiv\",\n    \"dlOpName\": \"div\",\n    \"category\": \"arithmetic\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"a\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"b\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Div\",\n    \"dlOpName\": \"div\",\n    \"category\": \"arithmetic\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"a\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"b\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"FloorDiv\",\n    \"dlOpName\": \"floorDiv\",\n    \"category\": \"arithmetic\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"a\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"b\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Mul\",\n    \"dlOpName\": \"mul\",\n    \"category\": \"arithmetic\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"a\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"b\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Maximum\",\n    \"dlOpName\": \"maximum\",\n    \"category\": \"arithmetic\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"a\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"b\",\n        \"type\": \"tensor\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Minimum\",\n    \"dlOpName\": \"minimum\",\n    \"category\": \"arithmetic\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"a\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"b\",\n        \"type\": \"tensor\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Pow\",\n    \"dlOpName\": \"pow\",\n    \"category\": \"arithmetic\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"a\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"b\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"SquaredDifference\",\n    \"dlOpName\": \"squaredDifference\",\n    \"category\": \"arithmetic\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"a\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"b\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Mod\",\n    \"dlOpName\": \"mod\",\n    \"category\": \"arithmetic\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"a\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"b\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  }\n]\n\n},{}],35:[function(require,module,exports){\nmodule.exports=[\n  {\n    \"tfOpName\": \"Abs\",\n    \"dlOpName\": \"abs\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Acos\",\n    \"dlOpName\": \"acos\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Asin\",\n    \"dlOpName\": \"asin\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"atan\",\n    \"dlOpName\": \"atan\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Ceil\",\n    \"dlOpName\": \"ceil\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"ClipByValue\",\n    \"dlOpName\": \"clipByValue\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"clip_value_min\",\n        \"dlParamName\": \"clipValueMin\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfParamName\": \"clip_value_max\",\n        \"dlParamName\": \"clipValueMax\",\n        \"type\": \"number\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Cos\",\n    \"dlOpName\": \"cos\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Cosh\",\n    \"dlOpName\": \"cosh\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Elu\",\n    \"dlOpName\": \"elu\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Exp\",\n    \"dlOpName\": \"exp\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Floor\",\n    \"dlOpName\": \"floor\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Log\",\n    \"dlOpName\": \"log\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Neg\",\n    \"dlOpName\": \"neg\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Relu\",\n    \"dlOpName\": \"relu\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Relu6\",\n    \"dlOpName\": \"clipByValue\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      },\n      {\n        \"dlParamName\": \"clipValueMin\",\n        \"type\": \"number\",\n        \"defaultValue\": 0\n      },\n      {\n        \"dlParamName\": \"clipValueMax\",\n        \"type\": \"number\",\n        \"defaultValue\": 6\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Selu\",\n    \"dlOpName\": \"selu\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Sigmoid\",\n    \"dlOpName\": \"sigmoid\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Sin\",\n    \"dlOpName\": \"sin\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Sinh\",\n    \"dlOpName\": \"sinh\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Sqrt\",\n    \"dlOpName\": \"sqrt\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Rsqrt\",\n    \"dlOpName\": \"rsqrt\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Square\",\n    \"dlOpName\": \"square\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Tan\",\n    \"dlOpName\": \"tan\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Tanh\",\n    \"dlOpName\": \"tanh\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Sign\",\n    \"dlOpName\": \"sign\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Round\",\n    \"dlOpName\": \"round\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Expm1\",\n    \"dlOpName\": \"expm1\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Log1p\",\n    \"dlOpName\": \"log1p\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Reciprocal\",\n    \"dlOpName\": \"reciprocal\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Reciprocal\",\n    \"dlOpName\": \"reciprocal\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Softplus\",\n    \"dlOpName\": \"softplus\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Asinh\",\n    \"dlOpName\": \"asinh\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Acosh\",\n    \"dlOpName\": \"acosh\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Atanh\",\n    \"dlOpName\": \"atanh\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Erf\",\n    \"dlOpName\": \"erf\",\n    \"category\": \"basic_math\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  }\n]\n\n},{}],36:[function(require,module,exports){\nmodule.exports=[\n  {\n    \"tfOpName\": \"LoopCond\",\n    \"dlOpName\": \"loopCond\",\n    \"category\": \"control\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"pred\",\n        \"type\": \"tensor\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Switch\",\n    \"dlOpName\": \"switch\",\n    \"category\": \"control\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"data\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"pred\",\n        \"type\": \"tensor\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Merge\",\n    \"dlOpName\": \"merge\",\n    \"category\": \"control\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"tfInputParamLength\": 0,\n        \"dlParamName\": \"tensors\",\n        \"type\": \"tensors\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Enter\",\n    \"dlOpName\": \"enter\",\n    \"category\": \"control\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"tensor\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      },\n      {\n        \"tfParamName\": \"frame_name\",\n        \"dlParamName\": \"frameName\",\n        \"type\": \"string\"\n      },\n      {\n        \"tfParamName\": \"is_constant\",\n        \"dlParamName\": \"isConstant\",\n        \"type\": \"bool\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Exit\",\n    \"dlOpName\": \"exit\",\n    \"category\": \"control\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"tensor\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"NextIteration\",\n    \"dlOpName\": \"nextIteration\",\n    \"category\": \"control\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"tensor\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"TensorArrayV3\",\n    \"dlOpName\": \"tensorArray\",\n    \"category\": \"control\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"size\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfParamName\": \"dtype\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\"\n      },\n      {\n        \"tfParamName\": \"element_shape\",\n        \"dlParamName\": \"elementShape\",\n        \"type\": \"shape\"\n      },\n      {\n        \"tfParamName\": \"dynamic_size\",\n        \"dlParamName\": \"dynamicSize\",\n        \"type\": \"bool\"\n      },\n      {\n        \"tfParamName\": \"clear_after_read\",\n        \"dlParamName\": \"clearAfterRead\",\n        \"type\": \"bool\"\n      },\n      {\n        \"tfParamName\": \"identical_element_shapes\",\n        \"dlParamName\": \"identicalElementShapes\",\n        \"type\": \"bool\"\n      },\n      {\n        \"tfParamName\": \"tensor_array_name\",\n        \"dlParamName\": \"name\",\n        \"type\": \"string\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"TensorArrayWriteV3\",\n    \"dlOpName\": \"tensorArrayWrite\",\n    \"category\": \"control\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"tensorArrayId\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"index\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfInputIndex\": 2,\n        \"dlParamName\": \"tensor\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 3,\n        \"dlParamName\": \"flowIn\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"TensorArrayReadV3\",\n    \"dlOpName\": \"tensorArrayRead\",\n    \"category\": \"control\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"tensorArrayId\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"index\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfInputIndex\": 2,\n        \"dlParamName\": \"flowIn\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfParamName\": \"dtype\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"TensorArrayGatherV3\",\n    \"dlOpName\": \"tensorArrayGather\",\n    \"category\": \"control\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"tensorArrayId\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"indices\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfInputIndex\": 2,\n        \"dlParamName\": \"flowIn\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfParamName\": \"dtype\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\"\n      },\n      {\n        \"tfParamName\": \"element_shape\",\n        \"dlParamName\": \"elementShape\",\n        \"type\": \"shape\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"TensorArrayScatterV3\",\n    \"dlOpName\": \"tensorArrayScatter\",\n    \"category\": \"control\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"tensorArrayId\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"indices\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfInputIndex\": 2,\n        \"dlParamName\": \"tensor\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfInputIndex\": 3,\n        \"dlParamName\": \"flowIn\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"TensorArrayConcatV3\",\n    \"dlOpName\": \"tensorArrayConcat\",\n    \"category\": \"control\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"tensorArrayId\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"flowIn\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfParamName\": \"dtype\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\"\n      },\n      {\n        \"tfParamName\": \"element_shape_except0\",\n        \"dlParamName\": \"elementShapeExcept0\",\n        \"type\": \"shape\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"TensorArraySplitV3\",\n    \"dlOpName\": \"tensorArraySplit\",\n    \"category\": \"control\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"tensorArrayId\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"tensor\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 2,\n        \"dlParamName\": \"lengths\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfInputIndex\": 3,\n        \"dlParamName\": \"flowIn\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"TensorArraySizeV3\",\n    \"dlOpName\": \"tensorArraySize\",\n    \"category\": \"control\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"tensorArrayId\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"flowIn\",\n        \"type\": \"number\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"TensorArrayCloseV3\",\n    \"dlOpName\": \"tensorArrayClose\",\n    \"category\": \"control\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"tensorArrayId\",\n        \"type\": \"number\"\n      }\n    ]\n  }\n]\n\n},{}],37:[function(require,module,exports){\nmodule.exports=[\n  {\n    \"tfOpName\": \"AvgPool\",\n    \"dlOpName\": \"avgPool\",\n    \"category\": \"convolution\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"strides\",\n        \"dlParamName\": \"strides\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfParamName\": \"padding\",\n        \"dlParamName\": \"pad\",\n        \"type\": \"string\"\n      },\n      {\n        \"tfParamName\": \"data_format\",\n        \"dlParamName\": \"dataFormat\",\n        \"type\": \"string\",\n        \"notSupported\": true\n      },\n      {\n        \"tfParamName\": \"ksize\",\n        \"dlParamName\": \"kernelSize\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"MaxPool\",\n    \"dlOpName\": \"maxPool\",\n    \"category\": \"convolution\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"strides\",\n        \"dlParamName\": \"strides\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfParamName\": \"padding\",\n        \"dlParamName\": \"pad\",\n        \"type\": \"string\"\n      },\n      {\n        \"tfParamName\": \"data_format\",\n        \"dlParamName\": \"dataFormat\",\n        \"type\": \"string\",\n        \"notSupported\": true\n      },\n      {\n        \"tfParamName\": \"ksize\",\n        \"dlParamName\": \"kernelSize\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Conv1D\",\n    \"dlOpName\": \"conv1d\",\n    \"category\": \"convolution\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"filter\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"stride\",\n        \"dlParamName\": \"stride\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfParamName\": \"padding\",\n        \"dlParamName\": \"pad\",\n        \"type\": \"string\"\n      },\n      {\n        \"tfParamName\": \"data_format\",\n        \"dlParamName\": \"dataFormat\",\n        \"type\": \"string\",\n        \"defaultValue\": \"NWC\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      },\n      {\n        \"tfParamName\": \"dilation\",\n        \"dlParamName\": \"dilation\",\n        \"type\": \"number\",\n        \"defaultValue\": 1\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Conv2D\",\n    \"dlOpName\": \"conv2d\",\n    \"category\": \"convolution\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"filter\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      },\n      {\n        \"tfParamName\": \"strides\",\n        \"dlParamName\": \"strides\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfParamName\": \"padding\",\n        \"dlParamName\": \"pad\",\n        \"type\": \"string\"\n      },\n      {\n        \"tfParamName\": \"useCudnnOnGpu\",\n        \"dlParamName\": \"useCudnnOnGpu\",\n        \"type\": \"bool\"\n      },\n      {\n        \"tfParamName\": \"data_format\",\n        \"dlParamName\": \"dataFormat\",\n        \"type\": \"string\",\n        \"defaultValue\": \"NHWC\"\n      },\n      {\n        \"tfParamName\": \"dilations\",\n        \"dlParamName\": \"dilations\",\n        \"type\": \"number[]\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Conv2DBackpropInput\",\n    \"dlOpName\": \"conv2dTranspose\",\n    \"category\": \"convolution\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 2,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"filter\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"outputShape\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfParamName\": \"strides\",\n        \"dlParamName\": \"strides\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfParamName\": \"padding\",\n        \"dlParamName\": \"pad\",\n        \"type\": \"string\"\n      },\n      {\n        \"tfParamName\": \"data_format\",\n        \"dlParamName\": \"dataFormat\",\n        \"type\": \"string\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"DepthwiseConv2d\",\n    \"dlOpName\": \"depthwiseConv2d\",\n    \"category\": \"convolution\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"input\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"filter\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"strides\",\n        \"dlParamName\": \"strides\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfParamName\": \"padding\",\n        \"dlParamName\": \"pad\",\n        \"type\": \"string\"\n      },\n      {\n        \"tfParamName\": \"data_format\",\n        \"dlParamName\": \"dataFormat\",\n        \"type\": \"string\",\n        \"defaultValue\": \"NHWC\"\n      },\n      {\n        \"tfParamName\": \"dilations\",\n        \"dlParamName\": \"dilations\",\n        \"type\": \"number[]\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"DepthwiseConv2dNative\",\n    \"dlOpName\": \"depthwiseConv2d\",\n    \"category\": \"convolution\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"input\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"filter\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"strides\",\n        \"dlParamName\": \"strides\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfParamName\": \"padding\",\n        \"dlParamName\": \"pad\",\n        \"type\": \"string\"\n      },\n      {\n        \"tfParamName\": \"data_format\",\n        \"dlParamName\": \"dataFormat\",\n        \"type\": \"string\",\n        \"defaultValue\": \"NHWC\"\n      },\n      {\n        \"tfParamName\": \"dilations\",\n        \"dlParamName\": \"dilations\",\n        \"type\": \"number[]\"\n      }\n    ]\n  }\n]\n\n},{}],38:[function(require,module,exports){\nmodule.exports=[\n  {\n    \"tfOpName\": \"Fill\",\n    \"dlOpName\": \"fill\",\n    \"category\": \"creation\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"shape\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"value\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"LinSpace\",\n    \"dlOpName\": \"linspace\",\n    \"category\": \"creation\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"start\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"stop\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfInputIndex\": 2,\n        \"dlParamName\": \"num\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"OneHot\",\n    \"dlOpName\": \"oneHot\",\n    \"category\": \"creation\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"indices\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"depth\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfInputIndex\": 2,\n        \"dlParamName\": \"onValue\",\n        \"type\": \"number\",\n        \"defaultValue\": 1\n      },\n      {\n        \"tfInputIndex\": 3,\n        \"dlParamName\": \"offValue\",\n        \"type\": \"number\",\n        \"defaultValue\": 0\n      },\n      {\n        \"tfParamName\": \"axis\",\n        \"dlParamName\": \"axis\",\n        \"type\": \"number\",\n        \"notSupported\": true\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Ones\",\n    \"dlOpName\": \"ones\",\n    \"category\": \"creation\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"shape\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"OnesLike\",\n    \"dlOpName\": \"onesLike\",\n    \"category\": \"creation\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"dtype\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"RandomUniform\",\n    \"dlOpName\": \"randomUniform\",\n    \"category\": \"creation\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"shape\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfParamName\": \"minval\",\n        \"dlParamName\": \"minval\",\n        \"type\": \"number\",\n        \"defaultValue\": 0\n      },\n      {\n        \"tfParamName\": \"maxval\",\n        \"dlParamName\": \"maxval\",\n        \"type\": \"number\",\n        \"defaultValue\": 1\n      },\n      {\n        \"tfParamName\": \"dtype\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\"\n      },\n      {\n        \"tfParamName\": \"seed\",\n        \"dlParamName\": \"seed\",\n        \"type\": \"number\",\n        \"defaultValue\": 0\n      },\n      {\n        \"tfParamName\": \"seed2\",\n        \"dlParamName\": \"seed2\",\n        \"type\": \"number\",\n        \"defaultValue\": 0,\n        \"notSupported\": true\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"T\",\n        \"type\": \"number\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Range\",\n    \"dlOpName\": \"range\",\n    \"category\": \"creation\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"start\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"stop\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfInputIndex\": 2,\n        \"dlParamName\": \"step\",\n        \"type\": \"number\",\n        \"defaultValue\": 0\n      },\n      {\n        \"tfParamName\": \"Tidx\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"truncatedNormal\",\n    \"dlOpName\": \"truncatedNormal\",\n    \"category\": \"creation\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"shape\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfParamName\": \"means\",\n        \"dlParamName\": \"mean\",\n        \"type\": \"number\",\n        \"defaultValue\": 0.0\n      },\n      {\n        \"tfParamName\": \"stddev\",\n        \"dlParamName\": \"stdDev\",\n        \"type\": \"number\",\n        \"defaultValue\": 1.0\n      },\n      {\n        \"tfParamName\": \"seed\",\n        \"dlParamName\": \"seed\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfParamName\": \"seed2\",\n        \"dlParamName\": \"seed2\",\n        \"type\": \"number\",\n        \"defaultValue\": 0,\n        \"notSupported\": true\n      },\n      {\n        \"tfParamName\": \"dtype\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"T\",\n        \"type\": \"number\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Zeros\",\n    \"dlOpName\": \"zeros\",\n    \"category\": \"creation\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"shape\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"ZerosLike\",\n    \"dlOpName\": \"zerosLike\",\n    \"category\": \"creation\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\"\n      }\n    ]\n  }\n]\n\n},{}],39:[function(require,module,exports){\nmodule.exports=[\n  {\n    \"tfOpName\": \"NonMaxSuppressionV2\",\n    \"dlOpName\": \"nonMaxSuppression\",\n    \"category\": \"dynamic\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"boxes\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"scores\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 2,\n        \"dlParamName\": \"maxOutputSize\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfInputIndex\": 3,\n        \"dlParamName\": \"iouThreshold\",\n        \"type\": \"number\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"NonMaxSuppressionV3\",\n    \"dlOpName\": \"nonMaxSuppression\",\n    \"category\": \"dynamic\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"boxes\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"scores\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 2,\n        \"dlParamName\": \"maxOutputSize\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfInputIndex\": 3,\n        \"dlParamName\": \"iouThreshold\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfInputIndex\": 4,\n        \"dlParamName\": \"scoreThreshold\",\n        \"type\": \"number\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Where\",\n    \"dlOpName\": \"whereAsync\",\n    \"category\": \"dynamic\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"condition\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  }\n]\n\n},{}],40:[function(require,module,exports){\nmodule.exports=[\n  {\n    \"tfOpName\": \"TopKV2\",\n    \"dlOpName\": \"topK\",\n    \"category\": \"evaluation\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"k\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfParamName\": \"sorted\",\n        \"dlParamName\": \"sorted\",\n        \"type\": \"bool\"\n      }\n    ]\n  }\n]\n\n},{}],41:[function(require,module,exports){\nmodule.exports=[\n  {\n    \"tfOpName\": \"PlaceholderWithDefault\",\n    \"dlOpName\": \"placeholder\",\n    \"category\": \"graph\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"default\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"shape\",\n        \"dlParamName\": \"shape\",\n        \"type\": \"shape\"\n      },\n      {\n        \"tfParamName\": \"dtype\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Placeholder\",\n    \"dlOpName\": \"placeholder\",\n    \"category\": \"graph\",\n    \"params\": [\n      {\n        \"tfParamName\": \"shape\",\n        \"dlParamName\": \"shape\",\n        \"type\": \"shape\"\n      },\n      {\n        \"tfParamName\": \"dtype\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Const\",\n    \"dlOpName\": \"const\",\n    \"category\": \"graph\"\n  },\n  {\n    \"tfOpName\": \"Identity\",\n    \"dlOpName\": \"identity\",\n    \"category\": \"graph\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Snapshot\",\n    \"dlOpName\": \"snapshot\",\n    \"category\": \"graph\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Rank\",\n    \"dlOpName\": \"rank\",\n    \"category\": \"graph\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Size\",\n    \"dlOpName\": \"size\",\n    \"category\": \"graph\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Shape\",\n    \"dlOpName\": \"shape\",\n    \"category\": \"graph\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Print\",\n    \"dlOpName\": \"print\",\n    \"category\": \"graph\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"tfInputParamLength\": 1,\n        \"dlParamName\": \"data\",\n        \"type\": \"tensors\"\n      },\n      {\n        \"tfParamName\": \"message\",\n        \"dlParamName\": \"message\",\n        \"type\": \"string\"\n      },\n      {\n        \"tfParamName\": \"first_n\",\n        \"dlParamName\": \"firstN\",\n        \"type\": \"number\",\n        \"notSupprted\": true\n      },\n      {\n        \"tfParamName\": \"summarize\",\n        \"dlParamName\": \"summarize\",\n        \"type\": \"number\",\n        \"defaultValue\": 3\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"NoOp\",\n    \"dlOpName\": \"noop\",\n    \"category\": \"graph\",\n    \"params\": []\n  },\n  {\n    \"tfOpName\": \"StopGradient\",\n    \"dlOpName\": \"stopGradient\",\n    \"category\": \"graph\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"FakeQuantWithMinMaxVars\",\n    \"dlOpName\": \"fakeQuantWithMinMaxVars\",\n    \"category\": \"graph\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"min\",\n        \"dlParamName\": \"min\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfParamName\": \"max\",\n        \"dlParamName\": \"max\",\n        \"type\": \"number\"\n      }\n    ]\n  }\n]\n\n},{}],42:[function(require,module,exports){\nmodule.exports=[\n  {\n    \"tfOpName\": \"ResizeBilinear\",\n    \"dlOpName\": \"resizeBilinear\",\n    \"category\": \"image\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"images\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"size\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfParamName\": \"align_corners\",\n        \"dlParamName\": \"alignCorners\",\n        \"type\": \"bool\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"ResizeNearestNeighbor\",\n    \"dlOpName\": \"resizeNearestNeighbor\",\n    \"category\": \"image\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"images\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"size\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfParamName\": \"align_corners\",\n        \"dlParamName\": \"alignCorners\",\n        \"type\": \"bool\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"NonMaxSuppressionV2\",\n    \"dlOpName\": \"nonMaxSuppression\",\n    \"category\": \"image\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"boxes\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"scores\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 2,\n        \"dlParamName\": \"maxOutputSize\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfInputIndex\": 3,\n        \"dlParamName\": \"iouThreshold\",\n        \"type\": \"number\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"NonMaxSuppressionV3\",\n    \"dlOpName\": \"nonMaxSuppression\",\n    \"category\": \"image\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"boxes\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"scores\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 2,\n        \"dlParamName\": \"maxOutputSize\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfInputIndex\": 3,\n        \"dlParamName\": \"iouThreshold\",\n        \"type\": \"number\"\n      },\n      {\n        \"tfInputIndex\": 4,\n        \"dlParamName\": \"scoreThreshold\",\n        \"type\": \"number\"\n      }\n    ]\n  }\n]\n\n},{}],43:[function(require,module,exports){\nmodule.exports=[\n  {\n    \"tfOpName\": \"Equal\",\n    \"dlOpName\": \"equal\",\n    \"category\": \"logical\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"a\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"b\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"NotEqual\",\n    \"dlOpName\": \"notEqual\",\n    \"category\": \"logical\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"a\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"b\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Greater\",\n    \"dlOpName\": \"greater\",\n    \"category\": \"logical\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"a\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"b\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"GreaterEqual\",\n    \"dlOpName\": \"greaterEqual\",\n    \"category\": \"logical\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"a\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"b\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Less\",\n    \"dlOpName\": \"less\",\n    \"category\": \"logical\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"a\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"b\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"LessEqual\",\n    \"dlOpName\": \"lessEqual\",\n    \"category\": \"logical\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"a\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"b\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"LogicalAnd\",\n    \"dlOpName\": \"logicalAnd\",\n    \"category\": \"logical\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"a\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"b\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"LogicalNot\",\n    \"dlOpName\": \"logicalNot\",\n    \"category\": \"logical\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"a\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"LogicalOr\",\n    \"dlOpName\": \"logicalOr\",\n    \"category\": \"logical\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"a\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"b\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Select\",\n    \"dlOpName\": \"where\",\n    \"category\": \"logical\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"condition\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"a\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 2,\n        \"dlParamName\": \"b\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  }\n]\n\n},{}],44:[function(require,module,exports){\nmodule.exports=[\n  {\n    \"tfOpName\": \"MatMul\",\n    \"dlOpName\": \"matMul\",\n    \"category\": \"matrices\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"a\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"b\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"transpose_a\",\n        \"dlParamName\": \"transposeA\",\n        \"type\": \"bool\",\n        \"defaultValue\": false\n      },\n      {\n        \"tfParamName\": \"transpose_b\",\n        \"dlParamName\": \"transposeB\",\n        \"type\": \"bool\",\n        \"defaultValue\": false\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Transpose\",\n    \"dlOpName\": \"transpose\",\n    \"category\": \"matrices\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"perm\",\n        \"dlParamName\": \"perm\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfParamName\": \"T\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      }\n    ]\n  }\n]\n\n},{}],45:[function(require,module,exports){\nmodule.exports=[\n  {\n    \"tfOpName\": \"FusedBatchNorm\",\n    \"dlOpName\": \"batchNormalization\",\n    \"category\": \"normalization\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"scale\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 2,\n        \"dlParamName\": \"offset\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 3,\n        \"dlParamName\": \"mean\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 4,\n        \"dlParamName\": \"variance\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"epsilon\",\n        \"dlParamName\": \"epsilon\",\n        \"type\": \"number\",\n        \"defaultValue\": 0.001\n      },\n      {\n        \"tfParamName\": \"data_format\",\n        \"dlParamName\": \"dataFormat\",\n        \"type\": \"string\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"FusedBatchNormV2\",\n    \"dlOpName\": \"batchNormalization\",\n    \"category\": \"normalization\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"scale\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 2,\n        \"dlParamName\": \"offset\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 3,\n        \"dlParamName\": \"mean\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 4,\n        \"dlParamName\": \"variance\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"epsilon\",\n        \"dlParamName\": \"epsilon\",\n        \"type\": \"number\",\n        \"defaultValue\": 0.001\n      },\n      {\n        \"tfParamName\": \"data_format\",\n        \"dlParamName\": \"dataFormat\",\n        \"type\": \"string\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"LRN\",\n    \"dlOpName\": \"localResponseNormalization\",\n    \"category\": \"normalization\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"depth_radius\",\n        \"dlParamName\": \"radius\",\n        \"type\": \"number\",\n        \"defaultValue\": 5\n      },\n      {\n        \"tfParamName\": \"bias\",\n        \"dlParamName\": \"bias\",\n        \"type\": \"number\",\n        \"defaultValue\": 1.0\n      },\n      {\n        \"tfParamName\": \"alpha\",\n        \"dlParamName\": \"alpha\",\n        \"type\": \"number\",\n        \"defaultValue\": 1.0\n      },\n      {\n        \"tfParamName\": \"beta\",\n        \"dlParamName\": \"beta\",\n        \"type\": \"number\",\n        \"defaultValue\": 0.5\n      }\n    ]\n  },  {\n    \"tfOpName\": \"Softmax\",\n    \"dlOpName\": \"softmax\",\n    \"category\": \"normalization\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      }\n    ]\n  }\n]\n\n},{}],46:[function(require,module,exports){\nmodule.exports=[\n  {\n    \"tfOpName\": \"Max\",\n    \"dlOpName\": \"max\",\n    \"category\": \"reduction\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"axis\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfParamName\": \"keep_dims\",\n        \"dlParamName\": \"keepDims\",\n        \"type\": \"bool\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Mean\",\n    \"dlOpName\": \"mean\",\n    \"category\": \"reduction\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"axis\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfParamName\": \"keep_dims\",\n        \"dlParamName\": \"keepDims\",\n        \"type\": \"bool\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Min\",\n    \"dlOpName\": \"min\",\n    \"category\": \"reduction\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"axis\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfParamName\": \"keep_dims\",\n        \"dlParamName\": \"keepDims\",\n        \"type\": \"bool\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Sum\",\n    \"dlOpName\": \"sum\",\n    \"category\": \"reduction\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"axis\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfParamName\": \"keep_dims\",\n        \"dlParamName\": \"keepDims\",\n        \"type\": \"bool\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"All\",\n    \"dlOpName\": \"all\",\n    \"category\": \"reduction\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"axis\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfParamName\": \"keep_dims\",\n        \"dlParamName\": \"keepDims\",\n        \"type\": \"bool\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Any\",\n    \"dlOpName\": \"any\",\n    \"category\": \"reduction\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"axis\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfParamName\": \"keep_dims\",\n        \"dlParamName\": \"keepDims\",\n        \"type\": \"bool\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"ArgMax\",\n    \"dlOpName\": \"argMax\",\n    \"category\": \"reduction\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"axis\",\n        \"type\": \"number\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"ArgMin\",\n    \"dlOpName\": \"argMin\",\n    \"category\": \"reduction\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"axis\",\n        \"type\": \"number\"\n      }\n    ]\n  }\n]\n\n},{}],47:[function(require,module,exports){\nmodule.exports=[\n  {\n    \"tfOpName\": \"ConcatV2\",\n    \"dlOpName\": \"concat\",\n    \"category\": \"slice_join\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"tfInputParamLength\": 1,\n        \"dlParamName\": \"tensors\",\n        \"type\": \"tensors\"\n      },\n      {\n        \"tfInputIndex\": -1,\n        \"dlParamName\": \"axis\",\n        \"type\": \"number\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Concat\",\n    \"dlOpName\": \"concat\",\n    \"category\": \"slice_join\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 1,\n        \"tfInputParamLength\": 1,\n        \"dlParamName\": \"tensors\",\n        \"type\": \"tensors\"\n      },\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"axis\",\n        \"type\": \"number\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"GatherV2\",\n    \"dlOpName\": \"gather\",\n    \"category\": \"slice_join\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"indices\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"axis\",\n        \"dlParamName\": \"axis\",\n        \"type\": \"number\",\n        \"defaultValue\": 0\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Gather\",\n    \"dlOpName\": \"gather\",\n    \"category\": \"slice_join\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"indices\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"axis\",\n        \"dlParamName\": \"axis\",\n        \"type\": \"number\",\n        \"defaultValue\": 0\n      },\n      {\n        \"tfParamName\": \"validate_indices\",\n        \"dlParamName\": \"validateIndices\",\n        \"type\": \"bool\",\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Reverse\",\n    \"dlOpName\": \"reverse\",\n    \"category\": \"slice_join\",\n    \"params\": [{\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"axis\",\n        \"type\": \"number\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"ReverseV2\",\n    \"dlOpName\": \"reverse\",\n    \"category\": \"slice_join\",\n    \"params\": [{\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"axis\",\n        \"type\": \"number\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Slice\",\n    \"dlOpName\": \"slice\",\n    \"category\": \"slice_join\",\n    \"params\": [{\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"begin\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfInputIndex\": 2,\n        \"dlParamName\": \"size\",\n        \"type\": \"number[]\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"StridedSlice\",\n    \"dlOpName\": \"stridedSlice\",\n    \"category\": \"slice_join\",\n    \"params\": [{\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"begin\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfInputIndex\": 2,\n        \"dlParamName\": \"end\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfInputIndex\": 3,\n        \"dlParamName\": \"strides\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfParamName\": \"begin_mask\",\n        \"dlParamName\": \"beginMask\",\n        \"type\": \"number\",\n        \"defaultValue\": 0\n      },\n      {\n        \"tfParamName\": \"end_mask\",\n        \"dlParamName\": \"endMask\",\n        \"type\": \"number\",\n        \"defaultValue\": 0\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Pack\",\n    \"dlOpName\": \"stack\",\n    \"category\": \"slice_join\",\n    \"params\": [{\n        \"tfInputIndex\": 0,\n        \"tfInputParamLength\": 0,\n        \"dlParamName\": \"tensors\",\n        \"type\": \"tensors\"\n      },\n      {\n        \"tfParamName\": \"axis\",\n        \"dlParamName\": \"axis\",\n        \"type\": \"number\",\n        \"defaultValue\": 0\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Unpack\",\n    \"dlOpName\": \"unstack\",\n    \"category\": \"slice_join\",\n    \"params\": [{\n        \"tfInputIndex\": 0,\n        \"tfInputParamLength\": 0,\n        \"dlParamName\": \"tensor\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"axis\",\n        \"dlParamName\": \"axis\",\n        \"type\": \"number\",\n        \"defaultValue\": 0\n      },\n      {\n        \"tfParamName\": \"num\",\n        \"dlParamName\": \"num\",\n        \"type\": \"number\",\n        \"defaultValue\": 0,\n        \"notSupported\": true\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Tile\",\n    \"dlOpName\": \"tile\",\n    \"category\": \"slice_join\",\n    \"params\": [{\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"reps\",\n        \"type\": \"number[]\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Split\",\n    \"dlOpName\": \"split\",\n    \"category\": \"slice_join\",\n    \"params\": [{\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"axis\",\n        \"type\": \"number\",\n        \"defaultValue\": 0\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"num_split\",\n        \"dlParamName\": \"numOrSizeSplits\",\n        \"type\": \"number\",\n        \"defaultValue\": 1\n      }\n    ]\n  }\n]\n\n},{}],48:[function(require,module,exports){\nmodule.exports=[\n  {\n    \"tfOpName\": \"Cast\",\n    \"dlOpName\": \"cast\",\n    \"category\": \"transformation\",\n    \"params\": [\n      {\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"SrcT\",\n        \"dlParamName\": \"sdtype\",\n        \"type\": \"dtype\",\n        \"notSupported\": true\n      },\n      {\n        \"tfParamName\": \"DstT\",\n        \"dlParamName\": \"dtype\",\n        \"type\": \"dtype\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"ExpandDims\",\n    \"dlOpName\": \"expandDims\",\n    \"category\": \"transformation\",\n    \"params\": [{\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"tfParamNameDeprecated\": \"dim\",\n        \"dlParamName\": \"axis\",\n        \"type\": \"number\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Pad\",\n    \"dlOpName\": \"pad\",\n    \"category\": \"transformation\",\n    \"params\": [{\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"padding\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfParamName\": \"constant_value\",\n        \"dlParamName\": \"constantValue\",\n        \"type\": \"number\",\n        \"defaultValue\": 0\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"PadV2\",\n    \"dlOpName\": \"pad\",\n    \"category\": \"transformation\",\n    \"params\": [{\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"padding\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfInputIndex\": 2,\n        \"dlParamName\": \"constantValue\",\n        \"type\": \"number\",\n        \"defaultValue\": 0\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Reshape\",\n    \"dlOpName\": \"reshape\",\n    \"category\": \"transformation\",\n    \"params\": [{\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"shape\",\n        \"type\": \"number[]\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"Squeeze\",\n    \"dlOpName\": \"squeeze\",\n    \"category\": \"transformation\",\n    \"params\": [{\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfParamName\": \"axis\",\n        \"tfParamNameDeprecated\": \"squeeze_dims\",\n        \"dlParamName\": \"axis\",\n        \"type\": \"number[]\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"SpaceToBatchND\",\n    \"dlOpName\": \"spaceToBatchND\",\n    \"category\": \"transformation\",\n    \"params\": [{\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"blockShape\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfInputIndex\": 2,\n        \"dlParamName\": \"paddings\",\n        \"type\": \"number[]\"\n      }\n    ]\n  },\n  {\n    \"tfOpName\": \"BatchToSpaceND\",\n    \"dlOpName\": \"batchToSpaceND\",\n    \"category\": \"transformation\",\n    \"params\": [{\n        \"tfInputIndex\": 0,\n        \"dlParamName\": \"x\",\n        \"type\": \"tensor\"\n      },\n      {\n        \"tfInputIndex\": 1,\n        \"dlParamName\": \"blockShape\",\n        \"type\": \"number[]\"\n      },\n      {\n        \"tfInputIndex\": 2,\n        \"dlParamName\": \"crops\",\n        \"type\": \"number[]\"\n      }\n    ]\n  }\n]\n\n},{}],49:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar arithmetic = require(\"./executors/arithmetic_executor\");\nvar basicMath = require(\"./executors/basic_math_executor\");\nvar control = require(\"./executors/control_executor\");\nvar convolution = require(\"./executors/convolution_executor\");\nvar creation = require(\"./executors/creation_executor\");\nvar dynamic = require(\"./executors/dynamic_executor\");\nvar evaluation = require(\"./executors/evaluation_executor\");\nvar graph = require(\"./executors/graph_executor\");\nvar image = require(\"./executors/image_executor\");\nvar logical = require(\"./executors/logical_executor\");\nvar matrices = require(\"./executors/matrices_executor\");\nvar normalization = require(\"./executors/normalization_executor\");\nvar reduction = require(\"./executors/reduction_executor\");\nvar sliceJoin = require(\"./executors/slice_join_executor\");\nvar transformation = require(\"./executors/transformation_executor\");\nfunction executeOp(node, tensorMap, context) {\n    switch (node.category) {\n        case 'arithmetic':\n            return arithmetic.executeOp(node, tensorMap, context);\n        case 'basic_math':\n            return basicMath.executeOp(node, tensorMap, context);\n        case 'control':\n            return control.executeOp(node, tensorMap, context);\n        case 'convolution':\n            return convolution.executeOp(node, tensorMap, context);\n        case 'creation':\n            return creation.executeOp(node, tensorMap, context);\n        case 'dynamic':\n            return dynamic.executeOp(node, tensorMap, context);\n        case 'evaluation':\n            return evaluation.executeOp(node, tensorMap, context);\n        case 'image':\n            return image.executeOp(node, tensorMap, context);\n        case 'graph':\n            return graph.executeOp(node, tensorMap, context);\n        case 'logical':\n            return logical.executeOp(node, tensorMap, context);\n        case 'matrices':\n            return matrices.executeOp(node, tensorMap, context);\n        case 'normalization':\n            return normalization.executeOp(node, tensorMap, context);\n        case 'reduction':\n            return reduction.executeOp(node, tensorMap, context);\n        case 'slice_join':\n            return sliceJoin.executeOp(node, tensorMap, context);\n        case 'transformation':\n            return transformation.executeOp(node, tensorMap, context);\n        default:\n            throw TypeError(\"Node type \" + node.op + \" is not implemented\");\n    }\n}\nexports.executeOp = executeOp;\n\n},{\"./executors/arithmetic_executor\":18,\"./executors/basic_math_executor\":19,\"./executors/control_executor\":20,\"./executors/convolution_executor\":21,\"./executors/creation_executor\":22,\"./executors/dynamic_executor\":23,\"./executors/evaluation_executor\":24,\"./executors/graph_executor\":25,\"./executors/image_executor\":26,\"./executors/logical_executor\":27,\"./executors/matrices_executor\":28,\"./executors/normalization_executor\":29,\"./executors/reduction_executor\":30,\"./executors/slice_join_executor\":31,\"./executors/transformation_executor\":32}],50:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar compiled_api_1 = require(\"../data/compiled_api\");\nvar utils_1 = require(\"./executors/utils\");\nvar arithmetic = require(\"./op_list/arithmetic.json\");\nvar basicMath = require(\"./op_list/basic_math.json\");\nvar control = require(\"./op_list/control.json\");\nvar convolution = require(\"./op_list/convolution.json\");\nvar creation = require(\"./op_list/creation.json\");\nvar dynamic = require(\"./op_list/dynamic.json\");\nvar evaluation = require(\"./op_list/evaluation.json\");\nvar graph = require(\"./op_list/graph.json\");\nvar image = require(\"./op_list/image.json\");\nvar logical = require(\"./op_list/logical.json\");\nvar matrices = require(\"./op_list/matrices.json\");\nvar normalization = require(\"./op_list/normalization.json\");\nvar reduction = require(\"./op_list/reduction.json\");\nvar sliceJoin = require(\"./op_list/slice_join.json\");\nvar transformation = require(\"./op_list/transformation.json\");\nvar CONTROL_FLOW_OPS = ['Switch', 'Merge', 'Enter', 'Exit', 'NextIteration'];\nvar DYNAMIC_SHAPE_OPS = ['NonMaxSuppressionV2', 'NonMaxSuppressionV3', 'Where'];\nvar OperationMapper = (function () {\n    function OperationMapper() {\n        var ops = [\n            arithmetic, basicMath, control, convolution, creation, dynamic,\n            evaluation, logical, image, graph, matrices, normalization, reduction,\n            sliceJoin, transformation\n        ];\n        var mappersJson = [].concat.apply([], ops.map(function (op) { return op.default ? op.default : op; }));\n        this.opMappers = mappersJson.reduce(function (map, mapper) {\n            map[mapper.tfOpName] = mapper;\n            return map;\n        }, {});\n    }\n    Object.defineProperty(OperationMapper, \"Instance\", {\n        get: function () {\n            return this._instance || (this._instance = new this());\n        },\n        enumerable: true,\n        configurable: true\n    });\n    OperationMapper.prototype.isControlFlow = function (node) {\n        return CONTROL_FLOW_OPS.some(function (op) { return op === node.op; });\n    };\n    OperationMapper.prototype.isDynamicShape = function (node) {\n        return DYNAMIC_SHAPE_OPS.some(function (op) { return op === node.op; });\n    };\n    OperationMapper.prototype.transformGraph = function (graph) {\n        var _this = this;\n        var tfNodes = graph.node;\n        var withControlFlow = false;\n        var withDynamicShape = false;\n        var placeholders = [];\n        var nodes = tfNodes.reduce(function (map, node) {\n            map[node.name] = _this.mapNode(node);\n            if (_this.isControlFlow(node))\n                withControlFlow = true;\n            if (_this.isDynamicShape(node))\n                withDynamicShape = true;\n            if (node.op === 'Placeholder')\n                placeholders.push(map[node.name]);\n            return map;\n        }, {});\n        var inputs = [];\n        var outputs = [];\n        Object.keys(nodes).forEach(function (key) {\n            var node = nodes[key];\n            node.inputNames.forEach(function (name) {\n                var nodeName = utils_1.getNodeNameAndIndex(name)[0];\n                node.inputs.push(nodes[nodeName]);\n                nodes[nodeName].children.push(node);\n            });\n            if (node.inputs.length === 0)\n                inputs.push(node);\n        });\n        Object.keys(nodes).forEach(function (key) {\n            var node = nodes[key];\n            if (node.children.length === 0)\n                outputs.push(node);\n        });\n        return {\n            nodes: nodes,\n            inputs: inputs,\n            outputs: outputs,\n            placeholders: placeholders,\n            withControlFlow: withControlFlow,\n            withDynamicShape: withDynamicShape\n        };\n    };\n    OperationMapper.prototype.mapNode = function (node) {\n        var _this = this;\n        var mapper = this.opMappers[node.op];\n        if (mapper === undefined) {\n            throw new Error('Tensorflow Op is not supported: ' + node.op);\n        }\n        var newNode = {\n            name: node.name,\n            op: mapper.dlOpName,\n            category: mapper.category,\n            inputNames: (node.input ||\n                []).map(function (input) { return input.startsWith('^') ? input.substr(1) : input; }),\n            inputs: [],\n            children: [],\n            params: {}\n        };\n        if (!!mapper.params) {\n            newNode.params = mapper.params.reduce(function (map, param) {\n                var inputIndex = param.tfInputIndex;\n                var inputParamLength = param.tfInputParamLength;\n                var type = param.type;\n                var value = undefined;\n                if (inputIndex === undefined) {\n                    switch (param.type) {\n                        case 'string':\n                            value = _this.getStringParam(node.attr, param.tfParamName, param.defaultValue);\n                            if (value === undefined && !!param.tfParamNameDeprecated) {\n                                value = _this.getStringParam(node.attr, param.tfParamNameDeprecated, param.defaultValue);\n                            }\n                            break;\n                        case 'number':\n                            value = _this.getNumberParam(node.attr, param.tfParamName, param.defaultValue);\n                            if (value === undefined && !!param.tfParamNameDeprecated) {\n                                value = _this.getNumberParam(node.attr, param.tfParamNameDeprecated, param.defaultValue);\n                            }\n                            break;\n                        case 'number[]':\n                            value = _this.getNumericArrayParam(node.attr, param.tfParamName, param.defaultValue);\n                            if (value === undefined && !!param.tfParamNameDeprecated) {\n                                value = _this.getNumericArrayParam(node.attr, param.tfParamNameDeprecated, param.defaultValue);\n                            }\n                            break;\n                        case 'bool':\n                            value = _this.getBoolParam(node.attr, param.tfParamName, param.defaultValue);\n                            if (value === undefined && !!param.tfParamNameDeprecated) {\n                                value = _this.getBoolParam(node.attr, param.tfParamNameDeprecated, param.defaultValue);\n                            }\n                            break;\n                        case 'shape':\n                            value = _this.getTensorShapeParam(node.attr, param.tfParamName, param.defaultValue);\n                            if (value === undefined && !!param.tfParamNameDeprecated) {\n                                value = _this.getTensorShapeParam(node.attr, param.tfParamNameDeprecated, param.defaultValue);\n                            }\n                            break;\n                        case 'dtype':\n                            value = _this.getDtypeParam(node.attr, param.tfParamName, param.defaultValue);\n                            if (value === undefined && !!param.tfParamNameDeprecated) {\n                                value = _this.getDtypeParam(node.attr, param.tfParamNameDeprecated, param.defaultValue);\n                            }\n                            break;\n                        case 'tensor':\n                        case 'tensors':\n                            break;\n                        default:\n                            throw new Error(\"Unsupported param type: \" + param.type + \" for op: \" + node.op);\n                    }\n                }\n                map[param.dlParamName] = { value: value, inputIndex: inputIndex, type: type, inputParamLength: inputParamLength };\n                return map;\n            }, {});\n        }\n        return newNode;\n    };\n    OperationMapper.prototype.getStringParam = function (attrs, name, def, keepCase) {\n        if (keepCase === void 0) { keepCase = false; }\n        var param = attrs[name];\n        if (param !== undefined) {\n            var value = String.fromCharCode.apply(null, param.s);\n            return keepCase ? value : value.toLowerCase();\n        }\n        return def;\n    };\n    OperationMapper.prototype.getBoolParam = function (attrs, name, def) {\n        var param = attrs[name];\n        return param ? param.b : def;\n    };\n    OperationMapper.prototype.getNumberParam = function (attrs, name, def) {\n        var param = attrs[name];\n        var value = (param ? ((param.f !== undefined) ? param.f : param.i) : def);\n        return (typeof value === 'number') ? value : value['toInt']();\n    };\n    OperationMapper.prototype.getDtypeParam = function (attrs, name, def) {\n        var param = attrs[name];\n        if (param && param.type) {\n            switch (param.type) {\n                case compiled_api_1.tensorflow.DataType.DT_FLOAT:\n                    return 'float32';\n                case compiled_api_1.tensorflow.DataType.DT_INT32:\n                    return 'int32';\n                case compiled_api_1.tensorflow.DataType.DT_BOOL:\n                    return 'bool';\n                default:\n                    return def;\n            }\n        }\n        return def;\n    };\n    OperationMapper.prototype.getTensorShapeParam = function (attrs, name, def) {\n        var param = attrs[name];\n        if (param && param.shape) {\n            return param.shape.dim.map(function (dim) {\n                return (typeof dim.size === 'number') ? dim.size : dim.size['toInt']();\n            });\n        }\n        return def;\n    };\n    OperationMapper.prototype.getNumericArrayParam = function (attrs, name, def) {\n        var param = attrs[name];\n        if (param) {\n            return ((param.list.f && param.list.f.length ? param.list.f :\n                param.list.i))\n                .map(function (v) { return (typeof v === 'number') ? v : v['toInt'](); });\n        }\n        return def;\n    };\n    return OperationMapper;\n}());\nexports.OperationMapper = OperationMapper;\n\n},{\"../data/compiled_api\":12,\"./executors/utils\":33,\"./op_list/arithmetic.json\":34,\"./op_list/basic_math.json\":35,\"./op_list/control.json\":36,\"./op_list/convolution.json\":37,\"./op_list/creation.json\":38,\"./op_list/dynamic.json\":39,\"./op_list/evaluation.json\":40,\"./op_list/graph.json\":41,\"./op_list/image.json\":42,\"./op_list/logical.json\":43,\"./op_list/matrices.json\":44,\"./op_list/normalization.json\":45,\"./op_list/reduction.json\":46,\"./op_list/slice_join.json\":47,\"./op_list/transformation.json\":48}],51:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar version = '0.5.5';\nexports.version = version;\n\n},{}],52:[function(require,module,exports){\n(function (setImmediate){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar delayCallback = typeof requestAnimationFrame !== 'undefined' ?\n    requestAnimationFrame :\n    setImmediate;\nfunction nextFrame() {\n    return new Promise(function (resolve) { return delayCallback(function () { return resolve(); }); });\n}\nexports.nextFrame = nextFrame;\n\n}).call(this,require(\"timers\").setImmediate)\n},{\"timers\":299}],53:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isMobile() {\n    var a = navigator.userAgent || navigator.vendor || window.opera;\n    return /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i\n        .test(a) ||\n        /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i\n            .test(a.substr(0, 4));\n}\nexports.isMobile = isMobile;\n\n},{}],54:[function(require,module,exports){\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 = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, 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 profiler_1 = require(\"./profiler\");\nvar tape_1 = require(\"./tape\");\nvar tensor_1 = require(\"./tensor\");\nvar tensor_util_1 = require(\"./tensor_util\");\nvar util = require(\"./util\");\nvar util_1 = require(\"./util\");\nvar Engine = (function () {\n    function Engine(backend, safeMode, debugMode) {\n        this.backend = backend;\n        this.safeMode = safeMode;\n        this.debugMode = debugMode;\n        this.registeredVariables = {};\n        this.refCounter = new WeakMap();\n        this.nextTapeNodeId = 0;\n        this.numBytes = 0;\n        this.numTensors = 0;\n        this.numDataBuffers = 0;\n        this.gradientScopeCount = 0;\n        this.customGradientDepth = 0;\n        this.keepTensors = new Set();\n        this.activeScope = { track: [], name: 'default scope' };\n        this.scopeStack = [this.activeScope];\n        this.profiler = new profiler_1.Profiler(backend);\n    }\n    Engine.prototype.tidy = function (nameOrFn, fn, gradMode) {\n        var _this = this;\n        if (gradMode === void 0) { gradMode = false; }\n        var name = null;\n        if (fn == null) {\n            if (typeof nameOrFn !== 'function') {\n                throw new Error('Please provide a function to tidy()');\n            }\n            fn = nameOrFn;\n        }\n        else {\n            if (typeof nameOrFn !== 'string' && !(nameOrFn instanceof String)) {\n                throw new Error('When calling with two arguments, the first argument ' +\n                    'to tidy() must be a string');\n            }\n            if (typeof fn !== 'function') {\n                throw new Error('When calling with two arguments, the 2nd argument ' +\n                    'to tidy() must be a function');\n            }\n            name = nameOrFn;\n        }\n        var result;\n        return this.scopedRun(function () { return _this.startScope(name, gradMode); }, function () { return _this.endScope(result, gradMode); }, function () {\n            result = fn();\n            if (result instanceof Promise) {\n                console.error('Cannot return a Promise inside of tidy.');\n            }\n            return result;\n        });\n    };\n    Engine.prototype.scopedRun = function (start, end, f) {\n        start();\n        try {\n            var res = f();\n            end();\n            return res;\n        }\n        catch (ex) {\n            end();\n            throw ex;\n        }\n    };\n    Engine.prototype.runKernel = function (forwardFunc, inputs, backwardsFunc) {\n        var _this = this;\n        var result;\n        var saved = [];\n        var saveFunc = function (x) {\n            saved.push(x);\n            return x;\n        };\n        var scopeName = this.activeScope.name;\n        this.scopedRun(function () { return _this.customGradientDepth++; }, function () { return _this.customGradientDepth--; }, function () {\n            if (!_this.debugMode()) {\n                result = forwardFunc(_this.backend, saveFunc);\n            }\n            else {\n                result = _this.profiler.profileKernel(scopeName, function () { return forwardFunc(_this.backend, saveFunc); });\n            }\n        });\n        if (this.shouldRecord()) {\n            var tapeNode = {\n                id: this.nextTapeNodeId++,\n                name: scopeName,\n                inputs: inputs,\n                output: Array.isArray(result) ? result[0] : result\n            };\n            if (backwardsFunc != null) {\n                tapeNode.gradient =\n                    (function (dy) { return backwardsFunc(dy, saved); });\n            }\n            this.activeTape.push(tapeNode);\n        }\n        return result;\n    };\n    Engine.prototype.registerTensor = function (a) {\n        var refCount = this.refCounter.has(a.dataId) ? this.refCounter.get(a.dataId) : 0;\n        this.numTensors++;\n        if (refCount === 0) {\n            this.numDataBuffers++;\n            this.numBytes +=\n                util.sizeFromShape(a.shape) * util.bytesPerElement(a.dtype);\n            this.backend.register(a.dataId, a.shape, a.dtype);\n        }\n        this.refCounter.set(a.dataId, refCount + 1);\n        if (!(a instanceof tensor_1.Variable)) {\n            this.track(a);\n        }\n    };\n    Engine.prototype.registerVariable = function (v) {\n        if (this.registeredVariables[v.name] != null) {\n            throw new Error(\"Variable with name \" + v.name + \" was already registered\");\n        }\n        this.registeredVariables[v.name] = v;\n    };\n    Engine.prototype.disposeTensor = function (a) {\n        if (!this.refCounter.has(a.dataId)) {\n            return;\n        }\n        if (this.keepTensors.has(a.id)) {\n            this.keepTensors.delete(a.id);\n        }\n        this.numTensors--;\n        var refCount = this.refCounter.get(a.dataId);\n        if (refCount <= 1) {\n            this.refCounter.delete(a.dataId);\n            this.backend.disposeData(a.dataId);\n            this.numDataBuffers--;\n            this.numBytes -=\n                util.sizeFromShape(a.shape) * util.bytesPerElement(a.dtype);\n        }\n        else {\n            this.refCounter.set(a.dataId, refCount - 1);\n        }\n    };\n    Engine.prototype.disposeVariables = function () {\n        for (var varName in this.registeredVariables) {\n            var v = this.registeredVariables[varName];\n            this.disposeTensor(v);\n            delete this.registeredVariables[varName];\n        }\n    };\n    Engine.prototype.memory = function () {\n        var info = this.backend.memory();\n        info.numTensors = this.numTensors;\n        info.numDataBuffers = this.numDataBuffers;\n        info.numBytes = this.numBytes;\n        return info;\n    };\n    Engine.prototype.shouldRecord = function () {\n        return this.activeTape != null && this.customGradientDepth === 0;\n    };\n    Engine.prototype.addTapeNode = function (inputs, result, gradientsFunc) {\n        var inputsMap = {};\n        inputs.forEach(function (input, idx) {\n            inputsMap[idx] = input;\n        });\n        var gradient = function (dy) {\n            var res = gradientsFunc(dy);\n            var resMap = {};\n            res.forEach(function (r, idx) {\n                resMap[idx] = function () { return r; };\n            });\n            return resMap;\n        };\n        var tapeNode = {\n            id: this.nextTapeNodeId++,\n            name: this.activeScope.name,\n            inputs: inputsMap,\n            output: result,\n            gradient: gradient\n        };\n        this.activeTape.push(tapeNode);\n    };\n    Engine.prototype.keep = function (result) {\n        if (this.scopeStack.length === 1 && this.safeMode) {\n            throw new Error('Safe mode is ON. Enclose all tensor operations inside tf.tidy(): ' +\n                'tf.tidy(() => {...}) to avoid memory leaks.');\n        }\n        this.keepTensors.add(result.id);\n        return result;\n    };\n    Engine.prototype.startScope = function (name, gradientsMode) {\n        if (gradientsMode === void 0) { gradientsMode = false; }\n        if (gradientsMode && this.gradientScopeCount === 0) {\n            this.activeTape = [];\n        }\n        if (gradientsMode) {\n            this.gradientScopeCount++;\n        }\n        var scopeInfo = { track: [], name: 'unnamed scope' };\n        if (name) {\n            scopeInfo.name = name;\n        }\n        this.scopeStack.push(scopeInfo);\n        this.activeScope = scopeInfo;\n    };\n    Engine.prototype.endScope = function (result, gradientsMode) {\n        var _this = this;\n        if (gradientsMode === void 0) { gradientsMode = false; }\n        if (gradientsMode) {\n            this.gradientScopeCount--;\n            if (this.gradientScopeCount === 0) {\n                this.activeTape = null;\n            }\n        }\n        var tensorsToKeep = new Set(this.keepTensors);\n        var tensorsToTrackInParent = tensor_util_1.getTensorsInContainer(result);\n        tensorsToTrackInParent.forEach(function (tensor) { return tensorsToKeep.add(tensor.id); });\n        for (var i = 0; i < this.activeScope.track.length; i++) {\n            var tensor = this.activeScope.track[i];\n            if (tensorsToKeep.has(tensor.id)) {\n                continue;\n            }\n            if (this.activeTape != null) {\n                tensorsToTrackInParent.push(tensor);\n            }\n            else {\n                tensor.dispose();\n            }\n        }\n        var oldScope = this.scopeStack.pop();\n        this.activeScope = this.scopeStack.length === 0 ?\n            { track: [], name: 'default scope' } :\n            this.scopeStack[this.scopeStack.length - 1];\n        tensorsToTrackInParent.forEach(function (tensor) {\n            if (!_this.keepTensors.has(tensor.id) &&\n                tensor_util_1.isTensorInList(tensor, oldScope.track)) {\n                _this.track(tensor);\n            }\n        });\n    };\n    Engine.prototype.gradients = function (f, xs, dy, allowNoGradients) {\n        var _this = this;\n        if (allowNoGradients === void 0) { allowNoGradients = false; }\n        util.assert(xs.length > 0, 'gradients() received an empty list of xs.');\n        return this.tidy('gradients', function () {\n            var y = f();\n            util.assert(y instanceof tensor_1.Tensor, 'The result y returned by f() must be a tensor.');\n            var filteredTape = tape_1.getFilteredNodesXToY(_this.activeTape, xs, y);\n            if (!allowNoGradients && filteredTape.length === 0 && xs.length > 0) {\n                throw new Error('Cannot compute gradient of y=f(x) with respect to x. Make sure ' +\n                    'that the f you passed encloses all operations that lead from x ' +\n                    'to y.');\n            }\n            var accumulatedGradientMap = {};\n            accumulatedGradientMap[y.id] = (dy == null) ? ones(y.shape) : dy;\n            tape_1.backpropagateGradients(accumulatedGradientMap, filteredTape);\n            var grads = xs.map(function (x) { return accumulatedGradientMap[x.id]; });\n            return { value: y, grads: grads };\n        }, true);\n    };\n    Engine.prototype.customGrad = function (f) {\n        var _this = this;\n        util.assert(util.isFunction(f), 'The f passed in customGrad(f) must be a function.');\n        return function () {\n            var inputs = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                inputs[_i] = arguments[_i];\n            }\n            util.assert(inputs.every(function (t) { return t instanceof tensor_1.Tensor; }), 'The args passed in customGrad(f)(x1, x2,...) must all be tensors');\n            var gradientsFunc;\n            var result;\n            _this.scopedRun(function () { return _this.customGradientDepth++; }, function () { return _this.customGradientDepth--; }, function () {\n                var gradientsMode = true;\n                result = _this.tidy(f.name, function () {\n                    var _a = f.apply(void 0, inputs), value = _a.value, gradFunc = _a.gradFunc;\n                    util.assert(value instanceof tensor_1.Tensor, 'The function f passed in customGrad(f) must return an ' +\n                        'object where `obj.value` is a tensor');\n                    util.assert(util.isFunction(gradFunc), 'The function f passed in customGrad(f) must return an ' +\n                        'object where `obj.gradFunc` is a function.');\n                    gradientsFunc = gradFunc;\n                    return value;\n                }, gradientsMode);\n            });\n            if (_this.shouldRecord()) {\n                var gradFunc = function (dy) {\n                    var res = gradientsFunc(dy);\n                    var grads = Array.isArray(res) ? res : [res];\n                    util.assert(grads.length === inputs.length, 'The function f passed in customGrad(f) must return an object ' +\n                        'where `obj.gradFunc` is a function that returns the same ' +\n                        'number of tensors as inputs passed to f(...).');\n                    util.assert(grads.every(function (t) { return t instanceof tensor_1.Tensor; }), 'The function f passed in customGrad(f) must return an object ' +\n                        'where `obj.gradFunc` is a function that returns a list of ' +\n                        'only tensors.');\n                    return grads;\n                };\n                _this.addTapeNode(inputs, result, gradFunc);\n            }\n            return result;\n        };\n    };\n    Engine.prototype.write = function (dataId, values) {\n        this.backend.write(dataId, values);\n    };\n    Engine.prototype.readSync = function (dataId) {\n        return this.backend.readSync(dataId);\n    };\n    Engine.prototype.read = function (dataId) {\n        return this.backend.read(dataId);\n    };\n    Engine.prototype.fromPixels = function (pixels, numChannels) {\n        return this.backend.fromPixels(pixels, numChannels);\n    };\n    Engine.prototype.time = function (query) {\n        return __awaiter(this, void 0, void 0, function () {\n            var start, timingInfo;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        start = util_1.now();\n                        return [4, this.backend.time(query)];\n                    case 1:\n                        timingInfo = _a.sent();\n                        timingInfo.wallMs = util_1.now() - start;\n                        return [2, timingInfo];\n                }\n            });\n        });\n    };\n    Engine.prototype.track = function (result) {\n        if (this.scopeStack.length === 1 && this.safeMode) {\n            throw new Error('Safe mode is ON. Enclose all tensor operations inside tf.tidy(): ' +\n                'tf.tidy(() => {op();...}); to avoid memory leaks.');\n        }\n        this.activeScope.track.push(result);\n        return result;\n    };\n    return Engine;\n}());\nexports.Engine = Engine;\nfunction ones(shape) {\n    var values = util_1.makeOnesTypedArray(util_1.sizeFromShape(shape), 'float32');\n    return tensor_1.Tensor.make(shape, { values: values });\n}\n\n},{\"./profiler\":170,\"./tape\":172,\"./tensor\":173,\"./tensor_util\":175,\"./util\":180}],55:[function(require,module,exports){\n(function (process){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar device_util = require(\"./device_util\");\nvar engine_1 = require(\"./engine\");\nvar environment_util_1 = require(\"./environment_util\");\nvar tensor_1 = require(\"./tensor\");\nvar tensor_util_1 = require(\"./tensor_util\");\nvar TEST_EPSILON_FLOAT32_ENABLED = 1e-3;\nvar TEST_EPSILON_FLOAT32_DISABLED = 1e-1;\nvar Environment = (function () {\n    function Environment(features) {\n        this.features = {};\n        this.registry = {};\n        if (features != null) {\n            this.features = features;\n        }\n        if (this.get('DEBUG')) {\n            console.warn('Debugging mode is ON. The output of every math call will ' +\n                'be downloaded to CPU and checked for NaNs. ' +\n                'This significantly impacts performance.');\n        }\n    }\n    Environment.setBackend = function (backendName, safeMode) {\n        if (safeMode === void 0) { safeMode = false; }\n        if (!(backendName in exports.ENV.registry)) {\n            throw new Error(\"Backend name '\" + backendName + \"' not found in registry\");\n        }\n        exports.ENV.initBackend(backendName, safeMode);\n    };\n    Environment.getBackend = function () {\n        exports.ENV.initDefaultBackend();\n        return exports.ENV.backendName;\n    };\n    Environment.disposeVariables = function () {\n        exports.ENV.engine.disposeVariables();\n    };\n    Environment.memory = function () {\n        return exports.ENV.engine.memory();\n    };\n    Environment.tidy = function (nameOrFn, fn, gradMode) {\n        if (gradMode === void 0) { gradMode = false; }\n        return exports.ENV.engine.tidy(nameOrFn, fn, gradMode);\n    };\n    Environment.dispose = function (container) {\n        var tensors = tensor_util_1.getTensorsInContainer(container);\n        tensors.forEach(function (tensor) { return tensor.dispose(); });\n    };\n    Environment.keep = function (result) {\n        return exports.ENV.engine.keep(result);\n    };\n    Environment.time = function (f) {\n        return exports.ENV.engine.time(f);\n    };\n    Environment.prototype.get = function (feature) {\n        if (feature in this.features) {\n            return this.features[feature];\n        }\n        this.features[feature] = this.evaluateFeature(feature);\n        return this.features[feature];\n    };\n    Environment.prototype.getFeatures = function () {\n        return this.features;\n    };\n    Environment.prototype.set = function (feature, value) {\n        this.features[feature] = value;\n    };\n    Environment.prototype.getBestBackendName = function () {\n        var _this = this;\n        if (Object.keys(this.registry).length === 0) {\n            throw new Error('No backend found in registry.');\n        }\n        var sortedBackends = Object.keys(this.registry)\n            .map(function (name) {\n            return { name: name, entry: _this.registry[name] };\n        })\n            .sort(function (a, b) {\n            return b.entry.priority - a.entry.priority;\n        });\n        return sortedBackends[0].name;\n    };\n    Environment.prototype.evaluateFeature = function (feature) {\n        if (feature === 'DEBUG') {\n            return false;\n        }\n        else if (feature === 'IS_BROWSER') {\n            return typeof window !== 'undefined';\n        }\n        else if (feature === 'IS_NODE') {\n            return (typeof process !== 'undefined') &&\n                (typeof process.versions.node !== 'undefined');\n        }\n        else if (feature === 'IS_CHROME') {\n            return environment_util_1.isChrome();\n        }\n        else if (feature === 'IS_TEST') {\n            return false;\n        }\n        else if (feature === 'BACKEND') {\n            return this.getBestBackendName();\n        }\n        else if (feature === 'WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION') {\n            var webGLVersion = this.get('WEBGL_VERSION');\n            if (webGLVersion === 0) {\n                return 0;\n            }\n            if (webGLVersion > 0) {\n                return 0;\n            }\n            return environment_util_1.getWebGLDisjointQueryTimerVersion(webGLVersion, this.get('IS_BROWSER'));\n        }\n        else if (feature === 'WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE') {\n            return this.get('WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION') > 0 &&\n                !device_util.isMobile();\n        }\n        else if (feature === 'HAS_WEBGL') {\n            return this.get('WEBGL_VERSION') > 0;\n        }\n        else if (feature === 'WEBGL_VERSION') {\n            if (environment_util_1.isWebGLVersionEnabled(2, this.get('IS_BROWSER'))) {\n                return 2;\n            }\n            else if (environment_util_1.isWebGLVersionEnabled(1, this.get('IS_BROWSER'))) {\n                return 1;\n            }\n            return 0;\n        }\n        else if (feature === 'WEBGL_RENDER_FLOAT32_ENABLED') {\n            return environment_util_1.isRenderToFloatTextureEnabled(this.get('WEBGL_VERSION'), this.get('IS_BROWSER'));\n        }\n        else if (feature === 'WEBGL_DOWNLOAD_FLOAT_ENABLED') {\n            return environment_util_1.isDownloadFloatTextureEnabled(this.get('WEBGL_VERSION'), this.get('IS_BROWSER'));\n        }\n        else if (feature === 'WEBGL_FENCE_API_ENABLED') {\n            return environment_util_1.isWebGLFenceEnabled(this.get('WEBGL_VERSION'), this.get('IS_BROWSER'));\n        }\n        else if (feature === 'TEST_EPSILON') {\n            if (this.get('WEBGL_RENDER_FLOAT32_ENABLED')) {\n                return TEST_EPSILON_FLOAT32_ENABLED;\n            }\n            return TEST_EPSILON_FLOAT32_DISABLED;\n        }\n        throw new Error(\"Unknown feature \" + feature + \".\");\n    };\n    Environment.prototype.setFeatures = function (features) {\n        this.features = Object.assign({}, features);\n    };\n    Environment.prototype.reset = function () {\n        this.features = environment_util_1.getFeaturesFromURL();\n        if (this.globalEngine != null) {\n            this.globalEngine = null;\n        }\n    };\n    Environment.prototype.initBackend = function (backendName, safeMode) {\n        var _this = this;\n        if (safeMode === void 0) { safeMode = false; }\n        this.backendName = backendName;\n        this.backend = this.findBackend(backendName);\n        this.globalEngine =\n            new engine_1.Engine(this.backend, safeMode, function () { return _this.get('DEBUG'); });\n    };\n    Environment.prototype.findBackend = function (name) {\n        if (!(name in this.registry)) {\n            return null;\n        }\n        return this.registry[name].backend;\n    };\n    Environment.prototype.registerBackend = function (name, factory, priority, setTensorTrackerFn) {\n        var _this = this;\n        if (priority === void 0) { priority = 1; }\n        if (name in this.registry) {\n            console.warn(name + \" backend was already registered. Reusing existing backend\");\n            if (setTensorTrackerFn != null) {\n                setTensorTrackerFn(function () { return _this.engine; });\n            }\n            return false;\n        }\n        try {\n            var backend = factory();\n            this.registry[name] = { backend: backend, priority: priority };\n            return true;\n        }\n        catch (err) {\n            console.warn(\"Registration of backend \" + name + \" failed\");\n            console.warn(err.stack || err.message);\n            return false;\n        }\n    };\n    Environment.prototype.removeBackend = function (name) {\n        if (!(name in this.registry)) {\n            throw new Error(name + \" backend not found in registry\");\n        }\n        this.registry[name].backend.dispose();\n        delete this.registry[name];\n    };\n    Object.defineProperty(Environment.prototype, \"engine\", {\n        get: function () {\n            this.initDefaultBackend();\n            return this.globalEngine;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Environment.prototype.initDefaultBackend = function () {\n        if (this.globalEngine == null) {\n            this.initBackend(this.get('BACKEND'), false);\n        }\n    };\n    return Environment;\n}());\nexports.Environment = Environment;\nfunction getGlobalNamespace() {\n    var ns;\n    if (typeof (window) !== 'undefined') {\n        ns = window;\n    }\n    else if (typeof (process) !== 'undefined') {\n        ns = process;\n    }\n    else {\n        throw new Error('Could not find a global object');\n    }\n    return ns;\n}\nfunction getOrMakeEnvironment() {\n    var ns = getGlobalNamespace();\n    if (ns.ENV == null) {\n        ns.ENV = new Environment(environment_util_1.getFeaturesFromURL());\n        tensor_1.setTensorTracker(function () { return ns.ENV.engine; });\n    }\n    return ns.ENV;\n}\nexports.ENV = getOrMakeEnvironment();\n\n}).call(this,require('_process'))\n},{\"./device_util\":53,\"./engine\":54,\"./environment_util\":56,\"./tensor\":173,\"./tensor_util\":175,\"_process\":267}],56:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Type;\n(function (Type) {\n    Type[Type[\"NUMBER\"] = 0] = \"NUMBER\";\n    Type[Type[\"BOOLEAN\"] = 1] = \"BOOLEAN\";\n    Type[Type[\"STRING\"] = 2] = \"STRING\";\n})(Type = exports.Type || (exports.Type = {}));\nexports.URL_PROPERTIES = [\n    { name: 'DEBUG', type: Type.BOOLEAN }, { name: 'IS_BROWSER', type: Type.BOOLEAN },\n    { name: 'WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION', type: Type.NUMBER },\n    { name: 'WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE', type: Type.BOOLEAN },\n    { name: 'WEBGL_VERSION', type: Type.NUMBER },\n    { name: 'WEBGL_RENDER_FLOAT32_ENABLED', type: Type.BOOLEAN },\n    { name: 'WEBGL_DOWNLOAD_FLOAT_ENABLED', type: Type.BOOLEAN },\n    { name: 'WEBGL_FENCE_API_ENABLED', type: Type.BOOLEAN },\n    { name: 'BACKEND', type: Type.STRING }\n];\nfunction isWebGLVersionEnabled(webGLVersion, isBrowser) {\n    var gl;\n    try {\n        gl = getWebGLRenderingContext(webGLVersion, isBrowser);\n    }\n    catch (e) {\n        return false;\n    }\n    if (gl != null) {\n        loseContext(gl);\n        return true;\n    }\n    return false;\n}\nexports.isWebGLVersionEnabled = isWebGLVersionEnabled;\nfunction getWebGLDisjointQueryTimerVersion(webGLVersion, isBrowser) {\n    if (webGLVersion === 0) {\n        return 0;\n    }\n    var queryTimerVersion;\n    var gl = getWebGLRenderingContext(webGLVersion, isBrowser);\n    if (hasExtension(gl, 'EXT_disjoint_timer_query_webgl2') &&\n        webGLVersion === 2) {\n        queryTimerVersion = 2;\n    }\n    else if (hasExtension(gl, 'EXT_disjoint_timer_query')) {\n        queryTimerVersion = 1;\n    }\n    else {\n        queryTimerVersion = 0;\n    }\n    if (gl != null) {\n        loseContext(gl);\n    }\n    return queryTimerVersion;\n}\nexports.getWebGLDisjointQueryTimerVersion = getWebGLDisjointQueryTimerVersion;\nfunction isRenderToFloatTextureEnabled(webGLVersion, isBrowser) {\n    if (webGLVersion === 0) {\n        return false;\n    }\n    var gl = getWebGLRenderingContext(webGLVersion, isBrowser);\n    if (webGLVersion === 1) {\n        if (!hasExtension(gl, 'OES_texture_float')) {\n            return false;\n        }\n    }\n    else {\n        if (!hasExtension(gl, 'EXT_color_buffer_float')) {\n            return false;\n        }\n    }\n    createFloatTextureAndBindToFramebuffer(gl, webGLVersion);\n    var isFrameBufferComplete = gl.checkFramebufferStatus(gl.FRAMEBUFFER) === gl.FRAMEBUFFER_COMPLETE;\n    loseContext(gl);\n    return isFrameBufferComplete;\n}\nexports.isRenderToFloatTextureEnabled = isRenderToFloatTextureEnabled;\nfunction isDownloadFloatTextureEnabled(webGLVersion, isBrowser) {\n    if (webGLVersion === 0) {\n        return false;\n    }\n    var gl = getWebGLRenderingContext(webGLVersion, isBrowser);\n    if (webGLVersion === 1) {\n        if (!hasExtension(gl, 'OES_texture_float')) {\n            return false;\n        }\n    }\n    else {\n        if (!hasExtension(gl, 'EXT_color_buffer_float')) {\n            return false;\n        }\n    }\n    createFloatTextureAndBindToFramebuffer(gl, webGLVersion);\n    gl.readPixels(0, 0, 1, 1, gl.RGBA, gl.FLOAT, new Float32Array(4));\n    var readPixelsNoError = gl.getError() === gl.NO_ERROR;\n    loseContext(gl);\n    return readPixelsNoError;\n}\nexports.isDownloadFloatTextureEnabled = isDownloadFloatTextureEnabled;\nfunction isWebGLFenceEnabled(webGLVersion, isBrowser) {\n    if (webGLVersion !== 2) {\n        return false;\n    }\n    var gl = getWebGLRenderingContext(webGLVersion, isBrowser);\n    var isEnabled = gl.fenceSync != null;\n    loseContext(gl);\n    return isEnabled;\n}\nexports.isWebGLFenceEnabled = isWebGLFenceEnabled;\nfunction isChrome() {\n    return typeof navigator !== 'undefined' && navigator != null &&\n        navigator.userAgent != null && /Chrome/.test(navigator.userAgent) &&\n        /Google Inc/.test(navigator.vendor);\n}\nexports.isChrome = isChrome;\nvar TENSORFLOWJS_FLAGS_PREFIX = 'tfjsflags';\nfunction getFeaturesFromURL() {\n    var features = {};\n    if (typeof window === 'undefined' || typeof window.location === 'undefined') {\n        return features;\n    }\n    var urlParams = getQueryParams(window.location.search);\n    if (TENSORFLOWJS_FLAGS_PREFIX in urlParams) {\n        var urlFlags_1 = {};\n        var keyValues = urlParams[TENSORFLOWJS_FLAGS_PREFIX].split(',');\n        keyValues.forEach(function (keyValue) {\n            var _a = keyValue.split(':'), key = _a[0], value = _a[1];\n            urlFlags_1[key] = value;\n        });\n        exports.URL_PROPERTIES.forEach(function (urlProperty) {\n            if (urlProperty.name in urlFlags_1) {\n                console.log(\"Setting feature override from URL \" + urlProperty.name + \": \" +\n                    (\"\" + urlFlags_1[urlProperty.name]));\n                if (urlProperty.type === Type.NUMBER) {\n                    features[urlProperty.name] = +urlFlags_1[urlProperty.name];\n                }\n                else if (urlProperty.type === Type.BOOLEAN) {\n                    features[urlProperty.name] = urlFlags_1[urlProperty.name] === 'true';\n                }\n                else if (urlProperty.type === Type.STRING) {\n                    features[urlProperty.name] = urlFlags_1[urlProperty.name];\n                }\n                else {\n                    console.warn(\"Unknown URL param: \" + urlProperty.name + \".\");\n                }\n            }\n        });\n    }\n    return features;\n}\nexports.getFeaturesFromURL = getFeaturesFromURL;\nfunction hasExtension(gl, extensionName) {\n    var ext = gl.getExtension(extensionName);\n    return ext != null;\n}\nfunction getWebGLRenderingContext(webGLVersion, isBrowser) {\n    if (webGLVersion === 0 || !isBrowser) {\n        throw new Error('Cannot get WebGL rendering context, WebGL is disabled.');\n    }\n    var tempCanvas = document.createElement('canvas');\n    if (webGLVersion === 1) {\n        return (tempCanvas.getContext('webgl') ||\n            tempCanvas.getContext('experimental-webgl'));\n    }\n    return tempCanvas.getContext('webgl2');\n}\nfunction loseContext(gl) {\n    if (gl != null) {\n        var loseContextExtension = gl.getExtension('WEBGL_lose_context');\n        if (loseContextExtension == null) {\n            throw new Error('Extension WEBGL_lose_context not supported on this browser.');\n        }\n        loseContextExtension.loseContext();\n    }\n}\nfunction createFloatTextureAndBindToFramebuffer(gl, webGLVersion) {\n    var frameBuffer = gl.createFramebuffer();\n    var texture = gl.createTexture();\n    gl.bindTexture(gl.TEXTURE_2D, texture);\n    var internalFormat = webGLVersion === 2 ? gl.RGBA32F : gl.RGBA;\n    gl.texImage2D(gl.TEXTURE_2D, 0, internalFormat, 1, 1, 0, gl.RGBA, gl.FLOAT, null);\n    gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer);\n    gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n}\nfunction getQueryParams(queryString) {\n    var params = {};\n    queryString.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g, function (s) {\n        var t = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            t[_i - 1] = arguments[_i];\n        }\n        decodeParam(params, t[0], t[1]);\n        return t.join('=');\n    });\n    return params;\n}\nexports.getQueryParams = getQueryParams;\nfunction decodeParam(params, name, value) {\n    params[decodeURIComponent(name)] = decodeURIComponent(value || '');\n}\n\n},{}],57:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"./environment\");\nvar gradients_1 = require(\"./gradients\");\nexports.customGrad = gradients_1.customGrad;\nexports.grad = gradients_1.grad;\nexports.grads = gradients_1.grads;\nexports.valueAndGrad = gradients_1.valueAndGrad;\nexports.valueAndGrads = gradients_1.valueAndGrads;\nexports.variableGrads = gradients_1.variableGrads;\nexports.tidy = environment_1.Environment.tidy;\nexports.keep = environment_1.Environment.keep;\nexports.dispose = environment_1.Environment.dispose;\nexports.time = environment_1.Environment.time;\n\n},{\"./environment\":55,\"./gradients\":58}],58:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"./environment\");\nvar tensor_1 = require(\"./tensor\");\nvar util = require(\"./util\");\nfunction gradScope(nameOrScopeFn, scopeFn) {\n    return environment_1.ENV.engine.tidy(nameOrScopeFn, scopeFn, true);\n}\nexports.gradScope = gradScope;\nfunction grad(f) {\n    util.assert(util.isFunction(f), 'The f passed in grad(f) must be a function');\n    return function (x, dy) {\n        util.assert(x instanceof tensor_1.Tensor, 'The x passed in grad(f)(x) must be a tensor');\n        util.assert(dy == null || dy instanceof tensor_1.Tensor, 'The dy passed in grad(f)(x, dy) must be a tensor');\n        return environment_1.ENV.engine.tidy(function () {\n            var _a = environment_1.ENV.engine.gradients(function () { return f(x); }, [x], dy), value = _a.value, grads = _a.grads;\n            if (dy != null) {\n                util.assertShapesMatch(value.shape, dy.shape, 'The shape of dy passed in grad(f)(x, dy) must match the shape ' +\n                    'returned by f(x)');\n            }\n            checkGrads(grads);\n            return grads[0];\n        });\n    };\n}\nexports.grad = grad;\nfunction grads(f) {\n    util.assert(util.isFunction(f), 'The f passed in grads(f) must be a function');\n    return function (args, dy) {\n        util.assert(Array.isArray(args) && args.every(function (arg) { return arg instanceof tensor_1.Tensor; }), 'The args passed in grads(f)(args) must be an array of tensors');\n        util.assert(dy == null || dy instanceof tensor_1.Tensor, 'The dy passed in grads(f)(args, dy) must be a tensor');\n        return environment_1.ENV.engine.tidy(function () {\n            var _a = environment_1.ENV.engine.gradients(function () { return f.apply(void 0, args); }, args, dy), value = _a.value, grads = _a.grads;\n            if (dy != null) {\n                util.assertShapesMatch(value.shape, dy.shape, 'The shape of dy passed in grads(f)([x1,...], dy) must ' +\n                    'match the shape returned by f([x1,...])');\n            }\n            checkGrads(grads);\n            return grads;\n        });\n    };\n}\nexports.grads = grads;\nfunction valueAndGrad(f) {\n    util.assert(util.isFunction(f), 'The f passed in valueAndGrad(f) must be a function');\n    return function (x, dy) {\n        util.assert(x instanceof tensor_1.Tensor, 'The x passed in valueAndGrad(f)(x) must be a tensor');\n        util.assert(dy == null || dy instanceof tensor_1.Tensor, 'The dy passed in valueAndGrad(f)(x, dy) must be a tensor');\n        var _a = environment_1.ENV.engine.gradients(function () { return f(x); }, [x], dy), grads = _a.grads, value = _a.value;\n        checkGrads(grads);\n        return { grad: grads[0], value: value };\n    };\n}\nexports.valueAndGrad = valueAndGrad;\nfunction valueAndGrads(f) {\n    util.assert(util.isFunction(f), 'The f passed in valueAndGrads(f) must be a function');\n    return function (args, dy) {\n        util.assert(Array.isArray(args) && args.every(function (arg) { return arg instanceof tensor_1.Tensor; }), 'The args passed in valueAndGrads(f)(args) must be array of tensors');\n        util.assert(dy == null || dy instanceof tensor_1.Tensor, 'The dy passed in valueAndGrads(f)(args, dy) must be a tensor');\n        var res = environment_1.ENV.engine.gradients(function () { return f.apply(void 0, args); }, args, dy);\n        if (dy != null) {\n            util.assertShapesMatch(res.value.shape, dy.shape, 'The shape of dy passed in valueAndGrads(f)([x1,...], dy) must ' +\n                'match the shape returned by f([x1,...])');\n        }\n        checkGrads(res.grads);\n        return res;\n    };\n}\nexports.valueAndGrads = valueAndGrads;\nfunction variableGrads(f, varList) {\n    util.assert(util.isFunction(f), 'The f passed in variableGrads(f) must be a function');\n    util.assert(varList == null ||\n        Array.isArray(varList) && varList.every(function (v) { return v instanceof tensor_1.Variable; }), 'The varList passed in variableGrads(f, varList) must be an array ' +\n        'of variables');\n    if (varList == null) {\n        varList = [];\n        for (var varName in environment_1.ENV.engine.registeredVariables) {\n            varList.push(environment_1.ENV.engine.registeredVariables[varName]);\n        }\n    }\n    var originalVarCount = varList.length;\n    varList = varList.filter(function (variable) { return variable.trainable; });\n    util.assert(varList.length > 0, \"variableGrads() expects at least one of the input variables to be \" +\n        (\"trainable, but none of the \" + originalVarCount + \" variables is \") +\n        \"trainable.\");\n    var allowNoGradients = true;\n    var _a = environment_1.ENV.engine.gradients(f, varList, null, allowNoGradients), value = _a.value, grads = _a.grads;\n    util.assert(grads.some(function (g) { return g != null; }), 'Cannot find a connection between any variable and the result of the ' +\n        'loss function y=f(x). Please make sure the operations that use ' +\n        'variables are inside the function f passed to minimize().');\n    util.assert(value.rank === 0, \"The f passed in variableGrads(f) must return a scalar, but it \" +\n        (\"returned a rank-\" + value.rank + \" tensor\"));\n    var namedGrads = {};\n    varList.forEach(function (v, i) {\n        if (grads[i] != null) {\n            namedGrads[v.name] = grads[i];\n        }\n    });\n    return { value: value, grads: namedGrads };\n}\nexports.variableGrads = variableGrads;\nfunction customGrad(f) {\n    return environment_1.ENV.engine.customGrad(f);\n}\nexports.customGrad = customGrad;\nfunction checkGrads(grads) {\n    var numNullGradients = grads.filter(function (g) { return g == null; }).length;\n    if (numNullGradients > 0) {\n        throw new Error(\"Cannot compute gradient of y=f(x) with respect to x. Make sure that\\n    the f you passed encloses all operations that lead from x to y.\");\n    }\n}\n\n},{\"./environment\":55,\"./tensor\":173,\"./util\":180}],59:[function(require,module,exports){\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 });\nrequire(\"./kernels/backend_webgl\");\nrequire(\"./kernels/backend_cpu\");\nvar browser_util_1 = require(\"./browser_util\");\nexports.nextFrame = browser_util_1.nextFrame;\nvar environment = require(\"./environment\");\nexports.environment = environment;\nvar environment_1 = require(\"./environment\");\nvar io = require(\"./io/io\");\nexports.io = io;\nvar serialization = require(\"./serialization\");\nexports.serialization = serialization;\nvar tensor_1 = require(\"./tensor\");\nvar test_util = require(\"./test_util\");\nexports.test_util = test_util;\nvar util = require(\"./util\");\nexports.util = util;\nvar version_1 = require(\"./version\");\nexports.version_core = version_1.version;\nvar webgl = require(\"./webgl\");\nexports.webgl = webgl;\nvar adadelta_optimizer_1 = require(\"./optimizers/adadelta_optimizer\");\nexports.AdadeltaOptimizer = adadelta_optimizer_1.AdadeltaOptimizer;\nvar adagrad_optimizer_1 = require(\"./optimizers/adagrad_optimizer\");\nexports.AdagradOptimizer = adagrad_optimizer_1.AdagradOptimizer;\nvar adam_optimizer_1 = require(\"./optimizers/adam_optimizer\");\nexports.AdamOptimizer = adam_optimizer_1.AdamOptimizer;\nvar adamax_optimizer_1 = require(\"./optimizers/adamax_optimizer\");\nexports.AdamaxOptimizer = adamax_optimizer_1.AdamaxOptimizer;\nvar momentum_optimizer_1 = require(\"./optimizers/momentum_optimizer\");\nexports.MomentumOptimizer = momentum_optimizer_1.MomentumOptimizer;\nvar optimizer_1 = require(\"./optimizers/optimizer\");\nexports.Optimizer = optimizer_1.Optimizer;\nvar rmsprop_optimizer_1 = require(\"./optimizers/rmsprop_optimizer\");\nexports.RMSPropOptimizer = rmsprop_optimizer_1.RMSPropOptimizer;\nvar sgd_optimizer_1 = require(\"./optimizers/sgd_optimizer\");\nexports.SGDOptimizer = sgd_optimizer_1.SGDOptimizer;\nvar tensor_2 = require(\"./tensor\");\nexports.Tensor = tensor_2.Tensor;\nexports.TensorBuffer = tensor_2.TensorBuffer;\nexports.variable = tensor_2.variable;\nexports.Variable = tensor_2.Variable;\nvar types_1 = require(\"./types\");\nexports.Rank = types_1.Rank;\n__export(require(\"./ops/ops\"));\nvar loss_ops_1 = require(\"./ops/loss_ops\");\nexports.Reduction = loss_ops_1.Reduction;\n__export(require(\"./train\"));\n__export(require(\"./globals\"));\nvar environment_2 = require(\"./environment\");\nexports.ENV = environment_2.ENV;\nexports.Environment = environment_2.Environment;\nexports.setBackend = environment_1.Environment.setBackend;\nexports.getBackend = environment_1.Environment.getBackend;\nexports.disposeVariables = environment_1.Environment.disposeVariables;\nexports.memory = environment_1.Environment.memory;\nvar ops = require(\"./ops/ops\");\ntensor_1.setOpHandler(ops);\n\n},{\"./browser_util\":52,\"./environment\":55,\"./globals\":57,\"./io/io\":63,\"./kernels/backend_cpu\":71,\"./kernels/backend_webgl\":73,\"./ops/loss_ops\":135,\"./ops/ops\":142,\"./optimizers/adadelta_optimizer\":160,\"./optimizers/adagrad_optimizer\":161,\"./optimizers/adam_optimizer\":162,\"./optimizers/adamax_optimizer\":163,\"./optimizers/momentum_optimizer\":164,\"./optimizers/optimizer\":165,\"./optimizers/rmsprop_optimizer\":168,\"./optimizers/sgd_optimizer\":169,\"./serialization\":171,\"./tensor\":173,\"./test_util\":177,\"./train\":178,\"./types\":179,\"./util\":180,\"./version\":181,\"./webgl\":182}],60:[function(require,module,exports){\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 = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, 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 environment_1 = require(\"../environment\");\nvar io_utils_1 = require(\"./io_utils\");\nvar router_registry_1 = require(\"./router_registry\");\nvar DEFAULT_FILE_NAME_PREFIX = 'model';\nvar DEFAULT_JSON_EXTENSION_NAME = '.json';\nvar DEFAULT_WEIGHT_DATA_EXTENSION_NAME = '.weights.bin';\nvar BrowserDownloads = (function () {\n    function BrowserDownloads(fileNamePrefix) {\n        if (!environment_1.ENV.get('IS_BROWSER')) {\n            throw new Error('triggerDownloads() cannot proceed because the current environment ' +\n                'is not a browser.');\n        }\n        if (fileNamePrefix.startsWith(BrowserDownloads.URL_SCHEME)) {\n            fileNamePrefix = fileNamePrefix.slice(BrowserDownloads.URL_SCHEME.length);\n        }\n        if (fileNamePrefix == null || fileNamePrefix.length === 0) {\n            fileNamePrefix = DEFAULT_FILE_NAME_PREFIX;\n        }\n        this.modelTopologyFileName = fileNamePrefix + DEFAULT_JSON_EXTENSION_NAME;\n        this.weightDataFileName =\n            fileNamePrefix + DEFAULT_WEIGHT_DATA_EXTENSION_NAME;\n    }\n    BrowserDownloads.prototype.save = function (modelArtifacts) {\n        return __awaiter(this, void 0, void 0, function () {\n            var weightsURL, weightsManifest, modelTopologyAndWeightManifest, modelTopologyAndWeightManifestURL, jsonAnchor, weightDataAnchor;\n            return __generator(this, function (_a) {\n                weightsURL = window.URL.createObjectURL(new Blob([modelArtifacts.weightData], { type: 'application/octet-stream' }));\n                if (modelArtifacts.modelTopology instanceof ArrayBuffer) {\n                    throw new Error('DownloadTrigger.save() does not support saving model topology ' +\n                        'in binary formats yet.');\n                }\n                else {\n                    weightsManifest = [{\n                            paths: ['./' + this.weightDataFileName],\n                            weights: modelArtifacts.weightSpecs\n                        }];\n                    modelTopologyAndWeightManifest = {\n                        modelTopology: modelArtifacts.modelTopology,\n                        weightsManifest: weightsManifest\n                    };\n                    modelTopologyAndWeightManifestURL = window.URL.createObjectURL(new Blob([JSON.stringify(modelTopologyAndWeightManifest)], { type: 'application/json' }));\n                    jsonAnchor = this.jsonAnchor == null ? document.createElement('a') :\n                        this.jsonAnchor;\n                    jsonAnchor.download = this.modelTopologyFileName;\n                    jsonAnchor.href = modelTopologyAndWeightManifestURL;\n                    jsonAnchor.click();\n                    if (modelArtifacts.weightData != null) {\n                        weightDataAnchor = this.weightDataAnchor == null ?\n                            document.createElement('a') :\n                            this.weightDataAnchor;\n                        weightDataAnchor.download = this.weightDataFileName;\n                        weightDataAnchor.href = weightsURL;\n                        weightDataAnchor.click();\n                    }\n                    return [2, { modelArtifactsInfo: io_utils_1.getModelArtifactsInfoForJSON(modelArtifacts) }];\n                }\n                return [2];\n            });\n        });\n    };\n    BrowserDownloads.URL_SCHEME = 'downloads://';\n    return BrowserDownloads;\n}());\nexports.BrowserDownloads = BrowserDownloads;\nvar BrowserFiles = (function () {\n    function BrowserFiles(files) {\n        if (files == null || files.length < 1) {\n            throw new Error(\"When calling browserFiles, at least 1 file is required, \" +\n                (\"but received \" + files));\n        }\n        this.files = files;\n    }\n    BrowserFiles.prototype.load = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var jsonFile, weightFiles;\n            var _this = this;\n            return __generator(this, function (_a) {\n                jsonFile = this.files[0];\n                weightFiles = this.files.slice(1);\n                return [2, new Promise(function (resolve, reject) {\n                        var jsonReader = new FileReader();\n                        jsonReader.onload = function (event) {\n                            var modelJSON = JSON.parse(event.target.result);\n                            var modelTopology = modelJSON.modelTopology;\n                            if (modelTopology == null) {\n                                reject(new Error(\"modelTopology field is missing from file \" + jsonFile.name));\n                                return;\n                            }\n                            if (weightFiles.length === 0) {\n                                resolve({ modelTopology: modelTopology });\n                            }\n                            var weightsManifest = modelJSON.weightsManifest;\n                            if (weightsManifest == null) {\n                                reject(new Error(\"weightManifest field is missing from file \" + jsonFile.name));\n                                return;\n                            }\n                            var pathToFile;\n                            try {\n                                pathToFile =\n                                    _this.checkManifestAndWeightFiles(weightsManifest, weightFiles);\n                            }\n                            catch (err) {\n                                reject(err);\n                                return;\n                            }\n                            var weightSpecs = [];\n                            var paths = [];\n                            var perFileBuffers = [];\n                            weightsManifest.forEach(function (weightsGroup) {\n                                weightsGroup.paths.forEach(function (path) {\n                                    paths.push(path);\n                                    perFileBuffers.push(null);\n                                });\n                                weightSpecs.push.apply(weightSpecs, weightsGroup.weights);\n                            });\n                            weightsManifest.forEach(function (weightsGroup) {\n                                weightsGroup.paths.forEach(function (path) {\n                                    var weightFileReader = new FileReader();\n                                    weightFileReader.onload = function (event) {\n                                        var weightData = event.target.result;\n                                        var index = paths.indexOf(path);\n                                        perFileBuffers[index] = weightData;\n                                        if (perFileBuffers.indexOf(null) === -1) {\n                                            resolve({\n                                                modelTopology: modelTopology,\n                                                weightSpecs: weightSpecs,\n                                                weightData: io_utils_1.concatenateArrayBuffers(perFileBuffers),\n                                            });\n                                        }\n                                    };\n                                    weightFileReader.onerror = function (error) {\n                                        reject(\"Failed to weights data from file of path '\" + path + \"'.\");\n                                        return;\n                                    };\n                                    weightFileReader.readAsArrayBuffer(pathToFile[path]);\n                                });\n                            });\n                        };\n                        jsonReader.onerror = function (error) {\n                            reject(\"Failed to read model topology and weights manifest JSON \" +\n                                (\"from file '\" + jsonFile.name + \"'. BrowserFiles supports loading \") +\n                                \"Keras-style tf.Model artifacts only.\");\n                            return;\n                        };\n                        jsonReader.readAsText(jsonFile);\n                    })];\n            });\n        });\n    };\n    BrowserFiles.prototype.checkManifestAndWeightFiles = function (manifest, files) {\n        var basenames = [];\n        var fileNames = files.map(function (file) { return io_utils_1.basename(file.name); });\n        var pathToFile = {};\n        for (var _i = 0, manifest_1 = manifest; _i < manifest_1.length; _i++) {\n            var group = manifest_1[_i];\n            group.paths.forEach(function (path) {\n                var pathBasename = io_utils_1.basename(path);\n                if (basenames.indexOf(pathBasename) !== -1) {\n                    throw new Error(\"Duplicate file basename found in weights manifest: \" +\n                        (\"'\" + pathBasename + \"'\"));\n                }\n                basenames.push(pathBasename);\n                if (fileNames.indexOf(pathBasename) === -1) {\n                    throw new Error(\"Weight file with basename '\" + pathBasename + \"' is not provided.\");\n                }\n                else {\n                    pathToFile[path] = files[fileNames.indexOf(pathBasename)];\n                }\n            });\n        }\n        if (basenames.length !== files.length) {\n            throw new Error(\"Mismatch in the number of files in weights manifest \" +\n                (\"(\" + basenames.length + \") and the number of weight files provided \") +\n                (\"(\" + files.length + \").\"));\n        }\n        return pathToFile;\n    };\n    return BrowserFiles;\n}());\nexports.browserDownloadsRouter = function (url) {\n    if (!environment_1.ENV.get('IS_BROWSER')) {\n        return null;\n    }\n    else {\n        if (url.startsWith(BrowserDownloads.URL_SCHEME)) {\n            return browserDownloads(url.slice(BrowserDownloads.URL_SCHEME.length));\n        }\n        else {\n            return null;\n        }\n    }\n};\nrouter_registry_1.IORouterRegistry.registerSaveRouter(exports.browserDownloadsRouter);\nfunction browserDownloads(fileNamePrefix) {\n    if (fileNamePrefix === void 0) { fileNamePrefix = 'model'; }\n    return new BrowserDownloads(fileNamePrefix);\n}\nexports.browserDownloads = browserDownloads;\nfunction browserFiles(files) {\n    return new BrowserFiles(files);\n}\nexports.browserFiles = browserFiles;\n\n},{\"../environment\":55,\"./io_utils\":64,\"./router_registry\":68}],61:[function(require,module,exports){\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 = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, 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 util_1 = require(\"../util\");\nvar io_utils_1 = require(\"./io_utils\");\nvar router_registry_1 = require(\"./router_registry\");\nvar weights_loader_1 = require(\"./weights_loader\");\nvar BrowserHTTPRequest = (function () {\n    function BrowserHTTPRequest(path, requestInit) {\n        this.DEFAULT_METHOD = 'POST';\n        if (typeof fetch === 'undefined') {\n            throw new Error('browserHTTPRequest is not supported outside the web browser without a fetch polyfill.');\n        }\n        util_1.assert(path != null && path.length > 0, 'URL path for browserHTTPRequest must not be null, undefined or ' +\n            'empty.');\n        this.path = path;\n        if (requestInit != null && requestInit.body != null) {\n            throw new Error('requestInit is expected to have no pre-existing body, but has one.');\n        }\n        this.requestInit = requestInit || {};\n    }\n    BrowserHTTPRequest.prototype.save = function (modelArtifacts) {\n        return __awaiter(this, void 0, void 0, function () {\n            var init, weightsManifest, modelTopologyAndWeightManifest, response;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (modelArtifacts.modelTopology instanceof ArrayBuffer) {\n                            throw new Error('BrowserHTTPRequest.save() does not support saving model topology ' +\n                                'in binary formats yet.');\n                        }\n                        init = Object.assign({ method: this.DEFAULT_METHOD }, this.requestInit);\n                        init.body = new FormData();\n                        weightsManifest = [{\n                                paths: ['./model.weights.bin'],\n                                weights: modelArtifacts.weightSpecs,\n                            }];\n                        modelTopologyAndWeightManifest = {\n                            modelTopology: modelArtifacts.modelTopology,\n                            weightsManifest: weightsManifest\n                        };\n                        init.body.append('model.json', new Blob([JSON.stringify(modelTopologyAndWeightManifest)], { type: 'application/json' }), 'model.json');\n                        if (modelArtifacts.weightData != null) {\n                            init.body.append('model.weights.bin', new Blob([modelArtifacts.weightData], { type: 'application/octet-stream' }), 'model.weights.bin');\n                        }\n                        return [4, fetch(this.path, init)];\n                    case 1:\n                        response = _a.sent();\n                        if (response.status === 200) {\n                            return [2, {\n                                    modelArtifactsInfo: io_utils_1.getModelArtifactsInfoForJSON(modelArtifacts),\n                                    responses: [response],\n                                }];\n                        }\n                        else {\n                            throw new Error(\"BrowserHTTPRequest.save() failed due to HTTP response status \" +\n                                (response.status + \".\"));\n                        }\n                        return [2];\n                }\n            });\n        });\n    };\n    BrowserHTTPRequest.prototype.load = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var modelConfigRequest, modelConfig, modelTopology, weightsManifest, weightSpecs, weightData, weightsManifest_2, _i, weightsManifest_1, entry, pathPrefix_1, fetchURLs_1, _a;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0: return [4, fetch(this.path, this.requestInit)];\n                    case 1:\n                        modelConfigRequest = _b.sent();\n                        return [4, modelConfigRequest.json()];\n                    case 2:\n                        modelConfig = _b.sent();\n                        modelTopology = modelConfig['modelTopology'];\n                        weightsManifest = modelConfig['weightsManifest'];\n                        if (modelTopology == null && weightsManifest == null) {\n                            throw new Error(\"The JSON from HTTP path \" + this.path + \" contains neither model \" +\n                                \"topology or manifest for weights.\");\n                        }\n                        if (!(weightsManifest != null)) return [3, 4];\n                        weightsManifest_2 = modelConfig['weightsManifest'];\n                        weightSpecs = [];\n                        for (_i = 0, weightsManifest_1 = weightsManifest_2; _i < weightsManifest_1.length; _i++) {\n                            entry = weightsManifest_1[_i];\n                            weightSpecs.push.apply(weightSpecs, entry.weights);\n                        }\n                        pathPrefix_1 = this.path.substring(0, this.path.lastIndexOf('/'));\n                        if (!pathPrefix_1.endsWith('/')) {\n                            pathPrefix_1 = pathPrefix_1 + '/';\n                        }\n                        fetchURLs_1 = [];\n                        weightsManifest_2.forEach(function (weightsGroup) {\n                            weightsGroup.paths.forEach(function (path) {\n                                fetchURLs_1.push(pathPrefix_1 + path);\n                            });\n                        });\n                        _a = io_utils_1.concatenateArrayBuffers;\n                        return [4, weights_loader_1.loadWeightsAsArrayBuffer(fetchURLs_1, this.requestInit)];\n                    case 3:\n                        weightData = _a.apply(void 0, [_b.sent()]);\n                        _b.label = 4;\n                    case 4: return [2, { modelTopology: modelTopology, weightSpecs: weightSpecs, weightData: weightData }];\n                }\n            });\n        });\n    };\n    BrowserHTTPRequest.URL_SCHEMES = ['http://', 'https://'];\n    return BrowserHTTPRequest;\n}());\nexports.BrowserHTTPRequest = BrowserHTTPRequest;\nexports.httpRequestRouter = function (url) {\n    if (typeof fetch === 'undefined') {\n        return null;\n    }\n    else {\n        for (var _i = 0, _a = BrowserHTTPRequest.URL_SCHEMES; _i < _a.length; _i++) {\n            var scheme = _a[_i];\n            if (url.startsWith(scheme)) {\n                return browserHTTPRequest(url);\n            }\n        }\n        return null;\n    }\n};\nrouter_registry_1.IORouterRegistry.registerSaveRouter(exports.httpRequestRouter);\nrouter_registry_1.IORouterRegistry.registerLoadRouter(exports.httpRequestRouter);\nfunction browserHTTPRequest(path, requestInit) {\n    return new BrowserHTTPRequest(path, requestInit);\n}\nexports.browserHTTPRequest = browserHTTPRequest;\n\n},{\"../util\":180,\"./io_utils\":64,\"./router_registry\":68,\"./weights_loader\":70}],62:[function(require,module,exports){\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 = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, 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 environment_1 = require(\"../environment\");\nvar io_utils_1 = require(\"./io_utils\");\nvar model_management_1 = require(\"./model_management\");\nvar router_registry_1 = require(\"./router_registry\");\nvar DATABASE_NAME = 'tensorflowjs';\nvar DATABASE_VERSION = 1;\nvar MODEL_STORE_NAME = 'models_store';\nvar INFO_STORE_NAME = 'model_info_store';\nfunction deleteDatabase() {\n    return __awaiter(this, void 0, void 0, function () {\n        var idbFactory;\n        return __generator(this, function (_a) {\n            idbFactory = getIndexedDBFactory();\n            return [2, new Promise(function (resolve, reject) {\n                    var deleteRequest = idbFactory.deleteDatabase(DATABASE_NAME);\n                    deleteRequest.onsuccess = function () { return resolve(); };\n                    deleteRequest.onerror = function (error) { return reject(error); };\n                })];\n        });\n    });\n}\nexports.deleteDatabase = deleteDatabase;\nfunction getIndexedDBFactory() {\n    if (!environment_1.ENV.get('IS_BROWSER')) {\n        throw new Error('Failed to obtain IndexedDB factory because the current environment' +\n            'is not a web browser.');\n    }\n    var theWindow = window;\n    var factory = theWindow.indexedDB || theWindow.mozIndexedDB ||\n        theWindow.webkitIndexedDB || theWindow.msIndexedDB ||\n        theWindow.shimIndexedDB;\n    if (factory == null) {\n        throw new Error('The current browser does not appear to support IndexedDB.');\n    }\n    return factory;\n}\nfunction setUpDatabase(openRequest) {\n    var db = openRequest.result;\n    db.createObjectStore(MODEL_STORE_NAME, { keyPath: 'modelPath' });\n    db.createObjectStore(INFO_STORE_NAME, { keyPath: 'modelPath' });\n}\nvar BrowserIndexedDB = (function () {\n    function BrowserIndexedDB(modelPath) {\n        this.indexedDB = getIndexedDBFactory();\n        if (modelPath == null || !modelPath) {\n            throw new Error('For IndexedDB, modelPath must not be null, undefined or empty.');\n        }\n        this.modelPath = modelPath;\n    }\n    BrowserIndexedDB.prototype.save = function (modelArtifacts) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                if (modelArtifacts.modelTopology instanceof ArrayBuffer) {\n                    throw new Error('BrowserLocalStorage.save() does not support saving model topology ' +\n                        'in binary formats yet.');\n                }\n                return [2, this.databaseAction(this.modelPath, modelArtifacts)];\n            });\n        });\n    };\n    BrowserIndexedDB.prototype.load = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                return [2, this.databaseAction(this.modelPath)];\n            });\n        });\n    };\n    BrowserIndexedDB.prototype.databaseAction = function (modelPath, modelArtifacts) {\n        var _this = this;\n        return new Promise(function (resolve, reject) {\n            var openRequest = _this.indexedDB.open(DATABASE_NAME, DATABASE_VERSION);\n            openRequest.onupgradeneeded = function () { return setUpDatabase(openRequest); };\n            openRequest.onsuccess = function () {\n                var db = openRequest.result;\n                if (modelArtifacts == null) {\n                    var modelTx = db.transaction(MODEL_STORE_NAME, 'readonly');\n                    var modelStore = modelTx.objectStore(MODEL_STORE_NAME);\n                    var getRequest_1 = modelStore.get(_this.modelPath);\n                    getRequest_1.onsuccess = function () {\n                        if (getRequest_1.result == null) {\n                            db.close();\n                            return reject(new Error(\"Cannot find model with path '\" + _this.modelPath + \"' \" +\n                                \"in IndexedDB.\"));\n                        }\n                        else {\n                            resolve(getRequest_1.result.modelArtifacts);\n                        }\n                    };\n                    getRequest_1.onerror = function (error) {\n                        db.close();\n                        return reject(getRequest_1.error);\n                    };\n                    modelTx.oncomplete = function () { return db.close(); };\n                }\n                else {\n                    var modelArtifactsInfo_1 = io_utils_1.getModelArtifactsInfoForJSON(modelArtifacts);\n                    var infoTx_1 = db.transaction(INFO_STORE_NAME, 'readwrite');\n                    var infoStore_1 = infoTx_1.objectStore(INFO_STORE_NAME);\n                    var putInfoRequest_1 = infoStore_1.put({ modelPath: _this.modelPath, modelArtifactsInfo: modelArtifactsInfo_1 });\n                    var modelTx_1;\n                    putInfoRequest_1.onsuccess = function () {\n                        modelTx_1 = db.transaction(MODEL_STORE_NAME, 'readwrite');\n                        var modelStore = modelTx_1.objectStore(MODEL_STORE_NAME);\n                        var putModelRequest = modelStore.put({\n                            modelPath: _this.modelPath,\n                            modelArtifacts: modelArtifacts,\n                            modelArtifactsInfo: modelArtifactsInfo_1\n                        });\n                        putModelRequest.onsuccess = function () { return resolve({ modelArtifactsInfo: modelArtifactsInfo_1 }); };\n                        putModelRequest.onerror = function (error) {\n                            infoStore_1 = infoTx_1.objectStore(INFO_STORE_NAME);\n                            var deleteInfoRequest = infoStore_1.delete(_this.modelPath);\n                            deleteInfoRequest.onsuccess = function () {\n                                db.close();\n                                return reject(putModelRequest.error);\n                            };\n                            deleteInfoRequest.onerror = function (error) {\n                                db.close();\n                                return reject(putModelRequest.error);\n                            };\n                        };\n                    };\n                    putInfoRequest_1.onerror = function (error) {\n                        db.close();\n                        return reject(putInfoRequest_1.error);\n                    };\n                    infoTx_1.oncomplete = function () {\n                        if (modelTx_1 == null) {\n                            db.close();\n                        }\n                        else {\n                            modelTx_1.oncomplete = function () { return db.close(); };\n                        }\n                    };\n                }\n            };\n            openRequest.onerror = function (error) { return reject(openRequest.error); };\n        });\n    };\n    BrowserIndexedDB.URL_SCHEME = 'indexeddb://';\n    return BrowserIndexedDB;\n}());\nexports.BrowserIndexedDB = BrowserIndexedDB;\nexports.indexedDBRouter = function (url) {\n    if (!environment_1.ENV.get('IS_BROWSER')) {\n        return null;\n    }\n    else {\n        if (url.startsWith(BrowserIndexedDB.URL_SCHEME)) {\n            return browserIndexedDB(url.slice(BrowserIndexedDB.URL_SCHEME.length));\n        }\n        else {\n            return null;\n        }\n    }\n};\nrouter_registry_1.IORouterRegistry.registerSaveRouter(exports.indexedDBRouter);\nrouter_registry_1.IORouterRegistry.registerLoadRouter(exports.indexedDBRouter);\nfunction browserIndexedDB(modelPath) {\n    return new BrowserIndexedDB(modelPath);\n}\nexports.browserIndexedDB = browserIndexedDB;\nfunction maybeStripScheme(key) {\n    return key.startsWith(BrowserIndexedDB.URL_SCHEME) ?\n        key.slice(BrowserIndexedDB.URL_SCHEME.length) :\n        key;\n}\nvar BrowserIndexedDBManager = (function () {\n    function BrowserIndexedDBManager() {\n        this.indexedDB = getIndexedDBFactory();\n    }\n    BrowserIndexedDBManager.prototype.listModels = function () {\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 (resolve, reject) {\n                        var openRequest = _this.indexedDB.open(DATABASE_NAME, DATABASE_VERSION);\n                        openRequest.onupgradeneeded = function () { return setUpDatabase(openRequest); };\n                        openRequest.onsuccess = function () {\n                            var db = openRequest.result;\n                            var tx = db.transaction(INFO_STORE_NAME, 'readonly');\n                            var store = tx.objectStore(INFO_STORE_NAME);\n                            var getAllInfoRequest = store.getAll();\n                            getAllInfoRequest.onsuccess = function () {\n                                var out = {};\n                                for (var _i = 0, _a = getAllInfoRequest.result; _i < _a.length; _i++) {\n                                    var item = _a[_i];\n                                    out[item.modelPath] = item.modelArtifactsInfo;\n                                }\n                                resolve(out);\n                            };\n                            getAllInfoRequest.onerror = function (error) {\n                                db.close();\n                                return reject(getAllInfoRequest.error);\n                            };\n                            tx.oncomplete = function () { return db.close(); };\n                        };\n                        openRequest.onerror = function (error) { return reject(openRequest.error); };\n                    })];\n            });\n        });\n    };\n    BrowserIndexedDBManager.prototype.removeModel = function (path) {\n        return __awaiter(this, void 0, void 0, function () {\n            var _this = this;\n            return __generator(this, function (_a) {\n                path = maybeStripScheme(path);\n                return [2, new Promise(function (resolve, reject) {\n                        var openRequest = _this.indexedDB.open(DATABASE_NAME, DATABASE_VERSION);\n                        openRequest.onupgradeneeded = function () { return setUpDatabase(openRequest); };\n                        openRequest.onsuccess = function () {\n                            var db = openRequest.result;\n                            var infoTx = db.transaction(INFO_STORE_NAME, 'readwrite');\n                            var infoStore = infoTx.objectStore(INFO_STORE_NAME);\n                            var getInfoRequest = infoStore.get(path);\n                            var modelTx;\n                            getInfoRequest.onsuccess = function () {\n                                if (getInfoRequest.result == null) {\n                                    db.close();\n                                    return reject(new Error(\"Cannot find model with path '\" + path + \"' \" +\n                                        \"in IndexedDB.\"));\n                                }\n                                else {\n                                    var deleteInfoRequest = infoStore.delete(path);\n                                    var deleteModelData_1 = function () {\n                                        modelTx = db.transaction(MODEL_STORE_NAME, 'readwrite');\n                                        var modelStore = modelTx.objectStore(MODEL_STORE_NAME);\n                                        var deleteModelRequest = modelStore.delete(path);\n                                        deleteModelRequest.onsuccess = function () {\n                                            return resolve(getInfoRequest.result.modelArtifactsInfo);\n                                        };\n                                        deleteModelRequest.onerror = function (error) {\n                                            return reject(getInfoRequest.error);\n                                        };\n                                    };\n                                    deleteInfoRequest.onsuccess = deleteModelData_1;\n                                    deleteInfoRequest.onerror = function (error) {\n                                        deleteModelData_1();\n                                        db.close();\n                                        return reject(getInfoRequest.error);\n                                    };\n                                }\n                            };\n                            getInfoRequest.onerror = function (error) {\n                                db.close();\n                                return reject(getInfoRequest.error);\n                            };\n                            infoTx.oncomplete = function () {\n                                if (modelTx == null) {\n                                    db.close();\n                                }\n                                else {\n                                    modelTx.oncomplete = function () { return db.close(); };\n                                }\n                            };\n                        };\n                        openRequest.onerror = function (error) { return reject(openRequest.error); };\n                    })];\n            });\n        });\n    };\n    return BrowserIndexedDBManager;\n}());\nexports.BrowserIndexedDBManager = BrowserIndexedDBManager;\nif (environment_1.ENV.get('IS_BROWSER')) {\n    try {\n        model_management_1.ModelStoreManagerRegistry.registerManager(BrowserIndexedDB.URL_SCHEME, new BrowserIndexedDBManager());\n    }\n    catch (err) {\n    }\n}\n\n},{\"../environment\":55,\"./io_utils\":64,\"./model_management\":66,\"./router_registry\":68}],63:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nrequire(\"./indexed_db\");\nrequire(\"./local_storage\");\nvar browser_files_1 = require(\"./browser_files\");\nexports.browserFiles = browser_files_1.browserFiles;\nvar browser_http_1 = require(\"./browser_http\");\nexports.browserHTTPRequest = browser_http_1.browserHTTPRequest;\nvar io_utils_1 = require(\"./io_utils\");\nexports.concatenateArrayBuffers = io_utils_1.concatenateArrayBuffers;\nexports.decodeWeights = io_utils_1.decodeWeights;\nexports.encodeWeights = io_utils_1.encodeWeights;\nexports.getModelArtifactsInfoForJSON = io_utils_1.getModelArtifactsInfoForJSON;\nvar passthrough_1 = require(\"./passthrough\");\nexports.fromMemory = passthrough_1.fromMemory;\nexports.withSaveHandler = passthrough_1.withSaveHandler;\nvar router_registry_1 = require(\"./router_registry\");\nvar weights_loader_1 = require(\"./weights_loader\");\nexports.loadWeights = weights_loader_1.loadWeights;\nvar registerSaveRouter = router_registry_1.IORouterRegistry.registerSaveRouter;\nexports.registerSaveRouter = registerSaveRouter;\nvar registerLoadRouter = router_registry_1.IORouterRegistry.registerLoadRouter;\nexports.registerLoadRouter = registerLoadRouter;\nvar getSaveHandlers = router_registry_1.IORouterRegistry.getSaveHandlers;\nexports.getSaveHandlers = getSaveHandlers;\nvar getLoadHandlers = router_registry_1.IORouterRegistry.getLoadHandlers;\nexports.getLoadHandlers = getLoadHandlers;\nvar model_management_1 = require(\"./model_management\");\nexports.copyModel = model_management_1.copyModel;\nexports.listModels = model_management_1.listModels;\nexports.moveModel = model_management_1.moveModel;\nexports.removeModel = model_management_1.removeModel;\n\n},{\"./browser_files\":60,\"./browser_http\":61,\"./indexed_db\":62,\"./io_utils\":64,\"./local_storage\":65,\"./model_management\":66,\"./passthrough\":67,\"./router_registry\":68,\"./weights_loader\":70}],64:[function(require,module,exports){\n(function (Buffer){\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 = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, 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 tensor_ops_1 = require(\"../ops/tensor_ops\");\nvar util_1 = require(\"../util\");\nvar types_1 = require(\"./types\");\nfunction encodeWeights(tensors) {\n    return __awaiter(this, void 0, void 0, function () {\n        var specs, dataPromises, name_1, t, tensorValues;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    specs = [];\n                    dataPromises = [];\n                    for (name_1 in tensors) {\n                        t = tensors[name_1];\n                        if (t.dtype !== 'float32' && t.dtype !== 'int32' && t.dtype !== 'bool') {\n                            throw new Error(\"Unsupported dtype in weight '\" + name_1 + \"': \" + t.dtype);\n                        }\n                        specs.push({ name: name_1, shape: t.shape, dtype: t.dtype });\n                        dataPromises.push(t.data());\n                    }\n                    return [4, Promise.all(dataPromises)];\n                case 1:\n                    tensorValues = _a.sent();\n                    return [2, { data: concatenateTypedArrays(tensorValues), specs: specs }];\n            }\n        });\n    });\n}\nexports.encodeWeights = encodeWeights;\nfunction decodeWeights(buffer, specs) {\n    var out = {};\n    var offset = 0;\n    for (var _i = 0, specs_1 = specs; _i < specs_1.length; _i++) {\n        var spec = specs_1[_i];\n        var name_2 = spec.name;\n        var dtype = spec.dtype;\n        var shape = spec.shape;\n        if (spec.quantization != null) {\n            throw new Error(\"decodeWeights does not support quantization yet, but encountered \" +\n                (\"weight '\" + name_2 + \" with quantization.'\"));\n        }\n        var size = util_1.sizeFromShape(shape);\n        var value = void 0;\n        if (dtype === 'float32') {\n            value = tensor_ops_1.tensor(new Float32Array(buffer, offset, size), shape, 'float32');\n        }\n        else if (dtype === 'int32') {\n            value = tensor_ops_1.tensor(new Int32Array(buffer, offset, size), shape, 'int32');\n        }\n        else if (dtype === 'bool') {\n            value = tensor_ops_1.tensor(new Uint8Array(buffer, offset, size), shape, 'bool');\n        }\n        else {\n            throw new Error(\"Unsupported dtype in weight '\" + name_2 + \"': \" + dtype);\n        }\n        out[name_2] = value;\n        offset += size * types_1.DTYPE_VALUE_SIZE_MAP[dtype];\n    }\n    return out;\n}\nexports.decodeWeights = decodeWeights;\nfunction concatenateTypedArrays(xs) {\n    if (xs === null) {\n        throw new Error(\"Invalid input value: \" + JSON.stringify(xs));\n    }\n    var totalByteLength = 0;\n    var normalizedXs = [];\n    xs.forEach(function (x) {\n        totalByteLength += x.byteLength;\n        normalizedXs.push(x.byteLength === x.buffer.byteLength ? x :\n            new x.constructor(x));\n        if (!(x instanceof Float32Array || x instanceof Int32Array ||\n            x instanceof Uint8Array)) {\n            throw new Error(\"Unsupported TypedArray subtype: \" + x.constructor.name);\n        }\n    });\n    var y = new Uint8Array(totalByteLength);\n    var offset = 0;\n    normalizedXs.forEach(function (x) {\n        y.set(new Uint8Array(x.buffer), offset);\n        offset += x.byteLength;\n    });\n    return y.buffer;\n}\nexports.concatenateTypedArrays = concatenateTypedArrays;\nvar useNodeBuffer = typeof Buffer !== 'undefined' &&\n    (typeof Blob === 'undefined' || typeof atob === 'undefined' ||\n        typeof btoa === 'undefined');\nfunction stringByteLength(str) {\n    if (useNodeBuffer) {\n        return Buffer.byteLength(str);\n    }\n    return new Blob([str]).size;\n}\nexports.stringByteLength = stringByteLength;\nfunction arrayBufferToBase64String(buffer) {\n    if (useNodeBuffer) {\n        return Buffer.from(buffer).toString('base64');\n    }\n    return btoa(String.fromCharCode.apply(null, new Uint8Array(buffer)));\n}\nexports.arrayBufferToBase64String = arrayBufferToBase64String;\nfunction base64StringToArrayBuffer(str) {\n    if (useNodeBuffer) {\n        var buf = Buffer.from(str, 'base64');\n        return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n    }\n    var s = atob(str);\n    var buffer = new Uint8Array(s.length);\n    for (var i = 0; i < s.length; ++i) {\n        buffer.set([s.charCodeAt(i)], i);\n    }\n    return buffer.buffer;\n}\nexports.base64StringToArrayBuffer = base64StringToArrayBuffer;\nfunction concatenateArrayBuffers(buffers) {\n    var totalByteLength = 0;\n    buffers.forEach(function (buffer) {\n        totalByteLength += buffer.byteLength;\n    });\n    var temp = new Uint8Array(totalByteLength);\n    var offset = 0;\n    buffers.forEach(function (buffer) {\n        temp.set(new Uint8Array(buffer), offset);\n        offset += buffer.byteLength;\n    });\n    return temp.buffer;\n}\nexports.concatenateArrayBuffers = concatenateArrayBuffers;\nfunction basename(path) {\n    var SEPARATOR = '/';\n    path = path.trim();\n    while (path.endsWith(SEPARATOR)) {\n        path = path.slice(0, path.length - 1);\n    }\n    var items = path.split(SEPARATOR);\n    return items[items.length - 1];\n}\nexports.basename = basename;\nfunction getModelArtifactsInfoForJSON(modelArtifacts) {\n    if (modelArtifacts.modelTopology instanceof ArrayBuffer) {\n        throw new Error('Expected JSON model topology, received ArrayBuffer.');\n    }\n    return {\n        dateSaved: new Date(),\n        modelTopologyType: 'JSON',\n        modelTopologyBytes: modelArtifacts.modelTopology == null ?\n            0 :\n            stringByteLength(JSON.stringify(modelArtifacts.modelTopology)),\n        weightSpecsBytes: modelArtifacts.weightSpecs == null ?\n            0 :\n            stringByteLength(JSON.stringify(modelArtifacts.weightSpecs)),\n        weightDataBytes: modelArtifacts.weightData == null ?\n            0 :\n            modelArtifacts.weightData.byteLength,\n    };\n}\nexports.getModelArtifactsInfoForJSON = getModelArtifactsInfoForJSON;\n\n}).call(this,require(\"buffer\").Buffer)\n},{\"../ops/tensor_ops\":156,\"../util\":180,\"./types\":69,\"buffer\":241}],65:[function(require,module,exports){\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 = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, 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 environment_1 = require(\"../environment\");\nvar util_1 = require(\"../util\");\nvar io_utils_1 = require(\"./io_utils\");\nvar model_management_1 = require(\"./model_management\");\nvar router_registry_1 = require(\"./router_registry\");\nvar PATH_SEPARATOR = '/';\nvar PATH_PREFIX = 'tensorflowjs_models';\nvar INFO_SUFFIX = 'info';\nvar MODEL_TOPOLOGY_SUFFIX = 'model_topology';\nvar WEIGHT_SPECS_SUFFIX = 'weight_specs';\nvar WEIGHT_DATA_SUFFIX = 'weight_data';\nfunction purgeLocalStorageArtifacts() {\n    if (!environment_1.ENV.get('IS_BROWSER') || typeof window.localStorage === 'undefined') {\n        throw new Error('purgeLocalStorageModels() cannot proceed because local storage is ' +\n            'unavailable in the current environment.');\n    }\n    var LS = window.localStorage;\n    var purgedModelPaths = [];\n    for (var i = 0; i < LS.length; ++i) {\n        var key = LS.key(i);\n        var prefix = PATH_PREFIX + PATH_SEPARATOR;\n        if (key.startsWith(prefix) && key.length > prefix.length) {\n            LS.removeItem(key);\n            var modelName = getModelPathFromKey(key);\n            if (purgedModelPaths.indexOf(modelName) === -1) {\n                purgedModelPaths.push(modelName);\n            }\n        }\n    }\n    return purgedModelPaths;\n}\nexports.purgeLocalStorageArtifacts = purgeLocalStorageArtifacts;\nfunction getModelKeys(path) {\n    return {\n        info: [PATH_PREFIX, path, INFO_SUFFIX].join(PATH_SEPARATOR),\n        topology: [PATH_PREFIX, path, MODEL_TOPOLOGY_SUFFIX].join(PATH_SEPARATOR),\n        weightSpecs: [PATH_PREFIX, path, WEIGHT_SPECS_SUFFIX].join(PATH_SEPARATOR),\n        weightData: [PATH_PREFIX, path, WEIGHT_DATA_SUFFIX].join(PATH_SEPARATOR)\n    };\n}\nfunction getModelPathFromKey(key) {\n    var items = key.split(PATH_SEPARATOR);\n    if (items.length < 3) {\n        throw new Error(\"Invalid key format: \" + key);\n    }\n    return items.slice(1, items.length - 1).join(PATH_SEPARATOR);\n}\nfunction maybeStripScheme(key) {\n    return key.startsWith(BrowserLocalStorage.URL_SCHEME) ?\n        key.slice(BrowserLocalStorage.URL_SCHEME.length) :\n        key;\n}\nvar BrowserLocalStorage = (function () {\n    function BrowserLocalStorage(modelPath) {\n        if (!environment_1.ENV.get('IS_BROWSER') || typeof window.localStorage === 'undefined') {\n            throw new Error('The current environment does not support local storage.');\n        }\n        this.LS = window.localStorage;\n        if (modelPath == null || !modelPath) {\n            throw new Error('For local storage, modelPath must not be null, undefined or empty.');\n        }\n        this.modelPath = modelPath;\n        this.keys = getModelKeys(this.modelPath);\n    }\n    BrowserLocalStorage.prototype.save = function (modelArtifacts) {\n        return __awaiter(this, void 0, void 0, function () {\n            var topology, weightSpecs, modelArtifactsInfo, key;\n            return __generator(this, function (_a) {\n                if (modelArtifacts.modelTopology instanceof ArrayBuffer) {\n                    throw new Error('BrowserLocalStorage.save() does not support saving model topology ' +\n                        'in binary formats yet.');\n                }\n                else {\n                    topology = JSON.stringify(modelArtifacts.modelTopology);\n                    weightSpecs = JSON.stringify(modelArtifacts.weightSpecs);\n                    modelArtifactsInfo = io_utils_1.getModelArtifactsInfoForJSON(modelArtifacts);\n                    try {\n                        this.LS.setItem(this.keys.info, JSON.stringify(modelArtifactsInfo));\n                        this.LS.setItem(this.keys.topology, topology);\n                        this.LS.setItem(this.keys.weightSpecs, weightSpecs);\n                        this.LS.setItem(this.keys.weightData, io_utils_1.arrayBufferToBase64String(modelArtifacts.weightData));\n                        return [2, { modelArtifactsInfo: modelArtifactsInfo }];\n                    }\n                    catch (err) {\n                        for (key in this.keys) {\n                            this.LS.removeItem(this.keys[key]);\n                        }\n                        throw new Error(\"Failed to save model '\" + this.modelPath + \"' to local storage: \" +\n                            \"size quota being exceeded is a possible cause of this failure: \" +\n                            (\"modelTopologyBytes=\" + modelArtifactsInfo.modelTopologyBytes + \", \") +\n                            (\"weightSpecsBytes=\" + modelArtifactsInfo.weightSpecsBytes + \", \") +\n                            (\"weightDataBytes=\" + modelArtifactsInfo.weightDataBytes + \".\"));\n                    }\n                }\n                return [2];\n            });\n        });\n    };\n    BrowserLocalStorage.prototype.load = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var info, out, topology, weightSpecs, weightDataBase64;\n            return __generator(this, function (_a) {\n                info = JSON.parse(this.LS.getItem(this.keys.info));\n                if (info == null) {\n                    throw new Error(\"In local storage, there is no model with name '\" + this.modelPath + \"'\");\n                }\n                if (info.modelTopologyType !== 'JSON') {\n                    throw new Error('BrowserLocalStorage does not support loading non-JSON model ' +\n                        'topology yet.');\n                }\n                out = {};\n                topology = JSON.parse(this.LS.getItem(this.keys.topology));\n                if (topology == null) {\n                    throw new Error(\"In local storage, the topology of model '\" + this.modelPath + \"' \" +\n                        \"is missing.\");\n                }\n                out.modelTopology = topology;\n                weightSpecs = JSON.parse(this.LS.getItem(this.keys.weightSpecs));\n                if (weightSpecs == null) {\n                    throw new Error(\"In local storage, the weight specs of model '\" + this.modelPath + \"' \" +\n                        \"are missing.\");\n                }\n                out.weightSpecs = weightSpecs;\n                weightDataBase64 = this.LS.getItem(this.keys.weightData);\n                if (weightDataBase64 == null) {\n                    throw new Error(\"In local storage, the binary weight values of model \" +\n                        (\"'\" + this.modelPath + \"' are missing.\"));\n                }\n                out.weightData = io_utils_1.base64StringToArrayBuffer(weightDataBase64);\n                return [2, out];\n            });\n        });\n    };\n    BrowserLocalStorage.URL_SCHEME = 'localstorage://';\n    return BrowserLocalStorage;\n}());\nexports.BrowserLocalStorage = BrowserLocalStorage;\nexports.localStorageRouter = function (url) {\n    if (!environment_1.ENV.get('IS_BROWSER')) {\n        return null;\n    }\n    else {\n        if (url.startsWith(BrowserLocalStorage.URL_SCHEME)) {\n            return browserLocalStorage(url.slice(BrowserLocalStorage.URL_SCHEME.length));\n        }\n        else {\n            return null;\n        }\n    }\n};\nrouter_registry_1.IORouterRegistry.registerSaveRouter(exports.localStorageRouter);\nrouter_registry_1.IORouterRegistry.registerLoadRouter(exports.localStorageRouter);\nfunction browserLocalStorage(modelPath) {\n    return new BrowserLocalStorage(modelPath);\n}\nexports.browserLocalStorage = browserLocalStorage;\nvar BrowserLocalStorageManager = (function () {\n    function BrowserLocalStorageManager() {\n        util_1.assert(environment_1.ENV.get('IS_BROWSER'), 'Current environment is not a web browser');\n        util_1.assert(typeof window.localStorage !== 'undefined', 'Current browser does not appear to support localStorage');\n        this.LS = window.localStorage;\n    }\n    BrowserLocalStorageManager.prototype.listModels = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var out, prefix, suffix, i, key, modelPath;\n            return __generator(this, function (_a) {\n                out = {};\n                prefix = PATH_PREFIX + PATH_SEPARATOR;\n                suffix = PATH_SEPARATOR + INFO_SUFFIX;\n                for (i = 0; i < this.LS.length; ++i) {\n                    key = this.LS.key(i);\n                    if (key.startsWith(prefix) && key.endsWith(suffix)) {\n                        modelPath = getModelPathFromKey(key);\n                        out[modelPath] = JSON.parse(this.LS.getItem(key));\n                    }\n                }\n                return [2, out];\n            });\n        });\n    };\n    BrowserLocalStorageManager.prototype.removeModel = function (path) {\n        return __awaiter(this, void 0, void 0, function () {\n            var keys, info;\n            return __generator(this, function (_a) {\n                path = maybeStripScheme(path);\n                keys = getModelKeys(path);\n                if (this.LS.getItem(keys.info) == null) {\n                    throw new Error(\"Cannot find model at path '\" + path + \"'\");\n                }\n                info = JSON.parse(this.LS.getItem(keys.info));\n                this.LS.removeItem(keys.info);\n                this.LS.removeItem(keys.topology);\n                this.LS.removeItem(keys.weightSpecs);\n                this.LS.removeItem(keys.weightData);\n                return [2, info];\n            });\n        });\n    };\n    return BrowserLocalStorageManager;\n}());\nexports.BrowserLocalStorageManager = BrowserLocalStorageManager;\nif (environment_1.ENV.get('IS_BROWSER')) {\n    try {\n        model_management_1.ModelStoreManagerRegistry.registerManager(BrowserLocalStorage.URL_SCHEME, new BrowserLocalStorageManager());\n    }\n    catch (err) {\n    }\n}\n\n},{\"../environment\":55,\"../util\":180,\"./io_utils\":64,\"./model_management\":66,\"./router_registry\":68}],66:[function(require,module,exports){\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 = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, 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 util_1 = require(\"../util\");\nvar router_registry_1 = require(\"./router_registry\");\nvar URL_SCHEME_SUFFIX = '://';\nvar ModelStoreManagerRegistry = (function () {\n    function ModelStoreManagerRegistry() {\n        this.managers = {};\n    }\n    ModelStoreManagerRegistry.getInstance = function () {\n        if (ModelStoreManagerRegistry.instance == null) {\n            ModelStoreManagerRegistry.instance = new ModelStoreManagerRegistry();\n        }\n        return ModelStoreManagerRegistry.instance;\n    };\n    ModelStoreManagerRegistry.registerManager = function (scheme, manager) {\n        util_1.assert(scheme != null, 'scheme must not be undefined or null.');\n        if (scheme.endsWith(URL_SCHEME_SUFFIX)) {\n            scheme = scheme.slice(0, scheme.indexOf(URL_SCHEME_SUFFIX));\n        }\n        util_1.assert(scheme.length > 0, 'scheme must not be an empty string.');\n        var registry = ModelStoreManagerRegistry.getInstance();\n        util_1.assert(registry.managers[scheme] == null, \"A model store manager is already registered for scheme '\" + scheme + \"'.\");\n        registry.managers[scheme] = manager;\n    };\n    ModelStoreManagerRegistry.getManager = function (scheme) {\n        var manager = this.getInstance().managers[scheme];\n        if (manager == null) {\n            throw new Error(\"Cannot find model manager for scheme '\" + scheme + \"'\");\n        }\n        return manager;\n    };\n    ModelStoreManagerRegistry.getSchemes = function () {\n        return Object.keys(this.getInstance().managers);\n    };\n    return ModelStoreManagerRegistry;\n}());\nexports.ModelStoreManagerRegistry = ModelStoreManagerRegistry;\nfunction parseURL(url) {\n    if (url.indexOf(URL_SCHEME_SUFFIX) === -1) {\n        throw new Error(\"The url string provided does not contain a scheme. \" +\n            \"Supported schemes are: \" +\n            (\"\" + ModelStoreManagerRegistry.getSchemes().join(',')));\n    }\n    return {\n        scheme: url.split(URL_SCHEME_SUFFIX)[0],\n        path: url.split(URL_SCHEME_SUFFIX)[1],\n    };\n}\nfunction cloneModelInternal(sourceURL, destURL, deleteSource) {\n    if (deleteSource === void 0) { deleteSource = false; }\n    return __awaiter(this, void 0, void 0, function () {\n        var loadHandlers, loadHandler, saveHandlers, saveHandler, sourceScheme, sourcePath, sameMedium, modelArtifacts, saveResult;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    util_1.assert(sourceURL !== destURL, \"Old path and new path are the same: '\" + sourceURL + \"'\");\n                    loadHandlers = router_registry_1.IORouterRegistry.getLoadHandlers(sourceURL);\n                    util_1.assert(loadHandlers.length > 0, \"Copying failed because no load handler is found for source URL \" + sourceURL + \".\");\n                    util_1.assert(loadHandlers.length < 2, \"Copying failed because more than one (\" + loadHandlers.length + \") \" +\n                        (\"load handlers for source URL \" + sourceURL + \".\"));\n                    loadHandler = loadHandlers[0];\n                    saveHandlers = router_registry_1.IORouterRegistry.getSaveHandlers(destURL);\n                    util_1.assert(saveHandlers.length > 0, \"Copying failed because no save handler is found for destination URL \" +\n                        (destURL + \".\"));\n                    util_1.assert(saveHandlers.length < 2, \"Copying failed because more than one (\" + loadHandlers.length + \") \" +\n                        (\"save handlers for destination URL \" + destURL + \".\"));\n                    saveHandler = saveHandlers[0];\n                    sourceScheme = parseURL(sourceURL).scheme;\n                    sourcePath = parseURL(sourceURL).path;\n                    sameMedium = sourceScheme === parseURL(sourceURL).scheme;\n                    return [4, loadHandler.load()];\n                case 1:\n                    modelArtifacts = _a.sent();\n                    if (!(deleteSource && sameMedium)) return [3, 3];\n                    return [4, ModelStoreManagerRegistry.getManager(sourceScheme)\n                            .removeModel(sourcePath)];\n                case 2:\n                    _a.sent();\n                    _a.label = 3;\n                case 3: return [4, saveHandler.save(modelArtifacts)];\n                case 4:\n                    saveResult = _a.sent();\n                    if (!(deleteSource && !sameMedium)) return [3, 6];\n                    return [4, ModelStoreManagerRegistry.getManager(sourceScheme)\n                            .removeModel(sourcePath)];\n                case 5:\n                    _a.sent();\n                    _a.label = 6;\n                case 6: return [2, saveResult.modelArtifactsInfo];\n            }\n        });\n    });\n}\nfunction listModels() {\n    return __awaiter(this, void 0, void 0, function () {\n        var schemes, out, _i, schemes_1, scheme, schemeOut, path, url;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    schemes = ModelStoreManagerRegistry.getSchemes();\n                    out = {};\n                    _i = 0, schemes_1 = schemes;\n                    _a.label = 1;\n                case 1:\n                    if (!(_i < schemes_1.length)) return [3, 4];\n                    scheme = schemes_1[_i];\n                    return [4, ModelStoreManagerRegistry.getManager(scheme).listModels()];\n                case 2:\n                    schemeOut = _a.sent();\n                    for (path in schemeOut) {\n                        url = scheme + URL_SCHEME_SUFFIX + path;\n                        out[url] = schemeOut[path];\n                    }\n                    _a.label = 3;\n                case 3:\n                    _i++;\n                    return [3, 1];\n                case 4: return [2, out];\n            }\n        });\n    });\n}\nexports.listModels = listModels;\nfunction removeModel(url) {\n    return __awaiter(this, void 0, void 0, function () {\n        var schemeAndPath, manager;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    schemeAndPath = parseURL(url);\n                    manager = ModelStoreManagerRegistry.getManager(schemeAndPath.scheme);\n                    return [4, manager.removeModel(schemeAndPath.path)];\n                case 1: return [2, _a.sent()];\n            }\n        });\n    });\n}\nexports.removeModel = removeModel;\nfunction copyModel(sourceURL, destURL) {\n    return __awaiter(this, void 0, void 0, function () {\n        var deleteSource;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    deleteSource = false;\n                    return [4, cloneModelInternal(sourceURL, destURL, deleteSource)];\n                case 1: return [2, _a.sent()];\n            }\n        });\n    });\n}\nexports.copyModel = copyModel;\nfunction moveModel(sourceURL, destURL) {\n    return __awaiter(this, void 0, void 0, function () {\n        var deleteSource;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    deleteSource = true;\n                    return [4, cloneModelInternal(sourceURL, destURL, deleteSource)];\n                case 1: return [2, _a.sent()];\n            }\n        });\n    });\n}\nexports.moveModel = moveModel;\n\n},{\"../util\":180,\"./router_registry\":68}],67:[function(require,module,exports){\n\"use strict\";\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n        s = arguments[i];\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n            t[p] = s[p];\n    }\n    return t;\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 = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, 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 PassthroughLoader = (function () {\n    function PassthroughLoader(modelTopology, weightSpecs, weightData) {\n        this.modelTopology = modelTopology;\n        this.weightSpecs = weightSpecs;\n        this.weightData = weightData;\n    }\n    PassthroughLoader.prototype.load = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var result;\n            return __generator(this, function (_a) {\n                result = {};\n                if (this.modelTopology != null) {\n                    result = __assign({ modelTopology: this.modelTopology }, result);\n                }\n                if (this.weightSpecs != null && this.weightSpecs.length > 0) {\n                    result = __assign({ weightSpecs: this.weightSpecs }, result);\n                }\n                if (this.weightData != null && this.weightData.byteLength > 0) {\n                    result = __assign({ weightData: this.weightData }, result);\n                }\n                return [2, result];\n            });\n        });\n    };\n    return PassthroughLoader;\n}());\nvar PassthroughSaver = (function () {\n    function PassthroughSaver(saveHandler) {\n        this.saveHandler = saveHandler;\n    }\n    PassthroughSaver.prototype.save = function (modelArtifacts) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                return [2, this.saveHandler(modelArtifacts)];\n            });\n        });\n    };\n    return PassthroughSaver;\n}());\nfunction fromMemory(modelTopology, weightSpecs, weightData) {\n    return new PassthroughLoader(modelTopology, weightSpecs, weightData);\n}\nexports.fromMemory = fromMemory;\nfunction withSaveHandler(saveHandler) {\n    return new PassthroughSaver(saveHandler);\n}\nexports.withSaveHandler = withSaveHandler;\n\n},{}],68:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar IORouterRegistry = (function () {\n    function IORouterRegistry() {\n        this.saveRouters = [];\n        this.loadRouters = [];\n    }\n    IORouterRegistry.getInstance = function () {\n        if (IORouterRegistry.instance == null) {\n            IORouterRegistry.instance = new IORouterRegistry();\n        }\n        return IORouterRegistry.instance;\n    };\n    IORouterRegistry.registerSaveRouter = function (saveRouter) {\n        IORouterRegistry.getInstance().saveRouters.push(saveRouter);\n    };\n    IORouterRegistry.registerLoadRouter = function (loadRouter) {\n        IORouterRegistry.getInstance().loadRouters.push(loadRouter);\n    };\n    IORouterRegistry.getSaveHandlers = function (url) {\n        return IORouterRegistry.getHandlers(url, 'save');\n    };\n    IORouterRegistry.getLoadHandlers = function (url) {\n        return IORouterRegistry.getHandlers(url, 'load');\n    };\n    IORouterRegistry.getHandlers = function (url, handlerType) {\n        var validHandlers = [];\n        var routers = handlerType === 'load' ? this.getInstance().loadRouters :\n            this.getInstance().saveRouters;\n        routers.forEach(function (router) {\n            var handler = router(url);\n            if (handler !== null) {\n                validHandlers.push(handler);\n            }\n        });\n        return validHandlers;\n    };\n    return IORouterRegistry;\n}());\nexports.IORouterRegistry = IORouterRegistry;\n\n},{}],69:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DTYPE_VALUE_SIZE_MAP = {\n    'float32': 4,\n    'int32': 4,\n    'uint16': 2,\n    'uint8': 1,\n    'bool': 1,\n};\n\n},{}],70:[function(require,module,exports){\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 = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, 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 ops_1 = require(\"../ops/ops\");\nvar util = require(\"../util\");\nvar types_1 = require(\"./types\");\nfunction loadWeightsAsArrayBuffer(fetchURLs, requestOptions) {\n    return __awaiter(this, void 0, void 0, function () {\n        var requests, responses, buffers;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    requests = fetchURLs.map(function (fetchURL) { return fetch(fetchURL, requestOptions); });\n                    return [4, Promise.all(requests)];\n                case 1:\n                    responses = _a.sent();\n                    return [4, Promise.all(responses.map(function (response) { return response.arrayBuffer(); }))];\n                case 2:\n                    buffers = _a.sent();\n                    return [2, buffers];\n            }\n        });\n    });\n}\nexports.loadWeightsAsArrayBuffer = loadWeightsAsArrayBuffer;\nfunction loadWeights(manifest, filePathPrefix, weightNames, requestOptions) {\n    if (filePathPrefix === void 0) { filePathPrefix = ''; }\n    return __awaiter(this, void 0, void 0, function () {\n        var groupIndicesToFetchMap, groupWeightsToFetch, weightsFound, allManifestWeightNames, weightsNotFound, groupIndicesToFetch, fetchUrls, buffers, weightsTensorMap, bufferIndexOffset;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    groupIndicesToFetchMap = manifest.map(function () { return false; });\n                    groupWeightsToFetch = {};\n                    weightsFound = weightNames != null ? weightNames.map(function () { return false; }) : [];\n                    allManifestWeightNames = [];\n                    manifest.forEach(function (manifestGroupConfig, groupIndex) {\n                        var groupOffset = 0;\n                        manifestGroupConfig.weights.forEach(function (weightsEntry) {\n                            var rawDtype = ('quantization' in weightsEntry) ?\n                                weightsEntry.quantization.dtype :\n                                weightsEntry.dtype;\n                            var weightsBytes = types_1.DTYPE_VALUE_SIZE_MAP[rawDtype] *\n                                util.sizeFromShape(weightsEntry.shape);\n                            var enqueueWeightsForFetchingFn = function () {\n                                groupIndicesToFetchMap[groupIndex] = true;\n                                if (groupWeightsToFetch[groupIndex] == null) {\n                                    groupWeightsToFetch[groupIndex] = [];\n                                }\n                                groupWeightsToFetch[groupIndex].push({\n                                    manifestEntry: weightsEntry,\n                                    groupOffset: groupOffset,\n                                    sizeBytes: weightsBytes\n                                });\n                            };\n                            if (weightNames != null) {\n                                weightNames.forEach(function (weightName, weightIndex) {\n                                    if (weightName === weightsEntry.name) {\n                                        enqueueWeightsForFetchingFn();\n                                        weightsFound[weightIndex] = true;\n                                    }\n                                });\n                            }\n                            else {\n                                enqueueWeightsForFetchingFn();\n                            }\n                            allManifestWeightNames.push(weightsEntry.name);\n                            groupOffset += weightsBytes;\n                        });\n                    });\n                    if (!weightsFound.every(function (found) { return found; })) {\n                        weightsNotFound = weightNames.filter(function (weight, i) { return !weightsFound[i]; });\n                        throw new Error(\"Could not find weights in manifest with names: \" +\n                            (weightsNotFound.join(', ') + \". \\n\") +\n                            \"Manifest JSON has weights with names: \" +\n                            (allManifestWeightNames.join(', ') + \".\"));\n                    }\n                    groupIndicesToFetch = groupIndicesToFetchMap.reduce(function (accumulator, shouldFetch, i) {\n                        if (shouldFetch) {\n                            accumulator.push(i);\n                        }\n                        return accumulator;\n                    }, []);\n                    fetchUrls = [];\n                    groupIndicesToFetch.forEach(function (i) {\n                        manifest[i].paths.forEach(function (filepath) {\n                            var fetchUrl = filePathPrefix +\n                                (!filePathPrefix.endsWith('/') ? '/' : '') + filepath;\n                            fetchUrls.push(fetchUrl);\n                        });\n                    });\n                    return [4, loadWeightsAsArrayBuffer(fetchUrls, requestOptions)];\n                case 1:\n                    buffers = _a.sent();\n                    weightsTensorMap = {};\n                    bufferIndexOffset = 0;\n                    groupIndicesToFetch.forEach(function (i) {\n                        var numBuffers = manifest[i].paths.length;\n                        var groupBytes = 0;\n                        for (var i_1 = 0; i_1 < numBuffers; i_1++) {\n                            groupBytes += buffers[bufferIndexOffset + i_1].byteLength;\n                        }\n                        var groupBuffer = new ArrayBuffer(groupBytes);\n                        var groupByteBuffer = new Uint8Array(groupBuffer);\n                        var groupBufferOffset = 0;\n                        for (var i_2 = 0; i_2 < numBuffers; i_2++) {\n                            var buffer = new Uint8Array(buffers[bufferIndexOffset + i_2]);\n                            groupByteBuffer.set(buffer, groupBufferOffset);\n                            groupBufferOffset += buffer.byteLength;\n                        }\n                        var weightsEntries = groupWeightsToFetch[i];\n                        weightsEntries.forEach(function (weightsEntry) {\n                            var byteBuffer = groupBuffer.slice(weightsEntry.groupOffset, weightsEntry.groupOffset + weightsEntry.sizeBytes);\n                            var typedArray;\n                            var dtype = weightsEntry.manifestEntry.dtype;\n                            if ('quantization' in weightsEntry.manifestEntry) {\n                                var quantization_1 = weightsEntry.manifestEntry.quantization;\n                                if (quantization_1.dtype !== 'uint8' && quantization_1.dtype !== 'uint16') {\n                                    throw new Error(\"Weight \" + weightsEntry.manifestEntry.name + \" has unknown \" +\n                                        (\"quantization dtype \" + quantization_1.dtype + \".\"));\n                                }\n                                var quantizedArray = (quantization_1.dtype === 'uint8') ?\n                                    new Uint8Array(byteBuffer) :\n                                    new Uint16Array(byteBuffer);\n                                if (dtype === 'float32') {\n                                    typedArray = Float32Array.from(quantizedArray, function (v) { return v * quantization_1.scale + quantization_1.min; });\n                                }\n                                else if (dtype === 'int32') {\n                                    typedArray = Int32Array.from(quantizedArray, function (v) { return Math.round(v * quantization_1.scale + quantization_1.min); });\n                                }\n                                else {\n                                    throw new Error(\"Weight \" + weightsEntry.manifestEntry.name + \" has a dtype not \" +\n                                        (\"supported by quantization: \" + dtype));\n                                }\n                            }\n                            else {\n                                if (dtype === 'float32') {\n                                    typedArray = new Float32Array(byteBuffer);\n                                }\n                                else if (dtype === 'int32') {\n                                    typedArray = new Int32Array(byteBuffer);\n                                }\n                                else if (dtype === 'bool') {\n                                    typedArray = new Uint8Array(byteBuffer);\n                                }\n                                else {\n                                    throw new Error(\"Weight \" + weightsEntry.manifestEntry.name + \" has unknown dtype \" +\n                                        (dtype + \".\"));\n                                }\n                            }\n                            var weightName = weightsEntry.manifestEntry.name;\n                            if (weightsTensorMap[weightName] != null) {\n                                throw new Error(\"Duplicate weight with name \" + weightName + \". \" +\n                                    \"Please make sure weights names are unique in the manifest JSON.\");\n                            }\n                            weightsTensorMap[weightName] = ops_1.tensor(typedArray, weightsEntry.manifestEntry.shape, weightsEntry.manifestEntry.dtype);\n                        });\n                        bufferIndexOffset += numBuffers;\n                    });\n                    return [2, weightsTensorMap];\n            }\n        });\n    });\n}\nexports.loadWeights = loadWeights;\n\n},{\"../ops/ops\":142,\"../util\":180,\"./types\":69}],71:[function(require,module,exports){\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 = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, 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 seedrandom = require(\"seedrandom\");\nvar environment_1 = require(\"../environment\");\nvar log_1 = require(\"../log\");\nvar array_ops_util = require(\"../ops/array_ops_util\");\nvar axis_util = require(\"../ops/axis_util\");\nvar broadcast_util = require(\"../ops/broadcast_util\");\nvar concat_util = require(\"../ops/concat_util\");\nvar erf_util = require(\"../ops/erf_util\");\nvar ops = require(\"../ops/ops\");\nvar ops_1 = require(\"../ops/ops\");\nvar selu_util = require(\"../ops/selu_util\");\nvar slice_util_1 = require(\"../ops/slice_util\");\nvar tensor_1 = require(\"../tensor\");\nvar types_1 = require(\"../types\");\nvar util = require(\"../util\");\nvar util_1 = require(\"../util\");\nvar backend_util = require(\"./backend_util\");\nvar non_max_suppression_impl_1 = require(\"./non_max_suppression_impl\");\nvar topk_impl_1 = require(\"./topk_impl\");\nvar where_impl_1 = require(\"./where_impl\");\nvar MathBackendCPU = (function () {\n    function MathBackendCPU() {\n        this.data = new WeakMap();\n        this.firstUse = true;\n        if (environment_1.ENV.get('IS_BROWSER')) {\n            this.canvas = document.createElement('canvas');\n        }\n    }\n    MathBackendCPU.prototype.register = function (dataId, shape, dtype) {\n        if (this.firstUse) {\n            this.firstUse = false;\n            if (environment_1.ENV.get('IS_NODE')) {\n                log_1.warn('\\n============================\\n' +\n                    'Hi there 👋. Looks like you are running TensorFlow.js in ' +\n                    'Node.js. To speed things up dramatically, install our node ' +\n                    'backend, which binds to TensorFlow C++, by running ' +\n                    'npm i @tensorflow/tfjs-node, ' +\n                    'or npm i @tensorflow/tfjs-node-gpu if you have CUDA. ' +\n                    'Then call require(\\'@tensorflow/tfjs-node\\'); (-gpu ' +\n                    'suffix for CUDA) at the start of your program. ' +\n                    'Visit https://github.com/tensorflow/tfjs-node for more details.' +\n                    '\\n============================\\n');\n            }\n        }\n        if (this.data.has(dataId)) {\n            throw new Error(\"Data buffer is already registered\");\n        }\n        this.data.set(dataId, null);\n    };\n    MathBackendCPU.prototype.write = function (dataId, values) {\n        if (values == null) {\n            throw new Error('MathBackendCPU.write(): values can not be null');\n        }\n        this.throwIfNoData(dataId);\n        this.data.set(dataId, values);\n    };\n    MathBackendCPU.prototype.fromPixels = function (pixels, numChannels) {\n        if (pixels == null) {\n            throw new Error('pixels passed to tf.fromPixels() can not be null');\n        }\n        var vals;\n        if (environment_1.ENV.get('IS_NODE') && pixels.getContext == null) {\n            throw new Error('When running in node, pixels must be an HTMLCanvasElement ' +\n                'like the one returned by the `canvas` npm package');\n        }\n        if (pixels.getContext != null) {\n            vals = pixels\n                .getContext('2d')\n                .getImageData(0, 0, pixels.width, pixels.height)\n                .data;\n        }\n        else if (pixels instanceof ImageData) {\n            vals = pixels.data;\n        }\n        else if (pixels instanceof HTMLImageElement ||\n            pixels instanceof HTMLVideoElement) {\n            if (this.canvas == null) {\n                throw new Error('Can\\'t read pixels from HTMLImageElement outside ' +\n                    'the browser.');\n            }\n            this.canvas.width = pixels.width;\n            this.canvas.height = pixels.height;\n            this.canvas.getContext('2d').drawImage(pixels, 0, 0, pixels.width, pixels.height);\n            vals = this.canvas.getContext('2d')\n                .getImageData(0, 0, pixels.width, pixels.height)\n                .data;\n        }\n        else {\n            throw new Error('pixels passed to tf.fromPixels() must be either an ' +\n                \"HTMLVideoElement, HTMLImageElement, HTMLCanvasElement or \" +\n                (\"ImageData, but was \" + pixels.constructor.name));\n        }\n        var values;\n        if (numChannels === 4) {\n            values = new Int32Array(vals);\n        }\n        else {\n            var numPixels = pixels.width * pixels.height;\n            values = new Int32Array(numPixels * numChannels);\n            for (var i = 0; i < numPixels; i++) {\n                for (var channel = 0; channel < numChannels; ++channel) {\n                    values[i * numChannels + channel] = vals[i * 4 + channel];\n                }\n            }\n        }\n        var outShape = [pixels.height, pixels.width, numChannels];\n        return ops_1.tensor3d(values, outShape, 'int32');\n    };\n    MathBackendCPU.prototype.read = function (dataId) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                return [2, this.readSync(dataId)];\n            });\n        });\n    };\n    MathBackendCPU.prototype.readSync = function (dataId) {\n        this.throwIfNoData(dataId);\n        return this.data.get(dataId);\n    };\n    MathBackendCPU.prototype.disposeData = function (dataId) {\n        if (this.data.has(dataId)) {\n            this.data.delete(dataId);\n        }\n    };\n    MathBackendCPU.prototype.time = function (f) {\n        return __awaiter(this, void 0, void 0, function () {\n            var start, kernelMs;\n            return __generator(this, function (_a) {\n                start = util_1.now();\n                f();\n                kernelMs = util_1.now() - start;\n                return [2, { kernelMs: kernelMs }];\n            });\n        });\n    };\n    MathBackendCPU.prototype.memory = function () {\n        return {\n            unreliable: true\n        };\n    };\n    MathBackendCPU.prototype.throwIfNoData = function (dataId) {\n        if (!this.data.has(dataId)) {\n            throw new Error(\"CPU backend: No data found for this tensor. \" +\n                \"Did you change your backend in the middle of the program? \" +\n                \"New backends can't use Tensors created with previous backends\");\n        }\n    };\n    MathBackendCPU.prototype.slice = function (x, begin, size) {\n        var buffer = ops.buffer(size, x.dtype);\n        for (var i = 0; i < buffer.size; ++i) {\n            var loc = buffer.indexToLoc(i);\n            var xLoc = loc.map(function (idx, j) { return idx + begin[j]; });\n            buffer.set.apply(buffer, [x.get.apply(x, xLoc)].concat(loc));\n        }\n        return buffer.toTensor();\n    };\n    MathBackendCPU.prototype.stridedSlice = function (x, begin, end, strides, beginMask, endMask) {\n        var _a = slice_util_1.getStridedSlicedInfo(x.shape, begin, end, strides, beginMask, endMask), beginIndex = _a[0], size = _a[1];\n        if (size.some(function (axis) { return axis === 0; })) {\n            return ops.tensor([], size);\n        }\n        var buffer = ops.buffer(size, x.dtype);\n        for (var i = 0; i < buffer.size; i++) {\n            var loc = buffer.indexToLoc(i);\n            var newLoc = new Array(loc.length);\n            for (var j = 0; j < newLoc.length; j++) {\n                newLoc[j] = loc[j] * strides[j] + beginIndex[j];\n            }\n            buffer.set.apply(buffer, [x.get.apply(x, newLoc)].concat(loc));\n        }\n        return buffer.toTensor();\n    };\n    MathBackendCPU.prototype.reverse = function (x, axis) {\n        var buffer = ops.buffer(x.shape, x.dtype);\n        var xBuffer = x.buffer();\n        var _loop_1 = function (i) {\n            var outLoc = buffer.indexToLoc(i);\n            var inLoc = outLoc.slice();\n            axis.forEach(function (ax) { return inLoc[ax] = x.shape[ax] - 1 - inLoc[ax]; });\n            buffer.set.apply(buffer, [xBuffer.get.apply(xBuffer, inLoc)].concat(outLoc));\n        };\n        for (var i = 0; i < buffer.size; i++) {\n            _loop_1(i);\n        }\n        return buffer.toTensor();\n    };\n    MathBackendCPU.prototype.concat = function (a, b) {\n        var outShape = concat_util.computeOutShape(a.shape, b.shape, 1);\n        var buffer = ops.buffer(outShape, a.dtype);\n        if (a.shape[0] === 1 && b.shape[0] === 1) {\n            var aVals = a.dataSync();\n            var bVals = b.dataSync();\n            var vals = buffer.values;\n            vals.set(aVals, 0);\n            vals.set(bVals, a.size);\n            return buffer.toTensor();\n        }\n        for (var i = 0; i < outShape[0]; ++i) {\n            for (var j = 0; j < a.shape[1]; ++j) {\n                buffer.set(a.get(i, j), i, j);\n            }\n            for (var j = 0; j < b.shape[1]; ++j) {\n                buffer.set(b.get(i, j), i, j + a.shape[1]);\n            }\n        }\n        return buffer.toTensor();\n    };\n    MathBackendCPU.prototype.neg = function (x) {\n        return this.multiply(ops.scalar(-1), x);\n    };\n    MathBackendCPU.prototype.add = function (a, b) {\n        return this.broadcastedBinaryOp(a, b, types_1.upcastType(a.dtype, b.dtype), function (aValue, bValue) { return aValue + bValue; });\n    };\n    MathBackendCPU.prototype.addN = function (tensors) {\n        var vals = tensors.map(function (t) { return t.dataSync(); });\n        var result = ops.buffer(tensors[0].shape, tensors[0].dtype);\n        var resultVals = result.values;\n        for (var i = 0; i < tensors.length; i++) {\n            var currVals = vals[i];\n            for (var j = 0; j < resultVals.length; j++) {\n                resultVals[j] += currVals[j];\n            }\n        }\n        return result.toTensor();\n    };\n    MathBackendCPU.prototype.subtract = function (a, b) {\n        return this.broadcastedBinaryOp(a, b, types_1.upcastType(a.dtype, b.dtype), function (aValue, bValue) { return aValue - bValue; });\n    };\n    MathBackendCPU.prototype.pow = function (a, b) {\n        return this.broadcastedBinaryOp(a, b, a.dtype, function (aValue, bValue) { return Math.pow(aValue, bValue); });\n    };\n    MathBackendCPU.prototype.matMul = function (a, b, transposeA, transposeB) {\n        var sharedDim = transposeA ? a.shape[0] : a.shape[1];\n        var leftDim = transposeA ? a.shape[1] : a.shape[0];\n        var rightDim = transposeB ? b.shape[0] : b.shape[1];\n        var aValues = a.dataSync();\n        var bValues = b.dataSync();\n        var _a = transposeA ? [1, a.strides[0]] : [a.strides[0], 1], aOuterStep = _a[0], aInnerStep = _a[1];\n        var _b = transposeB ? [b.strides[0], 1] : [1, b.strides[0]], bOuterStep = _b[0], bInnerStep = _b[1];\n        var aOuterEnd = leftDim * aOuterStep;\n        var bOuterEnd = rightDim * bOuterStep;\n        var result = new Float32Array(leftDim * rightDim);\n        var resultIndex = 0;\n        for (var aOuter = 0; aOuter < aOuterEnd; aOuter += aOuterStep) {\n            for (var bOuter = 0; bOuter < bOuterEnd; bOuter += bOuterStep) {\n                var aInner = aOuter;\n                var bInner = bOuter;\n                var sum = 0;\n                for (var k = 0; k < sharedDim; ++k) {\n                    sum += aValues[aInner] * bValues[bInner];\n                    aInner += aInnerStep;\n                    bInner += bInnerStep;\n                }\n                result[resultIndex++] = sum;\n            }\n        }\n        return ops.tensor2d(result, [leftDim, rightDim]);\n    };\n    MathBackendCPU.prototype.multiply = function (a, b) {\n        return this.broadcastedBinaryOp(a, b, types_1.upcastType(a.dtype, b.dtype), function (aValue, bValue) { return aValue * bValue; });\n    };\n    MathBackendCPU.prototype.realDivide = function (a, b) {\n        var op = function (a, b) { return a / b; };\n        var outputDtype = 'float32';\n        return this.broadcastedBinaryOp(a, b, outputDtype, op);\n    };\n    MathBackendCPU.prototype.floorDiv = function (a, b) {\n        var op = function (a, b) { return Math.floor(a / b); };\n        var outputDtype = 'int32';\n        return this.broadcastedBinaryOp(a, b, outputDtype, op);\n    };\n    MathBackendCPU.prototype.sum = function (x, axes) {\n        axis_util.assertAxesAreInnerMostDims('sum', axes, x.rank);\n        var _a = axis_util.computeOutAndReduceShapes(x.shape, axes), outShape = _a[0], reduceShape = _a[1];\n        var resultDtype = types_1.upcastType(x.dtype, 'int32');\n        var result = ops.zeros(outShape, resultDtype);\n        var reduceSize = util.sizeFromShape(reduceShape);\n        var vals = result.dataSync();\n        var aVals = x.dataSync();\n        for (var i = 0; i < vals.length; ++i) {\n            var offset = i * reduceSize;\n            var sum = 0;\n            for (var j = 0; j < reduceSize; ++j) {\n                sum += aVals[offset + j];\n            }\n            vals[i] = sum;\n        }\n        return result;\n    };\n    MathBackendCPU.prototype.unsortedSegmentSum = function (x, segmentIds, numSegments) {\n        var res = [];\n        var numIters = x.rank - segmentIds.rank;\n        for (var i = 0; i < numIters; ++i) {\n            segmentIds = segmentIds.expandDims(i + 1);\n        }\n        for (var i = 0; i < numSegments; ++i) {\n            var segmentId = ops.scalar(i, 'int32');\n            var mask = ops.equal(segmentId, segmentIds).asType('float32');\n            var sum = mask.mul(x).sum(0);\n            res.push(sum);\n        }\n        return ops.stack(res);\n    };\n    MathBackendCPU.prototype.argMin = function (x, axis) {\n        var axes = [axis];\n        axis_util.assertAxesAreInnerMostDims('argMin', axes, x.rank);\n        var _a = axis_util.computeOutAndReduceShapes(x.shape, axes), outShape = _a[0], reduceShape = _a[1];\n        var result = ops.zeros(outShape, 'int32');\n        var reduceSize = util.sizeFromShape(reduceShape);\n        var vals = result.dataSync();\n        var aVals = x.dataSync();\n        for (var i = 0; i < vals.length; ++i) {\n            var offset = i * reduceSize;\n            var min = aVals[offset];\n            var minIndex = 0;\n            for (var j = 0; j < reduceSize; ++j) {\n                var value = aVals[offset + j];\n                if (value < min) {\n                    min = value;\n                    minIndex = j;\n                }\n            }\n            vals[i] = minIndex;\n        }\n        return result;\n    };\n    MathBackendCPU.prototype.argMax = function (x, axis) {\n        var axes = [axis];\n        axis_util.assertAxesAreInnerMostDims('argMax', axes, x.rank);\n        var _a = axis_util.computeOutAndReduceShapes(x.shape, axes), outShape = _a[0], reduceShape = _a[1];\n        var result = ops.zeros(outShape, 'int32');\n        var reduceSize = util.sizeFromShape(reduceShape);\n        var vals = result.dataSync();\n        var aVals = x.dataSync();\n        for (var i = 0; i < vals.length; ++i) {\n            var offset = i * reduceSize;\n            var max = aVals[offset];\n            var maxIndex = 0;\n            for (var j = 0; j < reduceSize; ++j) {\n                var value = aVals[offset + j];\n                if (value > max) {\n                    max = value;\n                    maxIndex = j;\n                }\n            }\n            vals[i] = maxIndex;\n        }\n        return result;\n    };\n    MathBackendCPU.prototype.cumsum = function (x, axis, exclusive, reverse) {\n        if (axis !== x.rank - 1) {\n            throw new Error(\"backend.cumsum in CPU expects an inner-most axis=\" + (x.rank - 1) + \" \" +\n                (\"but got axis=\" + axis));\n        }\n        var resultDtype = types_1.upcastType(x.dtype, 'int32');\n        var result = ops.zeros(x.shape, resultDtype);\n        var vals = result.dataSync();\n        var aVals = x.dataSync();\n        var finalDim = x.shape[x.rank - 1];\n        var indexAdjuster = reverse ?\n            function (i, j) { return i + finalDim - j - 1; } :\n            function (i, j) { return i + j; };\n        for (var i = 0; i < aVals.length; i += finalDim) {\n            for (var j = 0; j < finalDim; j++) {\n                var idx = indexAdjuster(i, j);\n                if (j === 0) {\n                    vals[idx] = exclusive ? 0 : aVals[idx];\n                }\n                else {\n                    var prevIdx = indexAdjuster(i, j - 1);\n                    vals[idx] = exclusive ? aVals[prevIdx] + vals[prevIdx] :\n                        aVals[idx] + vals[prevIdx];\n                }\n            }\n        }\n        return result;\n    };\n    MathBackendCPU.prototype.equal = function (a, b) {\n        return this.broadcastedBinaryOp(a, b, 'bool', function (aVal, bVal) {\n            return (aVal === bVal) ? 1 : 0;\n        });\n    };\n    MathBackendCPU.prototype.notEqual = function (a, b) {\n        return this.broadcastedBinaryOp(a, b, 'bool', function (aVal, bVal) {\n            return (aVal !== bVal) ? 1 : 0;\n        });\n    };\n    MathBackendCPU.prototype.less = function (a, b) {\n        return this.broadcastedBinaryOp(a, b, 'bool', function (aVal, bVal) {\n            return (aVal < bVal) ? 1 : 0;\n        });\n    };\n    MathBackendCPU.prototype.lessEqual = function (a, b) {\n        return this.broadcastedBinaryOp(a, b, 'bool', function (aVal, bVal) {\n            return (aVal <= bVal) ? 1 : 0;\n        });\n    };\n    MathBackendCPU.prototype.greater = function (a, b) {\n        return this.broadcastedBinaryOp(a, b, 'bool', function (aVal, bVal) {\n            return (aVal > bVal) ? 1 : 0;\n        });\n    };\n    MathBackendCPU.prototype.greaterEqual = function (a, b) {\n        return this.broadcastedBinaryOp(a, b, 'bool', function (aVal, bVal) {\n            return (aVal >= bVal) ? 1 : 0;\n        });\n    };\n    MathBackendCPU.prototype.logicalNot = function (x) {\n        var values = x.dataSync();\n        var newValues = new Int32Array(values.length);\n        for (var i = 0; i < values.length; ++i) {\n            newValues[i] = values[i] ? 0 : 1;\n        }\n        return tensor_1.Tensor.make(x.shape, { values: newValues }, 'bool');\n    };\n    MathBackendCPU.prototype.logicalAnd = function (a, b) {\n        return this.broadcastedBinaryOp(a, b, 'bool', function (aVal, bVal) {\n            return aVal && bVal;\n        });\n    };\n    MathBackendCPU.prototype.logicalOr = function (a, b) {\n        return this.broadcastedBinaryOp(a, b, 'bool', function (aVal, bVal) {\n            return aVal || bVal;\n        });\n    };\n    MathBackendCPU.prototype.select = function (condition, a, b) {\n        var values = condition.dataSync();\n        var aValues = a.dataSync();\n        var bValues = b.dataSync();\n        var result = ops.zeros(a.shape, types_1.upcastType(a.dtype, b.dtype));\n        var newValues = result.dataSync();\n        var index = 0;\n        var offset = condition.rank === 0 || condition.rank > 1 || a.rank === 1 ?\n            1 :\n            a.shape[1];\n        for (var i = 0; i < values.length; i++) {\n            for (var j = 0; j < offset; j++) {\n                if (values[i] === 1) {\n                    newValues[index++] = aValues[i];\n                }\n                else {\n                    newValues[index++] = bValues[i];\n                }\n            }\n        }\n        return result;\n    };\n    MathBackendCPU.prototype.where = function (condition) {\n        var condVals = condition.dataSync();\n        return where_impl_1.whereImpl(condition.shape, condVals);\n    };\n    MathBackendCPU.prototype.topk = function (x, k, sorted) {\n        var xVals = x.dataSync();\n        return topk_impl_1.topkImpl(xVals, x.shape, x.dtype, k, sorted);\n    };\n    MathBackendCPU.prototype.min = function (x, axes) {\n        axis_util.assertAxesAreInnerMostDims('min', axes, x.rank);\n        var _a = axis_util.computeOutAndReduceShapes(x.shape, axes), outShape = _a[0], reduceShape = _a[1];\n        var result = ops.zeros(outShape, x.dtype);\n        var reduceSize = util.sizeFromShape(reduceShape);\n        var vals = result.dataSync();\n        var aVals = x.dataSync();\n        for (var i = 0; i < vals.length; ++i) {\n            var offset = i * reduceSize;\n            var min = aVals[offset];\n            for (var j = 0; j < reduceSize; ++j) {\n                var value = aVals[offset + j];\n                if (value < min) {\n                    min = value;\n                }\n            }\n            vals[i] = min;\n        }\n        return result;\n    };\n    MathBackendCPU.prototype.minimum = function (a, b) {\n        return this.broadcastedBinaryOp(a, b, a.dtype, function (aVal, bVal) { return Math.min(aVal, bVal); });\n    };\n    MathBackendCPU.prototype.mod = function (a, b) {\n        return this.broadcastedBinaryOp(a, b, a.dtype, function (aVal, bVal) {\n            var rem = aVal % bVal;\n            if ((aVal < 0 && bVal < 0) || (aVal >= 0 && bVal >= 0)) {\n                return rem;\n            }\n            else {\n                return (rem + bVal) % bVal;\n            }\n        });\n    };\n    MathBackendCPU.prototype.max = function (x, axes) {\n        axis_util.assertAxesAreInnerMostDims('max', axes, x.rank);\n        var _a = axis_util.computeOutAndReduceShapes(x.shape, axes), outShape = _a[0], reduceShape = _a[1];\n        var result = ops.zeros(outShape, x.dtype);\n        var reduceSize = util.sizeFromShape(reduceShape);\n        var vals = result.dataSync();\n        var aVals = x.dataSync();\n        for (var i = 0; i < vals.length; ++i) {\n            var offset = i * reduceSize;\n            var max = aVals[offset];\n            for (var j = 0; j < reduceSize; ++j) {\n                var value = aVals[offset + j];\n                if (value > max) {\n                    max = value;\n                }\n            }\n            vals[i] = max;\n        }\n        return result;\n    };\n    MathBackendCPU.prototype.maximum = function (a, b) {\n        return this.broadcastedBinaryOp(a, b, a.dtype, function (aVal, bVal) { return Math.max(aVal, bVal); });\n    };\n    MathBackendCPU.prototype.all = function (x, axes) {\n        axis_util.assertAxesAreInnerMostDims('all', axes, x.rank);\n        var _a = axis_util.computeOutAndReduceShapes(x.shape, axes), outShape = _a[0], reduceShape = _a[1];\n        var result = ops.zeros(outShape, x.dtype);\n        var reduceSize = util.sizeFromShape(reduceShape);\n        var vals = result.dataSync();\n        var aVals = x.dataSync();\n        for (var i = 0; i < vals.length; ++i) {\n            var offset = i * reduceSize;\n            var all = aVals[offset];\n            for (var j = 0; j < reduceSize; ++j) {\n                var value = aVals[offset + j];\n                all = all && value;\n            }\n            vals[i] = all;\n        }\n        return result;\n    };\n    MathBackendCPU.prototype.any = function (x, axes) {\n        axis_util.assertAxesAreInnerMostDims('any', axes, x.rank);\n        var _a = axis_util.computeOutAndReduceShapes(x.shape, axes), outShape = _a[0], reduceShape = _a[1];\n        var result = ops.zeros(outShape, x.dtype);\n        var reduceSize = util.sizeFromShape(reduceShape);\n        var vals = result.dataSync();\n        var aVals = x.dataSync();\n        for (var i = 0; i < vals.length; ++i) {\n            var offset = i * reduceSize;\n            var anyVal = aVals[offset];\n            for (var j = 0; j < reduceSize; ++j) {\n                var value = aVals[offset + j];\n                anyVal = anyVal || value;\n            }\n            vals[i] = anyVal;\n        }\n        return result;\n    };\n    MathBackendCPU.prototype.squaredDifference = function (a, b) {\n        return this.broadcastedBinaryOp(a, b, a.dtype, function (aVal, bVal) {\n            var diff = aVal - bVal;\n            return diff * diff;\n        });\n    };\n    MathBackendCPU.prototype.ceil = function (x) {\n        var values = x.dataSync();\n        var newValues = new Float32Array(values.length);\n        for (var i = 0; i < values.length; ++i) {\n            newValues[i] = Math.ceil(values[i]);\n        }\n        return tensor_1.Tensor.make(x.shape, { values: newValues });\n    };\n    MathBackendCPU.prototype.floor = function (x) {\n        var values = x.dataSync();\n        var newValues = new Float32Array(values.length);\n        for (var i = 0; i < values.length; ++i) {\n            newValues[i] = Math.floor(values[i]);\n        }\n        return tensor_1.Tensor.make(x.shape, { values: newValues });\n    };\n    MathBackendCPU.prototype.sign = function (x) {\n        var values = x.dataSync();\n        var newValues = new Float32Array(values.length);\n        for (var i = 0; i < values.length; ++i) {\n            if (values[i] < 0) {\n                newValues[i] = -1;\n            }\n            else if (values[i] > 0) {\n                newValues[i] = 1;\n            }\n            else {\n                newValues[i] = 0;\n            }\n        }\n        return tensor_1.Tensor.make(x.shape, { values: newValues });\n    };\n    MathBackendCPU.prototype.round = function (x) {\n        var values = x.dataSync();\n        var newValues = new Float32Array(values.length);\n        for (var i = 0; i < values.length; ++i) {\n            var base = Math.floor(values[i]);\n            if (values[i] - base < 0.5) {\n                newValues[i] = Math.floor(values[i]);\n            }\n            else if (values[i] - base > 0.5) {\n                newValues[i] = Math.ceil(values[i]);\n            }\n            else {\n                if (base % 2.0 === 0.0) {\n                    newValues[i] = base;\n                }\n                else {\n                    newValues[i] = base + 1.0;\n                }\n            }\n        }\n        return tensor_1.Tensor.make(x.shape, { values: newValues });\n    };\n    MathBackendCPU.prototype.exp = function (x) {\n        var values = x.dataSync();\n        var newValues = new Float32Array(values.length);\n        for (var i = 0; i < values.length; ++i) {\n            newValues[i] = Math.exp(values[i]);\n        }\n        return tensor_1.Tensor.make(x.shape, { values: newValues });\n    };\n    MathBackendCPU.prototype.expm1 = function (x) {\n        var values = x.dataSync();\n        var newValues = new Float32Array(values.length);\n        for (var i = 0; i < values.length; ++i) {\n            newValues[i] = Math.expm1(values[i]);\n        }\n        return tensor_1.Tensor.make(x.shape, { values: newValues });\n    };\n    MathBackendCPU.prototype.log = function (x) {\n        var values = x.dataSync();\n        var newValues = new Float32Array(values.length);\n        for (var i = 0; i < values.length; ++i) {\n            var value = values[i];\n            newValues[i] = Math.log(value);\n        }\n        return tensor_1.Tensor.make(x.shape, { values: newValues });\n    };\n    MathBackendCPU.prototype.log1p = function (x) {\n        var values = x.dataSync();\n        var newValues = new Float32Array(values.length);\n        for (var i = 0; i < values.length; ++i) {\n            var value = values[i];\n            newValues[i] = Math.log1p(value);\n        }\n        return tensor_1.Tensor.make(x.shape, { values: newValues });\n    };\n    MathBackendCPU.prototype.sqrt = function (x) {\n        var values = x.dataSync();\n        var newValues = new Float32Array(values.length);\n        for (var i = 0; i < values.length; ++i) {\n            var value = values[i];\n            newValues[i] = Math.sqrt(value);\n        }\n        return tensor_1.Tensor.make(x.shape, { values: newValues });\n    };\n    MathBackendCPU.prototype.rsqrt = function (x) {\n        var values = x.dataSync();\n        var newValues = new Float32Array(values.length);\n        for (var i = 0; i < values.length; ++i) {\n            var value = values[i];\n            newValues[i] = 1 / Math.sqrt(value);\n        }\n        return tensor_1.Tensor.make(x.shape, { values: newValues });\n    };\n    MathBackendCPU.prototype.square = function (x) {\n        var values = x.dataSync();\n        var newValues = new Float32Array(values.length);\n        for (var i = 0; i < values.length; ++i) {\n            var value = values[i];\n            newValues[i] = value * value;\n        }\n        return tensor_1.Tensor.make(x.shape, { values: newValues });\n    };\n    MathBackendCPU.prototype.reciprocal = function (x) {\n        var values = x.dataSync();\n        var newValues = new Float32Array(values.length);\n        for (var i = 0; i < values.length; ++i) {\n            newValues[i] = 1 / values[i];\n        }\n        return tensor_1.Tensor.make(x.shape, { values: newValues });\n    };\n    MathBackendCPU.prototype.relu = function (x) {\n        var res = ops.zeros(x.shape, x.dtype);\n        var resVals = res.dataSync();\n        var inVals = x.dataSync();\n        for (var i = 0; i < inVals.length; ++i) {\n            resVals[i] = Math.max(0, inVals[i]);\n        }\n        return res;\n    };\n    MathBackendCPU.prototype.elu = function (x) {\n        var resultValues = new Float32Array(x.size);\n        var values = x.dataSync();\n        for (var i = 0; i < values.length; ++i) {\n            var v = values[i];\n            if (v >= 0) {\n                resultValues[i] = v;\n            }\n            else {\n                resultValues[i] = (Math.exp(v) - 1);\n            }\n        }\n        return tensor_1.Tensor.make(x.shape, { values: resultValues });\n    };\n    MathBackendCPU.prototype.eluDer = function (dy, y) {\n        var resultValues = new Float32Array(y.size);\n        var values = y.dataSync();\n        var dyValues = dy.dataSync();\n        for (var i = 0; i < values.length; ++i) {\n            var v = values[i];\n            if (v >= 1) {\n                resultValues[i] = dyValues[i];\n            }\n            else {\n                resultValues[i] = dyValues[i] * (v + 1);\n            }\n        }\n        return tensor_1.Tensor.make(y.shape, { values: resultValues });\n    };\n    MathBackendCPU.prototype.selu = function (x) {\n        var scaleAlpha = selu_util.SELU_SCALEALPHA;\n        var scale = selu_util.SELU_SCALE;\n        var resultValues = new Float32Array(x.size);\n        var values = x.dataSync();\n        for (var i = 0; i < values.length; ++i) {\n            var v = values[i];\n            if (v >= 0) {\n                resultValues[i] = scale * v;\n            }\n            else {\n                resultValues[i] = scaleAlpha * (Math.exp(v) - 1);\n            }\n        }\n        return tensor_1.Tensor.make(x.shape, { values: resultValues });\n    };\n    MathBackendCPU.prototype.clip = function (x, min, max) {\n        var resultValues = new Float32Array(x.size);\n        var values = x.dataSync();\n        for (var i = 0; i < values.length; ++i) {\n            resultValues[i] = Math.min(max, Math.max(min, values[i]));\n        }\n        return tensor_1.Tensor.make(x.shape, { values: resultValues });\n    };\n    MathBackendCPU.prototype.abs = function (x) {\n        var resultValues = new Float32Array(x.size);\n        var values = x.dataSync();\n        for (var i = 0; i < values.length; ++i) {\n            resultValues[i] = Math.abs(values[i]);\n        }\n        return tensor_1.Tensor.make(x.shape, { values: resultValues });\n    };\n    MathBackendCPU.prototype.int = function (x) {\n        var resultValues = new Int32Array(x.size);\n        var values = x.dataSync();\n        for (var i = 0; i < values.length; ++i) {\n            resultValues[i] = values[i];\n        }\n        return tensor_1.Tensor.make(x.shape, { values: resultValues }, 'int32');\n    };\n    MathBackendCPU.prototype.sigmoid = function (x) {\n        var resultValues = new Float32Array(x.size);\n        var values = x.dataSync();\n        for (var i = 0; i < values.length; ++i) {\n            resultValues[i] = 1 / (1 + Math.exp(-values[i]));\n        }\n        return tensor_1.Tensor.make(x.shape, { values: resultValues });\n    };\n    MathBackendCPU.prototype.softplus = function (x) {\n        var epsilon = 1.1920928955078125e-7;\n        var threshold = Math.log(epsilon) + 2.0;\n        var resultValues = new Float32Array(x.size);\n        var values = x.dataSync();\n        for (var i = 0; i < values.length; ++i) {\n            var tooLarge = values[i] > -threshold;\n            var tooSmall = values[i] < threshold;\n            var expX = Math.exp(values[i]);\n            var result = void 0;\n            if (tooSmall) {\n                result = expX;\n            }\n            else if (tooLarge) {\n                result = values[i];\n            }\n            else {\n                result = Math.log(1.0 + expX);\n            }\n            resultValues[i] = result;\n        }\n        return tensor_1.Tensor.make(x.shape, { values: resultValues });\n    };\n    MathBackendCPU.prototype.sin = function (x) {\n        var resultValues = new Float32Array(x.size);\n        var values = x.dataSync();\n        for (var i = 0; i < values.length; ++i) {\n            resultValues[i] = Math.sin(values[i]);\n        }\n        return tensor_1.Tensor.make(x.shape, { values: resultValues });\n    };\n    MathBackendCPU.prototype.cos = function (x) {\n        var resultValues = new Float32Array(x.size);\n        var values = x.dataSync();\n        for (var i = 0; i < values.length; ++i) {\n            resultValues[i] = Math.cos(values[i]);\n        }\n        return tensor_1.Tensor.make(x.shape, { values: resultValues });\n    };\n    MathBackendCPU.prototype.tan = function (x) {\n        var resultValues = new Float32Array(x.size);\n        var values = x.dataSync();\n        for (var i = 0; i < values.length; ++i) {\n            resultValues[i] = Math.tan(values[i]);\n        }\n        return tensor_1.Tensor.make(x.shape, { values: resultValues });\n    };\n    MathBackendCPU.prototype.asin = function (x) {\n        var resultValues = new Float32Array(x.size);\n        var values = x.dataSync();\n        for (var i = 0; i < values.length; ++i) {\n            resultValues[i] = Math.asin(values[i]);\n        }\n        return tensor_1.Tensor.make(x.shape, { values: resultValues });\n    };\n    MathBackendCPU.prototype.acos = function (x) {\n        var resultValues = new Float32Array(x.size);\n        var values = x.dataSync();\n        for (var i = 0; i < values.length; ++i) {\n            resultValues[i] = Math.acos(values[i]);\n        }\n        return tensor_1.Tensor.make(x.shape, { values: resultValues });\n    };\n    MathBackendCPU.prototype.atan = function (x) {\n        var resultValues = new Float32Array(x.size);\n        var values = x.dataSync();\n        for (var i = 0; i < values.length; ++i) {\n            resultValues[i] = Math.atan(values[i]);\n        }\n        return tensor_1.Tensor.make(x.shape, { values: resultValues });\n    };\n    MathBackendCPU.prototype.atan2 = function (a, b) {\n        return this.broadcastedBinaryOp(a, b, a.dtype, function (aValue, bValue) { return Math.atan2(aValue, bValue); });\n    };\n    MathBackendCPU.prototype.sinh = function (x) {\n        var resultValues = new Float32Array(x.size);\n        var values = x.dataSync();\n        for (var i = 0; i < values.length; ++i) {\n            resultValues[i] = Math.sinh(values[i]);\n        }\n        return tensor_1.Tensor.make(x.shape, { values: resultValues });\n    };\n    MathBackendCPU.prototype.cosh = function (x) {\n        var resultValues = new Float32Array(x.size);\n        var values = x.dataSync();\n        for (var i = 0; i < values.length; ++i) {\n            resultValues[i] = Math.cosh(values[i]);\n        }\n        return tensor_1.Tensor.make(x.shape, { values: resultValues });\n    };\n    MathBackendCPU.prototype.tanh = function (x) {\n        var resultValues = new Float32Array(x.size);\n        var values = x.dataSync();\n        for (var i = 0; i < values.length; ++i) {\n            resultValues[i] = util.tanh(values[i]);\n        }\n        return tensor_1.Tensor.make(x.shape, { values: resultValues });\n    };\n    MathBackendCPU.prototype.asinh = function (x) {\n        var resultValues = new Float32Array(x.size);\n        var values = x.dataSync();\n        for (var i = 0; i < values.length; ++i) {\n            resultValues[i] = Math.asinh(values[i]);\n        }\n        return tensor_1.Tensor.make(x.shape, { values: resultValues });\n    };\n    MathBackendCPU.prototype.acosh = function (x) {\n        var resultValues = new Float32Array(x.size);\n        var values = x.dataSync();\n        for (var i = 0; i < values.length; ++i) {\n            resultValues[i] = Math.acosh(values[i]);\n        }\n        return tensor_1.Tensor.make(x.shape, { values: resultValues });\n    };\n    MathBackendCPU.prototype.atanh = function (x) {\n        var resultValues = new Float32Array(x.size);\n        var values = x.dataSync();\n        for (var i = 0; i < values.length; ++i) {\n            resultValues[i] = Math.atanh(values[i]);\n        }\n        return tensor_1.Tensor.make(x.shape, { values: resultValues });\n    };\n    MathBackendCPU.prototype.erf = function (x) {\n        var resultValues = new Float32Array(x.size);\n        var values = x.dataSync();\n        var p = erf_util.ERF_P;\n        var a1 = erf_util.ERF_A1;\n        var a2 = erf_util.ERF_A2;\n        var a3 = erf_util.ERF_A3;\n        var a4 = erf_util.ERF_A4;\n        var a5 = erf_util.ERF_A5;\n        for (var i = 0; i < values.length; ++i) {\n            var v = values[i];\n            var t = 1.0 / (1.0 + p * v);\n            resultValues[i] = 1.0 -\n                (((((a5 * t + a4) * t) + a3) * t + a2) * t + a1) * t *\n                    Math.exp(-v * v);\n        }\n        return tensor_1.Tensor.make(x.shape, { values: resultValues });\n    };\n    MathBackendCPU.prototype.step = function (x, alpha) {\n        if (alpha === void 0) { alpha = 0; }\n        var resultValues = new Float32Array(x.size);\n        var values = x.dataSync();\n        for (var i = 0; i < values.length; ++i) {\n            var value = values[i];\n            if (isNaN(value)) {\n                resultValues[i] = NaN;\n            }\n            else {\n                resultValues[i] = value > 0 ? 1 : alpha;\n            }\n        }\n        return tensor_1.Tensor.make(x.shape, { values: resultValues });\n    };\n    MathBackendCPU.prototype.conv2d = function (x, filter, convInfo) {\n        var filterHeight = convInfo.filterHeight;\n        var filterWidth = convInfo.filterWidth;\n        var dilationHeight = convInfo.dilationHeight;\n        var dilationWidth = convInfo.dilationWidth;\n        var padLeft = convInfo.padInfo.left;\n        var padTop = convInfo.padInfo.top;\n        var y = ops.buffer(convInfo.outShape, x.dtype);\n        for (var b = 0; b < convInfo.batchSize; ++b) {\n            for (var d2 = 0; d2 < convInfo.outChannels; ++d2) {\n                for (var yR = 0; yR < convInfo.outHeight; ++yR) {\n                    var xRCorner = yR * convInfo.strideHeight - padLeft;\n                    for (var yC = 0; yC < convInfo.outWidth; ++yC) {\n                        var xCCorner = yC * convInfo.strideWidth - padTop;\n                        var dotProd = 0;\n                        for (var wR = 0; wR < filterHeight; wR++) {\n                            var xR = xRCorner + wR * dilationHeight;\n                            if (xR < 0 || xR >= convInfo.inHeight) {\n                                continue;\n                            }\n                            for (var wC = 0; wC < filterWidth; wC++) {\n                                var xC = xCCorner + wC * dilationWidth;\n                                if (xC < 0 || xC >= convInfo.inWidth) {\n                                    continue;\n                                }\n                                for (var d1 = 0; d1 < convInfo.inChannels; ++d1) {\n                                    var pixel = x.get(b, xR, xC, d1);\n                                    var weight = filter.get(wR, wC, d1, d2);\n                                    dotProd += pixel * weight;\n                                }\n                            }\n                        }\n                        y.set(dotProd, b, yR, yC, d2);\n                    }\n                }\n            }\n        }\n        return y.toTensor();\n    };\n    MathBackendCPU.prototype.conv2dDerInput = function (dy, filter, convInfo) {\n        var dx = ops.buffer(convInfo.inShape, 'float32');\n        var dxValues = dx.values;\n        var _a = dx.strides, dxS0 = _a[0], dxS1 = _a[1], dxS2 = _a[2];\n        var dyValues = dy.dataSync();\n        var _b = dy.strides, dyS0 = _b[0], dyS1 = _b[1], dyS2 = _b[2];\n        var fltValues = filter.dataSync();\n        var _c = filter.strides, fltS0 = _c[0], fltS1 = _c[1], fltS2 = _c[2];\n        var batchSize = convInfo.batchSize, filterHeight = convInfo.filterHeight, filterWidth = convInfo.filterWidth, inChannels = convInfo.inChannels, inHeight = convInfo.inHeight, inWidth = convInfo.inWidth, outChannels = convInfo.outChannels, outHeight = convInfo.outHeight, outWidth = convInfo.outWidth, strideHeight = convInfo.strideHeight, strideWidth = convInfo.strideWidth;\n        var topPad = filterHeight - 1 - convInfo.padInfo.top;\n        var leftPad = filterWidth - 1 - convInfo.padInfo.left;\n        for (var b = 0; b < batchSize; ++b) {\n            for (var d1 = 0; d1 < inChannels; ++d1) {\n                for (var xR = 0; xR < inHeight; ++xR) {\n                    var xRCorner = xR - topPad;\n                    var xRMin = Math.max(0, Math.ceil(xRCorner / strideHeight));\n                    var yRMax = Math.min(outHeight, (filterHeight + xRCorner) / strideHeight);\n                    for (var xC = 0; xC < inWidth; ++xC) {\n                        var xCCorner = xC - leftPad;\n                        var xCMin = Math.max(0, Math.ceil(xCCorner / strideWidth));\n                        var yCMax = Math.min(outWidth, (filterWidth + xCCorner) / strideWidth);\n                        var dotProd = 0;\n                        for (var yR = xRMin; yR < yRMax; ++yR) {\n                            var wR = yR * strideHeight - xRCorner;\n                            for (var yC = xCMin; yC < yCMax; ++yC) {\n                                var wC = yC * strideWidth - xCCorner;\n                                var dyOffset = dyS0 * b + dyS1 * yR + dyS2 * yC;\n                                var fltOffset = fltS0 * (filterHeight - 1 - wR) +\n                                    fltS1 * (filterWidth - 1 - wC) + fltS2 * d1;\n                                for (var d2 = 0; d2 < outChannels; ++d2) {\n                                    var pixel = dyValues[dyOffset + d2];\n                                    var weight = fltValues[fltOffset + d2];\n                                    dotProd += pixel * weight;\n                                }\n                            }\n                        }\n                        dxValues[dxS0 * b + dxS1 * xR + dxS2 * xC + d1] = dotProd;\n                    }\n                }\n            }\n        }\n        return dx.toTensor();\n    };\n    MathBackendCPU.prototype.conv2dDerFilter = function (x, dy, convInfo) {\n        var strideHeight = convInfo.strideHeight;\n        var strideWidth = convInfo.strideWidth;\n        var filterHeight = convInfo.filterHeight;\n        var filterWidth = convInfo.filterWidth;\n        var dW = ops.buffer(convInfo.filterShape, 'float32');\n        var leftPad = convInfo.padInfo.left;\n        var topPad = convInfo.padInfo.top;\n        for (var wR = 0; wR < filterHeight; ++wR) {\n            var yRMin = Math.max(0, Math.ceil((topPad - wR) / strideHeight));\n            var yRMax = Math.min(convInfo.outHeight, (convInfo.inHeight + topPad - wR) / strideHeight);\n            for (var wC = 0; wC < filterWidth; ++wC) {\n                var yCMin = Math.max(0, Math.ceil((leftPad - wC) / strideWidth));\n                var yCMax = Math.min(convInfo.outWidth, (convInfo.inWidth + leftPad - wC) / strideWidth);\n                for (var d1 = 0; d1 < convInfo.inChannels; ++d1) {\n                    for (var d2 = 0; d2 < convInfo.outChannels; ++d2) {\n                        var dotProd = 0;\n                        for (var b = 0; b < convInfo.batchSize; ++b) {\n                            for (var yR = yRMin; yR < yRMax; ++yR) {\n                                var xR = wR + yR * strideHeight - topPad;\n                                for (var yC = yCMin; yC < yCMax; ++yC) {\n                                    var xC = wC + yC * strideWidth - leftPad;\n                                    dotProd += x.get(b, xR, xC, d1) * dy.get(b, yR, yC, d2);\n                                }\n                            }\n                        }\n                        dW.set(dotProd, wR, wC, d1, d2);\n                    }\n                }\n            }\n        }\n        return dW.toTensor();\n    };\n    MathBackendCPU.prototype.depthwiseConv2D = function (x, filter, convInfo) {\n        var filterHeight = convInfo.filterHeight;\n        var filterWidth = convInfo.filterWidth;\n        var dilationHeight = convInfo.dilationHeight;\n        var dilationWidth = convInfo.dilationWidth;\n        var padLeft = convInfo.padInfo.left;\n        var padTop = convInfo.padInfo.top;\n        var chMul = convInfo.outChannels / convInfo.inChannels;\n        var y = ops.buffer(convInfo.outShape, x.dtype);\n        for (var b = 0; b < convInfo.batchSize; ++b) {\n            for (var d1 = 0; d1 < convInfo.inChannels; ++d1) {\n                for (var yR = 0; yR < convInfo.outHeight; ++yR) {\n                    var xRCorner = yR * convInfo.strideHeight - padLeft;\n                    for (var yC = 0; yC < convInfo.outWidth; ++yC) {\n                        var xCCorner = yC * convInfo.strideWidth - padTop;\n                        for (var q = 0; q < chMul; ++q) {\n                            var dotProd = 0;\n                            for (var wR = 0; wR < filterHeight; ++wR) {\n                                var xR = xRCorner + wR * dilationHeight;\n                                if (xR < 0 || xR >= convInfo.inHeight) {\n                                    continue;\n                                }\n                                for (var wC = 0; wC < filterWidth; ++wC) {\n                                    var xC = xCCorner + wC * dilationWidth;\n                                    if (xC < 0 || xC >= convInfo.inWidth) {\n                                        continue;\n                                    }\n                                    var pixel = x.get(b, xR, xC, d1);\n                                    var weight = filter.get(wR, wC, d1, q);\n                                    dotProd += pixel * weight;\n                                }\n                            }\n                            y.set(dotProd, b, yR, yC, d1 * chMul + q);\n                        }\n                    }\n                }\n            }\n        }\n        return y.toTensor();\n    };\n    MathBackendCPU.prototype.depthwiseConv2DDerInput = function (dy, filter, convInfo) {\n        var dx = ops.buffer(convInfo.inShape, 'float32');\n        var dxValues = dx.values;\n        var _a = dx.strides, dxS0 = _a[0], dxS1 = _a[1], dxS2 = _a[2];\n        var dyValues = dy.dataSync();\n        var _b = dy.strides, dyS0 = _b[0], dyS1 = _b[1], dyS2 = _b[2];\n        var fltValues = filter.dataSync();\n        var _c = filter.strides, fltS0 = _c[0], fltS1 = _c[1], fltS2 = _c[2];\n        var batchSize = convInfo.batchSize, filterHeight = convInfo.filterHeight, filterWidth = convInfo.filterWidth, inChannels = convInfo.inChannels, inHeight = convInfo.inHeight, inWidth = convInfo.inWidth, outChannels = convInfo.outChannels, outHeight = convInfo.outHeight, outWidth = convInfo.outWidth, strideHeight = convInfo.strideHeight, strideWidth = convInfo.strideWidth;\n        var topPad = filterHeight - 1 - convInfo.padInfo.top;\n        var leftPad = filterWidth - 1 - convInfo.padInfo.left;\n        var chMul = outChannels / inChannels;\n        for (var b = 0; b < batchSize; ++b) {\n            for (var d1 = 0; d1 < inChannels; ++d1) {\n                for (var xR = 0; xR < inHeight; ++xR) {\n                    var xRCorner = xR - topPad;\n                    var xRMin = Math.max(0, Math.ceil(xRCorner / strideHeight));\n                    var yRMax = Math.min(outHeight, (filterHeight + xRCorner) / strideHeight);\n                    for (var xC = 0; xC < inWidth; ++xC) {\n                        var xCCorner = xC - leftPad;\n                        var xCMin = Math.max(0, Math.ceil(xCCorner / strideWidth));\n                        var yCMax = Math.min(outWidth, (filterWidth + xCCorner) / strideWidth);\n                        var dotProd = 0;\n                        for (var yR = xRMin; yR < yRMax; ++yR) {\n                            var wR = yR * strideHeight - xRCorner;\n                            for (var yC = xCMin; yC < yCMax; ++yC) {\n                                var wC = yC * strideWidth - xCCorner;\n                                var dyOffset = dyS0 * b + dyS1 * yR + dyS2 * yC;\n                                var fltOffset = fltS0 * (filterHeight - 1 - wR) +\n                                    fltS1 * (filterWidth - 1 - wC) + fltS2 * d1;\n                                for (var dm = 0; dm < chMul; ++dm) {\n                                    var d2 = d1 * chMul + dm;\n                                    var pixel = dyValues[dyOffset + d2];\n                                    var weight = fltValues[fltOffset + dm];\n                                    dotProd += pixel * weight;\n                                }\n                            }\n                        }\n                        dxValues[dxS0 * b + dxS1 * xR + dxS2 * xC + d1] = dotProd;\n                    }\n                }\n            }\n        }\n        return dx.toTensor();\n    };\n    MathBackendCPU.prototype.depthwiseConv2DDerFilter = function (x, dy, convInfo) {\n        var strideHeight = convInfo.strideHeight;\n        var strideWidth = convInfo.strideWidth;\n        var filterHeight = convInfo.filterHeight;\n        var filterWidth = convInfo.filterWidth;\n        var dW = ops.buffer(convInfo.filterShape, 'float32');\n        var leftPad = convInfo.padInfo.left;\n        var topPad = convInfo.padInfo.top;\n        var chMul = convInfo.outChannels / convInfo.inChannels;\n        for (var wR = 0; wR < filterHeight; ++wR) {\n            var yRMin = Math.max(0, Math.ceil((topPad - wR) / strideHeight));\n            var yRMax = Math.min(convInfo.outHeight, (convInfo.inHeight + topPad - wR) / strideHeight);\n            for (var wC = 0; wC < filterWidth; ++wC) {\n                var yCMin = Math.max(0, Math.ceil((leftPad - wC) / strideWidth));\n                var yCMax = Math.min(convInfo.outWidth, (convInfo.inWidth + leftPad - wC) / strideWidth);\n                for (var d2 = 0; d2 < convInfo.outChannels; ++d2) {\n                    var d1 = Math.trunc(d2 / chMul);\n                    var dm = d2 % chMul;\n                    var dotProd = 0;\n                    for (var b = 0; b < convInfo.batchSize; ++b) {\n                        for (var yR = yRMin; yR < yRMax; ++yR) {\n                            var xR = wR + yR * strideHeight - topPad;\n                            for (var yC = yCMin; yC < yCMax; ++yC) {\n                                var xC = wC + yC * strideWidth - leftPad;\n                                dotProd += x.get(b, xR, xC, d1) * dy.get(b, yR, yC, d2);\n                            }\n                        }\n                    }\n                    dW.set(dotProd, wR, wC, d1, dm);\n                }\n            }\n        }\n        return dW.toTensor();\n    };\n    MathBackendCPU.prototype.tile = function (x, reps) {\n        var newShape = new Array(x.rank);\n        for (var i = 0; i < newShape.length; i++) {\n            newShape[i] = x.shape[i] * reps[i];\n        }\n        var result = ops.buffer(newShape, x.dtype);\n        var xBuf = x.buffer();\n        for (var i = 0; i < result.values.length; ++i) {\n            var newLoc = result.indexToLoc(i);\n            var originalLoc = new Array(x.rank);\n            for (var i_1 = 0; i_1 < originalLoc.length; i_1++) {\n                originalLoc[i_1] = newLoc[i_1] % x.shape[i_1];\n            }\n            var originalIndex = xBuf.locToIndex(originalLoc);\n            result.values[i] = xBuf.values[originalIndex];\n        }\n        return result.toTensor();\n    };\n    MathBackendCPU.prototype.pad = function (x, paddings, constantValue) {\n        var outShape = paddings.map(function (p, i) { return p[0] + x.shape[i] + p[1]; });\n        var start = paddings.map(function (p) { return p[0]; });\n        var xBuffer = x.buffer();\n        var buffer = ops.buffer(outShape, x.dtype);\n        if (constantValue !== 0) {\n            buffer.values.fill(constantValue);\n        }\n        for (var i = 0; i < x.size; i++) {\n            var coords = xBuffer.indexToLoc(i);\n            var outCoords = coords.map(function (c, i) { return c + start[i]; });\n            buffer.set.apply(buffer, [x.get.apply(x, coords)].concat(outCoords));\n        }\n        return buffer.toTensor();\n    };\n    MathBackendCPU.prototype.transpose = function (x, perm) {\n        var newShape = new Array(x.rank);\n        for (var i = 0; i < newShape.length; i++) {\n            newShape[i] = x.shape[perm[i]];\n        }\n        var values = x.dataSync();\n        var result = ops_1.buffer(newShape, x.dtype);\n        var xBuf = x.buffer();\n        for (var i = 0; i < x.size; ++i) {\n            var loc = xBuf.indexToLoc(i);\n            var newLoc = new Array(loc.length);\n            for (var i_2 = 0; i_2 < newLoc.length; i_2++) {\n                newLoc[i_2] = loc[perm[i_2]];\n            }\n            var newIndex = result.locToIndex(newLoc);\n            result.values[newIndex] = values[i];\n        }\n        return result.toTensor();\n    };\n    MathBackendCPU.prototype.gather = function (x, indices, axis) {\n        var newShape = x.shape.slice();\n        var indicesValues = indices.dataSync();\n        newShape[axis] = indicesValues.length;\n        var result = ops_1.buffer(newShape, x.dtype);\n        var xBuf = x.buffer();\n        for (var i = 0; i < result.size; ++i) {\n            var newLoc = result.indexToLoc(i);\n            var originalLoc = newLoc.slice();\n            originalLoc[axis] = indicesValues[newLoc[axis]];\n            var originalIndex = xBuf.locToIndex(originalLoc);\n            result.values[i] = xBuf.values[originalIndex];\n        }\n        return result.toTensor();\n    };\n    MathBackendCPU.prototype.batchToSpaceND = function (x, blockShape, crops) {\n        var prod = blockShape.reduce(function (a, b) { return a * b; });\n        var reshaped = array_ops_util.getReshaped(x.shape, blockShape, prod);\n        var permuted = array_ops_util.getPermuted(reshaped.length, blockShape.length);\n        var reshapedPermuted = array_ops_util.getReshapedPermuted(x.shape, blockShape, prod);\n        var sliceBeginCoords = array_ops_util.getSliceBeginCoords(crops, blockShape.length);\n        var sliceSize = array_ops_util.getSliceSize(reshapedPermuted, crops, blockShape.length);\n        return x.reshape(reshaped)\n            .transpose(permuted)\n            .reshape(reshapedPermuted)\n            .slice(sliceBeginCoords, sliceSize);\n    };\n    MathBackendCPU.prototype.spaceToBatchND = function (x, blockShape, paddings) {\n        var prod = blockShape.reduce(function (a, b) { return a * b; });\n        var completePaddings = [[0, 0]];\n        completePaddings.push.apply(completePaddings, paddings);\n        for (var i = 1 + blockShape.length; i < x.shape.length; ++i) {\n            completePaddings.push([0, 0]);\n        }\n        var paddedX = x.pad(completePaddings);\n        var reshapedPaddedShape = array_ops_util.getReshaped(paddedX.shape, blockShape, prod, false);\n        var permutedReshapedPaddedPermutation = array_ops_util.getPermuted(reshapedPaddedShape.length, blockShape.length, false);\n        var flattenShape = array_ops_util.getReshapedPermuted(paddedX.shape, blockShape, prod, false);\n        return paddedX.reshape(reshapedPaddedShape)\n            .transpose(permutedReshapedPaddedPermutation)\n            .reshape(flattenShape);\n    };\n    MathBackendCPU.prototype.pool = function (x, convInfo, poolType) {\n        var strideHeight = convInfo.strideHeight;\n        var strideWidth = convInfo.strideWidth;\n        var filterHeight = convInfo.filterHeight;\n        var filterWidth = convInfo.filterWidth;\n        var y = ops.buffer(convInfo.outShape, 'float32');\n        var padTop = convInfo.padInfo.top;\n        var padLeft = convInfo.padInfo.left;\n        for (var b = 0; b < convInfo.batchSize; ++b) {\n            for (var d = 0; d < convInfo.inChannels; ++d) {\n                for (var yR = 0; yR < convInfo.outHeight; ++yR) {\n                    var xRCorner = yR * strideHeight - padTop;\n                    var xRMin = Math.max(0, xRCorner);\n                    var xRMax = Math.min(convInfo.inHeight, filterHeight + xRCorner);\n                    for (var yC = 0; yC < convInfo.outWidth; ++yC) {\n                        var xCCorner = yC * strideWidth - padLeft;\n                        var xCMin = Math.max(0, xCCorner);\n                        var xCMax = Math.min(convInfo.inWidth, filterWidth + xCCorner);\n                        var minMaxValue = (poolType === 'max' ? Number.NEGATIVE_INFINITY :\n                            Number.POSITIVE_INFINITY);\n                        var avgValue = 0;\n                        var count = 0;\n                        for (var xR = xRMin; xR < xRMax; ++xR) {\n                            for (var xC = xCMin; xC < xCMax; ++xC) {\n                                var pixel = x.get(b, xR, xC, d);\n                                if ((poolType === 'max' && pixel > minMaxValue)) {\n                                    minMaxValue = pixel;\n                                }\n                                else if (poolType === 'avg') {\n                                    avgValue += pixel;\n                                    count++;\n                                }\n                            }\n                            if (isNaN(minMaxValue)) {\n                                break;\n                            }\n                        }\n                        y.set(poolType === 'avg' ? avgValue / count : minMaxValue, b, yR, yC, d);\n                    }\n                }\n            }\n        }\n        return y.toTensor();\n    };\n    MathBackendCPU.prototype.maxPool = function (x, convInfo) {\n        return this.pool(x, convInfo, 'max');\n    };\n    MathBackendCPU.prototype.maxPoolPositions = function (x, convInfo) {\n        var maxPositions = ops.buffer(convInfo.outShape, 'int32');\n        var strideHeight = convInfo.strideHeight;\n        var strideWidth = convInfo.strideWidth;\n        var filterHeight = convInfo.filterHeight;\n        var filterWidth = convInfo.filterWidth;\n        var padTop = convInfo.padInfo.top;\n        var padLeft = convInfo.padInfo.left;\n        for (var b = 0; b < convInfo.batchSize; ++b) {\n            for (var d = 0; d < convInfo.inChannels; ++d) {\n                for (var yR = 0; yR < convInfo.outHeight; ++yR) {\n                    var xRCorner = yR * strideHeight - padTop;\n                    var xRMin = Math.max(0, xRCorner);\n                    var xRMax = Math.min(convInfo.inHeight, filterHeight + xRCorner);\n                    for (var yC = 0; yC < convInfo.outWidth; ++yC) {\n                        var xCCorner = yC * strideWidth - padLeft;\n                        var xCMin = Math.max(0, xCCorner);\n                        var xCMax = Math.min(convInfo.inWidth, filterWidth + xCCorner);\n                        var maxValue = Number.NEGATIVE_INFINITY;\n                        var maxPosition = -1;\n                        for (var xR = xRMin; xR < xRMax; ++xR) {\n                            var wR = xR - xRCorner;\n                            for (var xC = xCMin; xC < xCMax; ++xC) {\n                                var wC = xC - xCCorner;\n                                var pixel = x.get(b, xR, xC, d);\n                                if (pixel > maxValue) {\n                                    maxValue = pixel;\n                                    maxPosition = wR * filterWidth + wC;\n                                }\n                            }\n                        }\n                        maxPositions.set(maxPosition, b, yR, yC, d);\n                    }\n                }\n            }\n        }\n        return maxPositions.toTensor();\n    };\n    MathBackendCPU.prototype.maxPoolBackprop = function (dy, x, y, convInfo) {\n        var maxPositions = this.maxPoolPositions(x, convInfo);\n        var strideHeight = convInfo.strideHeight;\n        var strideWidth = convInfo.strideWidth;\n        var filterHeight = convInfo.filterHeight;\n        var filterWidth = convInfo.filterWidth;\n        var padLeft = filterWidth - 1 - convInfo.padInfo.left;\n        var padTop = filterHeight - 1 - convInfo.padInfo.top;\n        var dx = ops.buffer(x.shape, 'float32');\n        for (var b = 0; b < convInfo.batchSize; ++b) {\n            for (var d = 0; d < convInfo.inChannels; ++d) {\n                for (var dxR = 0; dxR < convInfo.inHeight; ++dxR) {\n                    for (var dxC = 0; dxC < convInfo.inWidth; ++dxC) {\n                        var dyRCorner = dxR - padTop;\n                        var dyCCorner = dxC - padLeft;\n                        var dotProd = 0;\n                        for (var wR = 0; wR < filterHeight; ++wR) {\n                            var dyR = (dyRCorner + wR) / strideHeight;\n                            if (dyR < 0 || dyR >= convInfo.outHeight ||\n                                Math.floor(dyR) !== dyR) {\n                                continue;\n                            }\n                            for (var wC = 0; wC < filterWidth; ++wC) {\n                                var dyC = (dyCCorner + wC) / strideWidth;\n                                if (dyC < 0 || dyC >= convInfo.outWidth ||\n                                    Math.floor(dyC) !== dyC) {\n                                    continue;\n                                }\n                                var maxPos = filterHeight * filterWidth - 1 -\n                                    maxPositions.get(b, dyR, dyC, d);\n                                var curPos = wR * filterWidth + wC;\n                                var mask = maxPos === curPos ? 1 : 0;\n                                if (mask === 0) {\n                                    continue;\n                                }\n                                var pixel = dy.get(b, dyR, dyC, d);\n                                dotProd += pixel * mask;\n                            }\n                        }\n                        dx.set(dotProd, b, dxR, dxC, d);\n                    }\n                }\n            }\n        }\n        return dx.toTensor();\n    };\n    MathBackendCPU.prototype.avgPoolBackprop = function (dy, x, convInfo) {\n        var strideHeight = convInfo.strideHeight;\n        var strideWidth = convInfo.strideWidth;\n        var filterHeight = convInfo.filterHeight;\n        var filterWidth = convInfo.filterWidth;\n        var padLeft = filterWidth - 1 - convInfo.padInfo.left;\n        var padTop = filterHeight - 1 - convInfo.padInfo.top;\n        var dx = ops.buffer(x.shape, 'float32');\n        var avgMultiplier = 1 / (filterHeight * filterWidth);\n        for (var b = 0; b < convInfo.batchSize; ++b) {\n            for (var d = 0; d < convInfo.inChannels; ++d) {\n                for (var dxR = 0; dxR < convInfo.inHeight; ++dxR) {\n                    for (var dxC = 0; dxC < convInfo.inWidth; ++dxC) {\n                        var dyRCorner = dxR - padTop;\n                        var dyCCorner = dxC - padLeft;\n                        var dotProd = 0;\n                        for (var wR = 0; wR < filterHeight; ++wR) {\n                            var dyR = (dyRCorner + wR) / strideHeight;\n                            if (dyR < 0 || dyR >= convInfo.outHeight ||\n                                Math.floor(dyR) !== dyR) {\n                                continue;\n                            }\n                            for (var wC = 0; wC < filterWidth; ++wC) {\n                                var dyC = (dyCCorner + wC) / strideWidth;\n                                if (dyC < 0 || dyC >= convInfo.outWidth ||\n                                    Math.floor(dyC) !== dyC) {\n                                    continue;\n                                }\n                                var pixel = dy.get(b, dyR, dyC, d);\n                                dotProd += pixel;\n                            }\n                        }\n                        dx.set(dotProd * avgMultiplier, b, dxR, dxC, d);\n                    }\n                }\n            }\n        }\n        return dx.toTensor();\n    };\n    MathBackendCPU.prototype.cast = function (x, dtype) {\n        return backend_util.castTensor(x, dtype, this);\n    };\n    MathBackendCPU.prototype.reshape = function (x, shape) {\n        return backend_util.reshapeTensor(x, shape);\n    };\n    MathBackendCPU.prototype.avgPool = function (x, convInfo) {\n        return this.pool(x, convInfo, 'avg').toFloat();\n    };\n    MathBackendCPU.prototype.resizeBilinear = function (x, newHeight, newWidth, alignCorners) {\n        var _a = x.shape, batch = _a[0], oldHeight = _a[1], oldWidth = _a[2], numChannels = _a[3];\n        var output = ops.buffer([batch, newHeight, newWidth, numChannels], x.dtype);\n        var effectiveInputSize = [\n            (alignCorners && newHeight > 1) ? oldHeight - 1 : oldHeight,\n            (alignCorners && newWidth > 1) ? oldWidth - 1 : oldWidth\n        ];\n        var effectiveOutputSize = [\n            (alignCorners && newHeight > 1) ? newHeight - 1 : newHeight,\n            (alignCorners && newWidth > 1) ? newWidth - 1 : newWidth\n        ];\n        for (var b = 0; b < batch; b++) {\n            for (var r = 0; r < newHeight; r++) {\n                for (var c = 0; c < newWidth; c++) {\n                    for (var d = 0; d < numChannels; d++) {\n                        var sourceFracRow = (effectiveInputSize[0]) * r / (effectiveOutputSize[0]);\n                        var sourceFracCol = (effectiveInputSize[1]) * c / (effectiveOutputSize[1]);\n                        var sourceRowFloor = Math.floor(sourceFracRow);\n                        var sourceRowCeil = Math.min(oldHeight - 1, Math.ceil(sourceFracRow));\n                        var sourceColFloor = Math.floor(sourceFracCol);\n                        var sourceColCeil = Math.min(oldWidth - 1, Math.ceil(sourceFracCol));\n                        var topLeft = x.get(b, sourceRowFloor, sourceColFloor, d);\n                        var bottomLeft = x.get(b, sourceRowCeil, sourceColFloor, d);\n                        var topRight = x.get(b, sourceRowFloor, sourceColCeil, d);\n                        var bottomRight = x.get(b, sourceRowCeil, sourceColCeil, d);\n                        var rowFrac = sourceFracRow - sourceRowFloor;\n                        var colFrac = sourceFracCol - sourceColFloor;\n                        var top_1 = topLeft + (topRight - topLeft) * colFrac;\n                        var bottom = bottomLeft + (bottomRight - bottomLeft) * colFrac;\n                        var newValue = top_1 + (bottom - top_1) * rowFrac;\n                        output.set(newValue, b, r, c, d);\n                    }\n                }\n            }\n        }\n        return output.toTensor();\n    };\n    MathBackendCPU.prototype.resizeBilinearBackprop = function (dy, x, alignCorners) {\n        var _a = x.shape, batch = _a[0], xHeight = _a[1], xWidth = _a[2], depth = _a[3];\n        var _b = dy.shape, yHeight = _b[1], yWidth = _b[2];\n        var output = ops.buffer([batch, xHeight, xWidth, depth], x.dtype);\n        var effectiveXSize = [\n            (alignCorners && yHeight > 1) ? xHeight - 1 : xHeight,\n            (alignCorners && yWidth > 1) ? xWidth - 1 : xWidth\n        ];\n        var effectiveYSize = [\n            (alignCorners && yHeight > 1) ? yHeight - 1 : yHeight,\n            (alignCorners && yWidth > 1) ? yWidth - 1 : yWidth\n        ];\n        var heightScale = effectiveXSize[0] / effectiveYSize[0];\n        var widthScale = effectiveXSize[1] / effectiveYSize[1];\n        for (var b = 0; b < batch; b++) {\n            for (var r = 0; r < yHeight; r++) {\n                var dxR = r * heightScale;\n                var topDxRIndex = Math.floor(dxR);\n                var bottomDxRIndex = Math.min(Math.ceil(dxR), xHeight - 1);\n                var dxRLerp = dxR - topDxRIndex;\n                var inverseDxRLerp = 1.0 - dxRLerp;\n                for (var c = 0; c < yWidth; c++) {\n                    var dxC = c * widthScale;\n                    var leftDxCIndex = Math.floor(dxC);\n                    var rightDxCIndex = Math.min(Math.ceil(dxC), xWidth - 1);\n                    var dxCLerp = dxC - leftDxCIndex;\n                    var inverseDxCLerp = 1.0 - dxCLerp;\n                    for (var d = 0; d < depth; d++) {\n                        var dyVal = dy.get(b, r, c, d);\n                        var topLeft = output.get(b, topDxRIndex, leftDxCIndex, d);\n                        topLeft += dyVal * inverseDxRLerp * inverseDxCLerp;\n                        output.set(topLeft, b, topDxRIndex, leftDxCIndex, d);\n                        var topRight = output.get(b, topDxRIndex, rightDxCIndex, d);\n                        topRight += dyVal * inverseDxRLerp * dxCLerp;\n                        output.set(topRight, b, topDxRIndex, rightDxCIndex, d);\n                        var bottomLeft = output.get(b, bottomDxRIndex, leftDxCIndex, d);\n                        bottomLeft += dyVal * dxRLerp * inverseDxCLerp;\n                        output.set(bottomLeft, b, bottomDxRIndex, leftDxCIndex, d);\n                        var bottomRight = output.get(b, bottomDxRIndex, rightDxCIndex, d);\n                        bottomRight += dyVal * dxRLerp * dxCLerp;\n                        output.set(bottomRight, b, bottomDxRIndex, rightDxCIndex, d);\n                    }\n                }\n            }\n        }\n        return output.toTensor();\n    };\n    MathBackendCPU.prototype.resizeNearestNeighbor = function (x, newHeight, newWidth, alignCorners) {\n        var _a = x.shape, batch = _a[0], oldHeight = _a[1], oldWidth = _a[2], numChannels = _a[3];\n        var output = ops.buffer([batch, newHeight, newWidth, numChannels], x.dtype);\n        var effectiveInputSize = [\n            (alignCorners && newHeight > 1) ? oldHeight - 1 : oldHeight,\n            (alignCorners && newWidth > 1) ? oldWidth - 1 : oldWidth\n        ];\n        var effectiveOutputSize = [\n            (alignCorners && newHeight > 1) ? newHeight - 1 : newHeight,\n            (alignCorners && newWidth > 1) ? newWidth - 1 : newWidth\n        ];\n        for (var b = 0; b < batch; b++) {\n            for (var r = 0; r < newHeight; r++) {\n                for (var c = 0; c < newWidth; c++) {\n                    for (var d = 0; d < numChannels; d++) {\n                        var sourceFracRow = (effectiveInputSize[0]) * r / (effectiveOutputSize[0]);\n                        var sourceFracCol = (effectiveInputSize[1]) * c / (effectiveOutputSize[1]);\n                        var sourceNearestRow = Math.min(oldHeight - 1, alignCorners ? Math.round(sourceFracRow) :\n                            Math.floor(sourceFracRow));\n                        var sourceNearestCol = Math.min(oldWidth - 1, alignCorners ? Math.round(sourceFracCol) :\n                            Math.floor(sourceFracCol));\n                        var newValue = x.get(b, sourceNearestRow, sourceNearestCol, d);\n                        output.set(newValue, b, r, c, d);\n                    }\n                }\n            }\n        }\n        return output.toTensor();\n    };\n    MathBackendCPU.prototype.resizeNearestNeighborBackprop = function (dy, x, alignCorners) {\n        var _a = x.shape, batch = _a[0], xHeight = _a[1], xWidth = _a[2], depth = _a[3];\n        var _b = dy.shape, yHeight = _b[1], yWidth = _b[2];\n        var output = ops.buffer([batch, xHeight, xWidth, depth], x.dtype);\n        var effectiveXSize = [\n            (alignCorners && yHeight > 1) ? xHeight - 1 : xHeight,\n            (alignCorners && yWidth > 1) ? xWidth - 1 : xWidth\n        ];\n        var effectiveYSize = [\n            (alignCorners && yHeight > 1) ? yHeight - 1 : yHeight,\n            (alignCorners && yWidth > 1) ? yWidth - 1 : yWidth\n        ];\n        var heightScale = effectiveXSize[0] / effectiveYSize[0];\n        var widthScale = effectiveXSize[1] / effectiveYSize[1];\n        var invHeightScale = 1 / heightScale;\n        var invWidthScale = 1 / widthScale;\n        var winHeight = (Math.ceil(invHeightScale) * 2) + 2;\n        var winWidth = (Math.ceil(invWidthScale) * 2) + 2;\n        for (var b = 0; b < batch; b++) {\n            for (var r = 0; r < xHeight; r++) {\n                for (var c = 0; c < xWidth; c++) {\n                    var startRLerp = Math.floor(r * invHeightScale);\n                    var startDyR = Math.floor(startRLerp - (winHeight / 2));\n                    var startCLerp = Math.floor(c * invWidthScale);\n                    var startDyC = Math.floor(startCLerp - (winWidth / 2));\n                    for (var d = 0; d < depth; d++) {\n                        var accum = 0;\n                        for (var dyROffset = 0; dyROffset < winHeight; dyROffset++) {\n                            var dyR = dyROffset + startDyR;\n                            if (dyR < 0 || dyR >= yHeight) {\n                                continue;\n                            }\n                            for (var dyCOffSet = 0; dyCOffSet < winWidth; dyCOffSet++) {\n                                var dyC = dyCOffSet + startDyC;\n                                if (dyC < 0 || dyC >= yWidth) {\n                                    continue;\n                                }\n                                var sourceFracRow = effectiveXSize[0] * (dyR / effectiveYSize[0]);\n                                var sourceFracCol = effectiveXSize[1] * (dyC / effectiveYSize[1]);\n                                var sourceNearestRow = Math.min(xHeight - 1, alignCorners ? Math.round(sourceFracRow) :\n                                    Math.floor(sourceFracRow));\n                                var sourceNearestCol = Math.min(xWidth - 1, alignCorners ? Math.round(sourceFracCol) :\n                                    Math.floor(sourceFracCol));\n                                if (r === sourceNearestRow && c === sourceNearestCol) {\n                                    accum += dy.get(b, dyR, dyC, d);\n                                }\n                            }\n                        }\n                        output.set(accum, b, r, c, d);\n                    }\n                }\n            }\n        }\n        return output.toTensor();\n    };\n    MathBackendCPU.prototype.batchNormalization = function (x, mean, variance, varianceEpsilon, scale, offset) {\n        var xValues = x.dataSync();\n        var meanValues = mean.dataSync();\n        var varianceValues = variance.dataSync();\n        var scaleValues = scale ? scale.dataSync() : new Float32Array([1]);\n        var offsetValues = offset ? offset.dataSync() : new Float32Array([0]);\n        var outValues = new Float32Array(xValues.length);\n        for (var i = 0; i < xValues.length; i++) {\n            outValues[i] = offsetValues[i % offsetValues.length] +\n                (xValues[i] - meanValues[i % meanValues.length]) *\n                    scaleValues[i % scaleValues.length] /\n                    Math.sqrt(varianceValues[i % varianceValues.length] + varianceEpsilon);\n        }\n        return ops_1.tensor4d(outValues, x.shape);\n    };\n    MathBackendCPU.prototype.localResponseNormalization4D = function (x, radius, bias, alpha, beta) {\n        var output = ops.buffer(x.shape, 'float32');\n        var rad = radius;\n        var maxD = output.shape[3] - 1;\n        function sumAcrossChannels(b, r, c, d) {\n            var sum = 0.0;\n            for (var j = Math.max(0, d - rad); j <= Math.min(d + rad, maxD); j++) {\n                var z = x.get(b, r, c, j);\n                sum += z * z;\n            }\n            return sum;\n        }\n        for (var b = 0; b < output.shape[0]; b++) {\n            for (var r = 0; r <= output.shape[1]; r++) {\n                for (var c = 0; c < output.shape[2]; c++) {\n                    for (var d = 0; d < output.shape[3]; d++) {\n                        var sum = sumAcrossChannels(b, r, c, d);\n                        var val = x.get(b, r, c, d) * Math.pow(bias + alpha * sum, -beta);\n                        output.set(val, b, r, c, d);\n                    }\n                }\n            }\n        }\n        return output.toTensor();\n    };\n    MathBackendCPU.prototype.LRNGrad = function (dy, inputImage, outputImage, depthRadius, bias, alpha, beta) {\n        var batch = dy.shape[0];\n        var rows = dy.shape[1];\n        var cols = dy.shape[2];\n        var depth = dy.shape[3];\n        var output = ops.buffer([batch, rows, cols, depth], 'float32');\n        for (var b = 0; b < batch; ++b) {\n            for (var r = 0; r < rows; ++r) {\n                for (var c = 0; c < cols; ++c) {\n                    for (var d = 0; d < depth; ++d) {\n                        var depthBegin = Math.max(0, d - depthRadius);\n                        var depthEnd = Math.min(depth, d + depthRadius + 1);\n                        var norm = 0;\n                        for (var k = depthBegin; k < depthEnd; ++k) {\n                            norm += inputImage.get(b, r, c, k) * inputImage.get(b, r, c, k);\n                        }\n                        norm = alpha * norm + bias;\n                        for (var k = depthBegin; k < depthEnd; ++k) {\n                            var dyi = -2 * alpha * beta * inputImage.get(b, r, c, k) *\n                                outputImage.get(b, r, c, d) / norm;\n                            if (d === k) {\n                                dyi += Math.pow(norm, -beta);\n                            }\n                            dyi *= dy.get(b, r, c, d);\n                            output.set(dyi + output.get(b, r, c, k), b, r, c, k);\n                        }\n                    }\n                }\n            }\n        }\n        return output.toTensor();\n    };\n    MathBackendCPU.prototype.multinomial = function (logits, normalized, numSamples, seed) {\n        var probabilities = normalized ? logits : ops.softmax(logits);\n        var batchSize = probabilities.shape[0];\n        var numEvents = probabilities.shape[1];\n        var res = ops.zeros([batchSize, numSamples], 'int32');\n        var resVals = res.dataSync();\n        var probVals = probabilities.dataSync();\n        for (var b = 0; b < batchSize; ++b) {\n            var offset = b * numEvents;\n            var cdf = new Float32Array(numEvents - 1);\n            cdf[0] = probVals[offset];\n            for (var event_1 = 1; event_1 < cdf.length; ++event_1) {\n                cdf[event_1] = cdf[event_1 - 1] + probVals[offset + event_1];\n            }\n            var random = seedrandom.alea(seed.toString());\n            var outOffset = b * numSamples;\n            for (var sampleId = 0; sampleId < numSamples; ++sampleId) {\n                var r = random();\n                resVals[outOffset + sampleId] = cdf.length;\n                for (var event_2 = 0; event_2 < cdf.length; event_2++) {\n                    if (r < cdf[event_2]) {\n                        resVals[outOffset + sampleId] = event_2;\n                        break;\n                    }\n                }\n            }\n        }\n        return res;\n    };\n    MathBackendCPU.prototype.oneHot = function (indices, depth, onValue, offValue) {\n        var res = new Float32Array(indices.size * depth);\n        res.fill(offValue);\n        for (var event_3 = 0; event_3 < indices.size; ++event_3) {\n            if (indices.get(event_3) >= 0 && indices.get(event_3) < depth) {\n                res[event_3 * depth + indices.get(event_3)] = onValue;\n            }\n        }\n        return ops.tensor2d(res, [indices.size, depth], 'int32');\n    };\n    MathBackendCPU.prototype.nonMaxSuppression = function (boxes, scores, maxOutputSize, iouThreshold, scoreThreshold) {\n        var boxesVals = boxes.dataSync();\n        var scoresVals = scores.dataSync();\n        return non_max_suppression_impl_1.nonMaxSuppressionImpl(boxesVals, scoresVals, maxOutputSize, iouThreshold, scoreThreshold);\n    };\n    MathBackendCPU.prototype.broadcastedBinaryOp = function (a, b, dtype, op) {\n        var newShape = broadcast_util.assertAndGetBroadcastShape(a.shape, b.shape);\n        var result = ops.buffer(newShape, dtype);\n        var aValues = a.dataSync();\n        var bValues = b.dataSync();\n        var aBroadcastDims = broadcast_util.getBroadcastDims(a.shape, newShape);\n        var bBroadcastDims = broadcast_util.getBroadcastDims(b.shape, newShape);\n        var aBuf = a.buffer();\n        var bBuf = b.buffer();\n        var _loop_2 = function (i) {\n            var loc = result.indexToLoc(i);\n            var aLoc = loc.slice(-a.rank);\n            aBroadcastDims.forEach(function (d) { return aLoc[d] = 0; });\n            var aIndex = aBuf.locToIndex(aLoc);\n            var bLoc = loc.slice(-b.rank);\n            bBroadcastDims.forEach(function (d) { return bLoc[d] = 0; });\n            var bIndex = bBuf.locToIndex(bLoc);\n            result.values[i] = op(aValues[aIndex], bValues[bIndex]);\n        };\n        for (var i = 0; i < result.values.length; ++i) {\n            _loop_2(i);\n        }\n        return result.toTensor();\n    };\n    MathBackendCPU.prototype.dispose = function () { };\n    return MathBackendCPU;\n}());\nexports.MathBackendCPU = MathBackendCPU;\nenvironment_1.ENV.registerBackend('cpu', function () { return new MathBackendCPU(); }, 1, tensor_1.setTensorTracker);\n\n},{\"../environment\":55,\"../log\":119,\"../ops/array_ops_util\":121,\"../ops/axis_util\":122,\"../ops/broadcast_util\":125,\"../ops/concat_util\":128,\"../ops/erf_util\":131,\"../ops/ops\":142,\"../ops/selu_util\":151,\"../ops/slice_util\":153,\"../tensor\":173,\"../types\":179,\"../util\":180,\"./backend_util\":72,\"./non_max_suppression_impl\":74,\"./topk_impl\":75,\"./where_impl\":118,\"seedrandom\":283}],72:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tensor_ops_1 = require(\"../ops/tensor_ops\");\nvar tensor_1 = require(\"../tensor\");\nvar util_1 = require(\"../util\");\nfunction castTensor(x, dtype, backend) {\n    if (!util_1.hasEncodingLoss(x.dtype, dtype)) {\n        return tensor_1.Tensor.make(x.shape, { dataId: x.dataId }, dtype);\n    }\n    if (dtype === 'int32') {\n        return backend.int(x);\n    }\n    else if (dtype === 'bool') {\n        return backend.notEqual(x, tensor_ops_1.scalar(0, x.dtype));\n    }\n    else {\n        throw new Error(\"Error in Cast: unknown dtype argument (\" + dtype + \")\");\n    }\n}\nexports.castTensor = castTensor;\nfunction reshapeTensor(x, shape) {\n    return tensor_1.Tensor.make(shape, { dataId: x.dataId }, x.dtype);\n}\nexports.reshapeTensor = reshapeTensor;\n\n},{\"../ops/tensor_ops\":156,\"../tensor\":173,\"../util\":180}],73:[function(require,module,exports){\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 = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, 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 environment_1 = require(\"../environment\");\nvar log_1 = require(\"../log\");\nvar array_ops_util = require(\"../ops/array_ops_util\");\nvar axis_util = require(\"../ops/axis_util\");\nvar reduce_util = require(\"../ops/reduce_util\");\nvar segment_util = require(\"../ops/segment_util\");\nvar slice_util_1 = require(\"../ops/slice_util\");\nvar softmax_1 = require(\"../ops/softmax\");\nvar tensor_ops_1 = require(\"../ops/tensor_ops\");\nvar tensor_1 = require(\"../tensor\");\nvar types_1 = require(\"../types\");\nvar util = require(\"../util\");\nvar backend_util = require(\"./backend_util\");\nvar non_max_suppression_impl_1 = require(\"./non_max_suppression_impl\");\nvar topk_impl_1 = require(\"./topk_impl\");\nvar argminmax_gpu_1 = require(\"./webgl/argminmax_gpu\");\nvar avg_pool_backprop_gpu_1 = require(\"./webgl/avg_pool_backprop_gpu\");\nvar batchnorm_gpu_1 = require(\"./webgl/batchnorm_gpu\");\nvar binaryop_gpu = require(\"./webgl/binaryop_gpu\");\nvar binaryop_gpu_1 = require(\"./webgl/binaryop_gpu\");\nvar clip_gpu_1 = require(\"./webgl/clip_gpu\");\nvar concat_gpu_1 = require(\"./webgl/concat_gpu\");\nvar conv_backprop_gpu_1 = require(\"./webgl/conv_backprop_gpu\");\nvar conv_backprop_gpu_depthwise_1 = require(\"./webgl/conv_backprop_gpu_depthwise\");\nvar conv_gpu_1 = require(\"./webgl/conv_gpu\");\nvar conv_gpu_depthwise_1 = require(\"./webgl/conv_gpu_depthwise\");\nvar cumsum_gpu_1 = require(\"./webgl/cumsum_gpu\");\nvar encode_float_gpu_1 = require(\"./webgl/encode_float_gpu\");\nvar from_pixels_gpu_1 = require(\"./webgl/from_pixels_gpu\");\nvar gather_gpu_1 = require(\"./webgl/gather_gpu\");\nvar gpgpu_context_1 = require(\"./webgl/gpgpu_context\");\nvar gpgpu_math = require(\"./webgl/gpgpu_math\");\nvar gpgpu_util = require(\"./webgl/gpgpu_util\");\nvar lrn_gpu_1 = require(\"./webgl/lrn_gpu\");\nvar lrn_grad_gpu_1 = require(\"./webgl/lrn_grad_gpu\");\nvar max_pool_backprop_gpu_1 = require(\"./webgl/max_pool_backprop_gpu\");\nvar mulmat_gpu_1 = require(\"./webgl/mulmat_gpu\");\nvar multinomial_gpu_1 = require(\"./webgl/multinomial_gpu\");\nvar onehot_gpu_1 = require(\"./webgl/onehot_gpu\");\nvar pad_gpu_1 = require(\"./webgl/pad_gpu\");\nvar pool_gpu_1 = require(\"./webgl/pool_gpu\");\nvar reduce_gpu_1 = require(\"./webgl/reduce_gpu\");\nvar resize_bilinear_backprop_gpu_1 = require(\"./webgl/resize_bilinear_backprop_gpu\");\nvar resize_bilinear_gpu_1 = require(\"./webgl/resize_bilinear_gpu\");\nvar resize_nearest_neighbor_backprop_gpu_1 = require(\"./webgl/resize_nearest_neighbor_backprop_gpu\");\nvar resize_nearest_neighbor_gpu_1 = require(\"./webgl/resize_nearest_neighbor_gpu\");\nvar reverse_gpu_1 = require(\"./webgl/reverse_gpu\");\nvar segment_gpu_1 = require(\"./webgl/segment_gpu\");\nvar select_gpu_1 = require(\"./webgl/select_gpu\");\nvar slice_gpu_1 = require(\"./webgl/slice_gpu\");\nvar strided_slice_gpu_1 = require(\"./webgl/strided_slice_gpu\");\nvar tex_util_1 = require(\"./webgl/tex_util\");\nvar texture_manager_1 = require(\"./webgl/texture_manager\");\nvar tile_gpu_1 = require(\"./webgl/tile_gpu\");\nvar transpose_gpu_1 = require(\"./webgl/transpose_gpu\");\nvar unary_op = require(\"./webgl/unaryop_gpu\");\nvar unaryop_gpu_1 = require(\"./webgl/unaryop_gpu\");\nvar webgl_util = require(\"./webgl/webgl_util\");\nvar where_impl_1 = require(\"./where_impl\");\nvar BEFORE_PAGING_CONSTANT = 300;\nexports.SIZE_UPLOAD_UNIFORM = 32;\nvar MathBackendWebGL = (function () {\n    function MathBackendWebGL(gpgpu, delayedStorage) {\n        if (delayedStorage === void 0) { delayedStorage = true; }\n        this.gpgpu = gpgpu;\n        this.delayedStorage = delayedStorage;\n        this.texData = new WeakMap();\n        this.pendingRead = new WeakMap();\n        this.pendingDisposal = new WeakSet();\n        this.lruDataGPU = [];\n        this.numBytesInGPU = 0;\n        this.uploadWaitMs = 0;\n        this.downloadWaitMs = 0;\n        this.binaryCache = {};\n        this.disposed = false;\n        if (environment_1.ENV.get('WEBGL_VERSION') < 1) {\n            throw new Error('WebGL is not supported on this device');\n        }\n        if (environment_1.ENV.get('IS_BROWSER')) {\n            this.canvas = document.createElement('canvas');\n        }\n        if (gpgpu == null) {\n            this.gpgpu = new gpgpu_context_1.GPGPUContext(gpgpu_util.createWebGLContext(this.canvas));\n            this.gpgpuCreatedLocally = true;\n        }\n        else {\n            this.gpgpuCreatedLocally = false;\n        }\n        this.NUM_BYTES_BEFORE_PAGING =\n            (window.screen.height * window.screen.width * window.devicePixelRatio) *\n                BEFORE_PAGING_CONSTANT;\n        this.textureManager = new texture_manager_1.TextureManager(this.gpgpu);\n    }\n    MathBackendWebGL.prototype.register = function (dataId, shape, dtype) {\n        if (this.texData.has(dataId)) {\n            throw new Error('Data buffer is already registered');\n        }\n        this.texData.set(dataId, {\n            shape: shape,\n            dtype: dtype,\n            values: null,\n            texture: null,\n            texShape: null,\n            usage: tex_util_1.TextureUsage.RENDER\n        });\n    };\n    MathBackendWebGL.prototype.fromPixels = function (pixels, numChannels) {\n        if (pixels == null) {\n            throw new Error('pixels passed to tf.fromPixels() can not be null');\n        }\n        var texShape = [pixels.height, pixels.width];\n        var outShape = [pixels.height, pixels.width, numChannels];\n        if (!(pixels instanceof HTMLVideoElement) &&\n            !(pixels instanceof HTMLImageElement) &&\n            !(pixels instanceof HTMLCanvasElement) &&\n            !(pixels instanceof ImageData)) {\n            throw new Error('pixels passed to tf.fromPixels() must be either an ' +\n                \"HTMLVideoElement, HTMLImageElement, HTMLCanvasElement or \" +\n                (\"ImageData, but was \" + pixels.constructor.name));\n        }\n        if (pixels instanceof HTMLVideoElement) {\n            if (this.fromPixelsCanvas == null) {\n                if (!environment_1.ENV.get('IS_BROWSER')) {\n                    throw new Error('Can\\'t read pixels from HTMLImageElement outside the browser.');\n                }\n                if (document.readyState !== 'complete') {\n                    throw new Error('The DOM is not ready yet. Please call tf.fromPixels() ' +\n                        'once the DOM is ready. One way to do that is to add an event ' +\n                        'listener for `DOMContentLoaded` on the document object');\n                }\n                this.fromPixelsCanvas = document.createElement('canvas');\n            }\n            this.fromPixelsCanvas.width = pixels.width;\n            this.fromPixelsCanvas.height = pixels.height;\n            this.fromPixelsCanvas.getContext('2d').drawImage(pixels, 0, 0, pixels.width, pixels.height);\n            pixels = this.fromPixelsCanvas;\n        }\n        var tempPixelArray = tensor_1.Tensor.make(texShape, {}, 'int32');\n        this.texData.get(tempPixelArray.dataId).usage = tex_util_1.TextureUsage.PIXELS;\n        this.gpgpu.uploadPixelDataToTexture(this.getTexture(tempPixelArray.dataId), pixels);\n        var program = new from_pixels_gpu_1.FromPixelsProgram(outShape);\n        var res = this.compileAndRun(program, [tempPixelArray]);\n        tempPixelArray.dispose();\n        return res;\n    };\n    MathBackendWebGL.prototype.write = function (dataId, values) {\n        if (values == null) {\n            throw new Error('MathBackendWebGL.write(): values can not be null');\n        }\n        this.throwIfNoData(dataId);\n        var texData = this.texData.get(dataId);\n        var texture = texData.texture, texShape = texData.texShape, usage = texData.usage;\n        if (texture != null) {\n            this.releaseTexture(dataId, texture, texShape, usage);\n            texData.texture = null;\n            texData.texShape = null;\n        }\n        texData.usage = tex_util_1.TextureUsage.UPLOAD;\n        texData.values = values;\n        if (!this.delayedStorage) {\n            this.uploadToGPU(dataId);\n        }\n    };\n    MathBackendWebGL.prototype.readSync = function (dataId) {\n        this.throwIfNoData(dataId);\n        var texData = this.texData.get(dataId);\n        var shape = texData.shape, texture = texData.texture, values = texData.values, texShape = texData.texShape, dtype = texData.dtype;\n        if (values != null) {\n            this.cacheOnCPU(dataId);\n            return values;\n        }\n        var shouldTimeProgram = this.activeTimers != null;\n        var start;\n        if (shouldTimeProgram) {\n            start = performance.now();\n        }\n        var float32Values = this.getValuesFromTexture(texture, dataId, dtype, texShape, shape);\n        if (shouldTimeProgram) {\n            this.downloadWaitMs += performance.now() - start;\n        }\n        this.cacheOnCPU(dataId, float32Values);\n        return texData.values;\n    };\n    MathBackendWebGL.prototype.read = function (dataId) {\n        return __awaiter(this, void 0, void 0, function () {\n            var subscribers_1, texData, shape, texture, values, texShape, dtype, bufferOrTexture, vals, subscribers;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (this.pendingRead.has(dataId)) {\n                            subscribers_1 = this.pendingRead.get(dataId);\n                            return [2, new Promise(function (resolve) { return subscribers_1.push(resolve); })];\n                        }\n                        this.throwIfNoData(dataId);\n                        texData = this.texData.get(dataId);\n                        shape = texData.shape, texture = texData.texture, values = texData.values, texShape = texData.texShape, dtype = texData.dtype;\n                        if (values != null) {\n                            this.cacheOnCPU(dataId);\n                            return [2, values];\n                        }\n                        this.pendingRead.set(dataId, []);\n                        if (!environment_1.ENV.get('WEBGL_DOWNLOAD_FLOAT_ENABLED') &&\n                            environment_1.ENV.get('WEBGL_VERSION') === 2) {\n                            throw new Error(\"tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and \" +\n                                \"WEBGL_VERSION=2 not yet supported.\");\n                        }\n                        bufferOrTexture = this.gpgpu.maybeCreateBufferFromTexture(texture, texShape[0], texShape[1]);\n                        return [4, this.gpgpu.createAndWaitForFence()];\n                    case 1:\n                        _a.sent();\n                        if (bufferOrTexture instanceof WebGLTexture) {\n                            vals = this.getValuesFromTexture(texture, dataId, dtype, texShape, shape);\n                        }\n                        else {\n                            vals = this.gpgpu.downloadFloat32MatrixFromBuffer(bufferOrTexture, texShape[0], texShape[1]);\n                        }\n                        this.cacheOnCPU(dataId, vals);\n                        subscribers = this.pendingRead.get(dataId);\n                        this.pendingRead.delete(dataId);\n                        subscribers.forEach(function (resolve) { return resolve(vals); });\n                        if (this.pendingDisposal.has(dataId)) {\n                            this.pendingDisposal.delete(dataId);\n                            this.disposeData(dataId);\n                        }\n                        return [2, vals];\n                }\n            });\n        });\n    };\n    MathBackendWebGL.prototype.getValuesFromTexture = function (texture, dataId, dtype, texShape, shape) {\n        if (environment_1.ENV.get('WEBGL_DOWNLOAD_FLOAT_ENABLED')) {\n            return this.gpgpu.downloadFloat32MatrixFromOutputTexture(texture, texShape[0], texShape[1]);\n        }\n        var tmpTarget = tensor_1.Tensor.make(shape, {});\n        this.texData.get(tmpTarget.dataId).usage = tex_util_1.TextureUsage.DOWNLOAD;\n        var tmpInput = tensor_1.Tensor.make(shape, { dataId: dataId }, dtype);\n        var program = new encode_float_gpu_1.EncodeFloatProgram(shape);\n        var pageToCpu = false;\n        this.compileAndRun(program, [tmpInput], tmpTarget, null, pageToCpu);\n        var tmpData = this.texData.get(tmpTarget.dataId);\n        var vals = this.gpgpu.downloadByteEncodedFloatMatrixFromOutputTexture(tmpData.texture, tmpData.texShape[0], tmpData.texShape[1]);\n        tmpInput.dispose();\n        tmpTarget.dispose();\n        return vals;\n    };\n    MathBackendWebGL.prototype.time = function (f) {\n        return __awaiter(this, void 0, void 0, function () {\n            var oldActiveTimers, newActiveTimers, outerMostTime, flattenedActiveTimers, kernelMs, res;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        oldActiveTimers = this.activeTimers;\n                        newActiveTimers = [];\n                        outerMostTime = false;\n                        if (this.programTimersStack == null) {\n                            this.programTimersStack = newActiveTimers;\n                            outerMostTime = true;\n                        }\n                        else {\n                            this.activeTimers.push(newActiveTimers);\n                        }\n                        this.activeTimers = newActiveTimers;\n                        f();\n                        flattenedActiveTimers = util.flatten(this.activeTimers);\n                        this.activeTimers = oldActiveTimers;\n                        if (outerMostTime) {\n                            this.programTimersStack = null;\n                        }\n                        return [4, Promise.all(flattenedActiveTimers).then(function (results) {\n                                var sum = 0;\n                                results.forEach(function (result) { return sum += result; });\n                                return sum;\n                            })];\n                    case 1:\n                        kernelMs = _a.sent();\n                        res = {\n                            uploadWaitMs: this.uploadWaitMs,\n                            downloadWaitMs: this.downloadWaitMs,\n                            kernelMs: kernelMs,\n                            wallMs: null\n                        };\n                        this.uploadWaitMs = 0;\n                        this.downloadWaitMs = 0;\n                        return [2, res];\n                }\n            });\n        });\n    };\n    MathBackendWebGL.prototype.memory = function () {\n        return { unreliable: false, numBytesInGPU: this.numBytesInGPU };\n    };\n    MathBackendWebGL.prototype.startTimer = function () {\n        if (environment_1.ENV.get('WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION') > 0) {\n            return this.gpgpu.beginQuery();\n        }\n        return { startMs: performance.now(), endMs: null };\n    };\n    MathBackendWebGL.prototype.endTimer = function (query) {\n        if (environment_1.ENV.get('WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION') > 0) {\n            this.gpgpu.endQuery();\n            return query;\n        }\n        query.endMs = performance.now();\n        return query;\n    };\n    MathBackendWebGL.prototype.getQueryTime = function (query) {\n        return __awaiter(this, void 0, void 0, function () {\n            var timerQuery;\n            return __generator(this, function (_a) {\n                if (environment_1.ENV.get('WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION') > 0) {\n                    return [2, this.gpgpu.waitForQueryAndGetTime(query)];\n                }\n                timerQuery = query;\n                return [2, timerQuery.endMs - timerQuery.startMs];\n            });\n        });\n    };\n    MathBackendWebGL.prototype.disposeData = function (dataId) {\n        if (this.pendingDisposal.has(dataId)) {\n            return;\n        }\n        if (this.pendingRead.has(dataId)) {\n            this.pendingDisposal.add(dataId);\n            return;\n        }\n        if (this.texData.has(dataId)) {\n            var _a = this.texData.get(dataId), texture = _a.texture, texShape = _a.texShape, usage = _a.usage;\n            if (texture != null) {\n                this.releaseTexture(dataId, texture, texShape, usage);\n            }\n            this.texData.delete(dataId);\n        }\n    };\n    MathBackendWebGL.prototype.getTexture = function (dataId) {\n        this.uploadToGPU(dataId);\n        return this.texData.get(dataId).texture;\n    };\n    MathBackendWebGL.prototype.getGPGPUContext = function () {\n        return this.gpgpu;\n    };\n    MathBackendWebGL.prototype.getCanvas = function () {\n        return this.canvas;\n    };\n    MathBackendWebGL.prototype.slice = function (x, begin, size) {\n        var program = new slice_gpu_1.SliceProgram(size);\n        var customSetup = program.getCustomSetupFunc(begin);\n        return this.compileAndRun(program, [x], null, customSetup);\n    };\n    MathBackendWebGL.prototype.stridedSlice = function (x, begin, end, strides, beginMask, endMask) {\n        var _a = slice_util_1.getStridedSlicedInfo(x.shape, begin, end, strides, beginMask, endMask), beginIndex = _a[0], size = _a[1];\n        if (size.some(function (axis) { return axis === 0; })) {\n            return tensor_ops_1.tensor([], size);\n        }\n        var program = new strided_slice_gpu_1.StridedSliceProgram(beginIndex, strides, size);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.reverse = function (x, axis) {\n        var program = new reverse_gpu_1.ReverseProgram(x.shape, axis);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.concat = function (a, b) {\n        var program = new concat_gpu_1.ConcatProgram(a.shape, b.shape);\n        return this.compileAndRun(program, [a, b]);\n    };\n    MathBackendWebGL.prototype.neg = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.NEG);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.matMul = function (a, b, transposeA, transposeB) {\n        var program = new mulmat_gpu_1.MatMulProgram(a.shape, b.shape, transposeA, transposeB);\n        return this.compileAndRun(program, [a, b]);\n    };\n    MathBackendWebGL.prototype.multiply = function (a, b) {\n        var program = new binaryop_gpu_1.BinaryOpProgram(binaryop_gpu.MUL, a.shape, b.shape);\n        var output = this.makeOutputArray(program.outputShape, types_1.upcastType(a.dtype, b.dtype));\n        return this.compileAndRun(program, [a, b], output);\n    };\n    MathBackendWebGL.prototype.batchNormalization = function (x, mean, variance, varianceEpsilon, scale, offset) {\n        var inputs = [x, mean, variance];\n        var offsetShape = null;\n        if (offset != null) {\n            offsetShape = offset.shape;\n            inputs.push(offset);\n        }\n        var scaleShape = null;\n        if (scale != null) {\n            scaleShape = scale.shape;\n            inputs.push(scale);\n        }\n        var program = new batchnorm_gpu_1.BatchNormProgram(x.shape, mean.shape, variance.shape, offsetShape, scaleShape, varianceEpsilon);\n        return this.compileAndRun(program, inputs);\n    };\n    MathBackendWebGL.prototype.localResponseNormalization4D = function (x, radius, bias, alpha, beta) {\n        var program = new lrn_gpu_1.LRNProgram(x.shape, radius, bias, alpha, beta);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.LRNGrad = function (dy, inputImage, outputImage, depthRadius, bias, alpha, beta) {\n        var program = new lrn_grad_gpu_1.LRNGradProgram(inputImage.shape, depthRadius, bias, alpha, beta);\n        return this.compileAndRun(program, [inputImage, outputImage, dy]);\n    };\n    MathBackendWebGL.prototype.tile = function (x, reps) {\n        var program = new tile_gpu_1.TileProgram(x.shape, reps);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.pad = function (x, paddings, constantValue) {\n        var program = new pad_gpu_1.PadProgram(x.shape, paddings, constantValue);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.transpose = function (x, perm) {\n        var program = new transpose_gpu_1.TransposeProgram(x.shape, perm);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.gather = function (x, indices, axis) {\n        var program = new gather_gpu_1.GatherProgram(x.shape, indices.size, axis);\n        return this.compileAndRun(program, [x, indices]);\n    };\n    MathBackendWebGL.prototype.batchToSpaceND = function (x, blockShape, crops) {\n        util.assert(x.rank <= 4, 'batchToSpaceND for rank > 4 with a WebGL backend not implemented yet');\n        var prod = blockShape.reduce(function (a, b) { return a * b; });\n        var reshaped = array_ops_util.getReshaped(x.shape, blockShape, prod);\n        var permuted = array_ops_util.getPermuted(reshaped.length, blockShape.length);\n        var reshapedPermuted = array_ops_util.getReshapedPermuted(x.shape, blockShape, prod);\n        var sliceBeginCoords = array_ops_util.getSliceBeginCoords(crops, blockShape.length);\n        var sliceSize = array_ops_util.getSliceSize(reshapedPermuted, crops, blockShape.length);\n        return x.reshape(reshaped)\n            .transpose(permuted)\n            .reshape(reshapedPermuted)\n            .slice(sliceBeginCoords, sliceSize);\n    };\n    MathBackendWebGL.prototype.spaceToBatchND = function (x, blockShape, paddings) {\n        util.assert(x.rank <= 4, 'spaceToBatchND for rank > 4 with a WebGL backend not implemented yet');\n        var prod = blockShape.reduce(function (a, b) { return a * b; });\n        var completePaddings = [[0, 0]];\n        completePaddings.push.apply(completePaddings, paddings);\n        for (var i = 1 + blockShape.length; i < x.shape.length; ++i) {\n            completePaddings.push([0, 0]);\n        }\n        var paddedX = x.pad(completePaddings);\n        var reshapedPaddedShape = array_ops_util.getReshaped(paddedX.shape, blockShape, prod, false);\n        var permutedReshapedPaddedPermutation = array_ops_util.getPermuted(reshapedPaddedShape.length, blockShape.length, false);\n        var flattenShape = array_ops_util.getReshapedPermuted(paddedX.shape, blockShape, prod, false);\n        return paddedX.reshape(reshapedPaddedShape)\n            .transpose(permutedReshapedPaddedPermutation)\n            .reshape(flattenShape);\n    };\n    MathBackendWebGL.prototype.reduce = function (x, reduceType, dtype) {\n        var batchSize = x.shape[0];\n        var inSize = x.shape[1];\n        var windowSize = reduce_util.computeOptimalWindowSize(inSize);\n        var reduceInfo = { windowSize: windowSize, inSize: inSize, batchSize: batchSize };\n        var program = new reduce_gpu_1.ReduceProgram(reduceInfo, reduceType);\n        var _a = program.outputShape, rows = _a[0], cols = _a[1];\n        var output = this.makeOutputArray([rows, cols], dtype);\n        this.compileAndRun(program, [x], output);\n        if (output.shape[1] === 1) {\n            return output;\n        }\n        return this.reduce(output, reduceType, dtype);\n    };\n    MathBackendWebGL.prototype.argReduce = function (x, reduceType, bestIndicesA) {\n        if (bestIndicesA === void 0) { bestIndicesA = null; }\n        var batchSize = x.shape[0];\n        var inSize = x.shape[1];\n        if (bestIndicesA != null) {\n            batchSize = bestIndicesA.shape[0];\n            inSize = bestIndicesA.shape[1];\n        }\n        var windowSize = reduce_util.computeOptimalWindowSize(inSize);\n        var reduceInfo = { windowSize: windowSize, inSize: inSize, batchSize: batchSize };\n        var program = new argminmax_gpu_1.ArgMinMaxProgram(reduceInfo, reduceType, bestIndicesA == null);\n        var _a = program.outputShape, rows = _a[0], cols = _a[1];\n        var output = this.makeOutputArray([rows, cols], 'int32');\n        var inputs = [x];\n        if (bestIndicesA != null) {\n            inputs.push(bestIndicesA);\n        }\n        this.compileAndRun(program, inputs, output);\n        if (output.shape[1] === 1) {\n            return output;\n        }\n        return this.argReduce(x, reduceType, output);\n    };\n    MathBackendWebGL.prototype.sum = function (x, axes) {\n        axis_util.assertAxesAreInnerMostDims('sum', axes, x.rank);\n        var _a = axis_util.computeOutAndReduceShapes(x.shape, axes), outShape = _a[0], reduceShape = _a[1];\n        var inSize = util.sizeFromShape(reduceShape);\n        var a2D = x.as2D(-1, inSize);\n        var outputDType = types_1.sumOutType(x.dtype);\n        return this.reduce(a2D, 'sum', outputDType).reshape(outShape);\n    };\n    MathBackendWebGL.prototype.unsortedSegmentSum = function (x, segmentIds, numSegments) {\n        var axis = 0;\n        var permutation = axis_util.getAxesPermutation([axis], x.rank);\n        var permutedX = x;\n        if (permutation != null) {\n            permutedX = x.transpose(permutation);\n            axis = axis_util.getInnerMostAxes(1, x.rank)[0];\n        }\n        var outShape = segment_util.computeOutShape(permutedX.shape, axis, numSegments);\n        var inSize = util.sizeFromShape([permutedX.shape[axis]]);\n        var a2D = permutedX.as2D(-1, inSize);\n        var outputDType = types_1.sumOutType(x.dtype);\n        var result = this.segOpCompute(a2D, 'unsortedSegmentSum', segmentIds, outputDType, numSegments)\n            .reshape(outShape);\n        if (permutation != null) {\n            result = result.transpose(axis_util.getUndoAxesPermutation(permutation));\n        }\n        return result;\n    };\n    MathBackendWebGL.prototype.segOpCompute = function (x, segOpType, segmentIds, dtype, numSegments) {\n        var batchSize = x.shape[0];\n        var inSize = x.shape[1];\n        var windowSize = segment_util.segOpComputeOptimalWindowSize(inSize, numSegments);\n        var segOpInfo = { windowSize: windowSize, inSize: inSize, batchSize: batchSize, numSegments: numSegments };\n        var program = new segment_gpu_1.SegmentOpProgram(segOpInfo, segOpType);\n        var _a = program.outputShape, rows = _a[0], cols = _a[1];\n        var output = this.makeOutputArray([rows, cols], dtype);\n        this.compileAndRun(program, [x, segmentIds], output);\n        if (output.shape[1] === numSegments) {\n            return output;\n        }\n        segmentIds = tensor_ops_1.range(0, numSegments).tile([inSize / windowSize]);\n        return this.segOpCompute(output, segOpType, segmentIds, dtype, numSegments);\n    };\n    MathBackendWebGL.prototype.argMin = function (x, axis) {\n        var axes = [axis];\n        axis_util.assertAxesAreInnerMostDims('argMin', axes, x.rank);\n        var _a = axis_util.computeOutAndReduceShapes(x.shape, axes), outShape = _a[0], reduceShape = _a[1];\n        var inSize = util.sizeFromShape(reduceShape);\n        var a2D = x.as2D(-1, inSize);\n        return this.argReduce(a2D, 'min').reshape(outShape);\n    };\n    MathBackendWebGL.prototype.argMax = function (x, axis) {\n        var axes = [axis];\n        axis_util.assertAxesAreInnerMostDims('argMax', axes, x.rank);\n        var _a = axis_util.computeOutAndReduceShapes(x.shape, axes), outShape = _a[0], reduceShape = _a[1];\n        var inSize = util.sizeFromShape(reduceShape);\n        var a2D = x.as2D(-1, inSize);\n        return this.argReduce(a2D, 'max').reshape(outShape);\n    };\n    MathBackendWebGL.prototype.cumsum = function (x, axis, exclusive, reverse) {\n        if (axis !== x.rank - 1) {\n            throw new Error(\"WebGL cumsum shader expects an inner-most axis=\" + (x.rank - 1) + \" \" +\n                (\"but got axis=\" + axis));\n        }\n        var program = new cumsum_gpu_1.CumSumProgram(x.shape, exclusive, reverse);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.equal = function (a, b) {\n        var program = new binaryop_gpu_1.BinaryOpProgram(binaryop_gpu.EQUAL, a.shape, b.shape);\n        var output = this.makeOutputArray(program.outputShape, 'bool');\n        return this.compileAndRun(program, [a, b], output);\n    };\n    MathBackendWebGL.prototype.notEqual = function (a, b) {\n        var program = new binaryop_gpu_1.BinaryOpProgram(binaryop_gpu.NOT_EQUAL, a.shape, b.shape);\n        var output = this.makeOutputArray(program.outputShape, 'bool');\n        return this.compileAndRun(program, [a, b], output);\n    };\n    MathBackendWebGL.prototype.less = function (a, b) {\n        var program = new binaryop_gpu_1.BinaryOpProgram(binaryop_gpu.LESS, a.shape, b.shape);\n        var output = this.makeOutputArray(program.outputShape, 'bool');\n        return this.compileAndRun(program, [a, b], output);\n    };\n    MathBackendWebGL.prototype.lessEqual = function (a, b) {\n        var program = new binaryop_gpu_1.BinaryOpProgram(binaryop_gpu.LESS_EQUAL, a.shape, b.shape);\n        var output = this.makeOutputArray(program.outputShape, 'bool');\n        return this.compileAndRun(program, [a, b], output);\n    };\n    MathBackendWebGL.prototype.greater = function (a, b) {\n        var program = new binaryop_gpu_1.BinaryOpProgram(binaryop_gpu.GREATER, a.shape, b.shape);\n        var output = this.makeOutputArray(program.outputShape, 'bool');\n        return this.compileAndRun(program, [a, b], output);\n    };\n    MathBackendWebGL.prototype.greaterEqual = function (a, b) {\n        var program = new binaryop_gpu_1.BinaryOpProgram(binaryop_gpu.GREATER_EQUAL, a.shape, b.shape);\n        var output = this.makeOutputArray(program.outputShape, 'bool');\n        return this.compileAndRun(program, [a, b], output);\n    };\n    MathBackendWebGL.prototype.logicalNot = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.LOGICAL_NOT);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.logicalAnd = function (a, b) {\n        var program = new binaryop_gpu_1.BinaryOpProgram(binaryop_gpu.LOGICAL_AND, a.shape, b.shape);\n        var output = this.makeOutputArray(program.outputShape, 'bool');\n        return this.compileAndRun(program, [a, b], output);\n    };\n    MathBackendWebGL.prototype.logicalOr = function (a, b) {\n        var program = new binaryop_gpu_1.BinaryOpProgram(binaryop_gpu.LOGICAL_OR, a.shape, b.shape);\n        var output = this.makeOutputArray(program.outputShape, 'bool');\n        return this.compileAndRun(program, [a, b], output);\n    };\n    MathBackendWebGL.prototype.select = function (condition, a, b) {\n        var program = new select_gpu_1.SelectProgram(condition.rank, a.shape, a.rank);\n        var output = this.makeOutputArray(program.outputShape, types_1.upcastType(a.dtype, b.dtype));\n        return this.compileAndRun(program, [condition, a, b], output);\n    };\n    MathBackendWebGL.prototype.where = function (condition) {\n        log_1.warn('tf.where() in webgl locks the UI thread. ' +\n            'Call tf.whereAsync() instead');\n        var condVals = condition.dataSync();\n        return where_impl_1.whereImpl(condition.shape, condVals);\n    };\n    MathBackendWebGL.prototype.topk = function (x, k, sorted) {\n        var xVals = x.dataSync();\n        return topk_impl_1.topkImpl(xVals, x.shape, x.dtype, k, sorted);\n    };\n    MathBackendWebGL.prototype.min = function (x, axes) {\n        axis_util.assertAxesAreInnerMostDims('min', axes, x.rank);\n        var _a = axis_util.computeOutAndReduceShapes(x.shape, axes), outShape = _a[0], reduceShape = _a[1];\n        var inSize = util.sizeFromShape(reduceShape);\n        var a2D = x.as2D(-1, inSize);\n        return this.reduce(a2D, 'min', a2D.dtype).reshape(outShape);\n    };\n    MathBackendWebGL.prototype.minimum = function (a, b) {\n        var program = new binaryop_gpu_1.BinaryOpProgram(binaryop_gpu.MIN, a.shape, b.shape);\n        return this.compileAndRun(program, [a, b]);\n    };\n    MathBackendWebGL.prototype.mod = function (a, b) {\n        var program = new binaryop_gpu_1.BinaryOpProgram(binaryop_gpu.MOD, a.shape, b.shape);\n        var customSetup = program.getCustomSetupFunc();\n        return this.compileAndRun(program, [a, b], null, customSetup);\n    };\n    MathBackendWebGL.prototype.max = function (x, axes) {\n        axis_util.assertAxesAreInnerMostDims('max', axes, x.rank);\n        var _a = axis_util.computeOutAndReduceShapes(x.shape, axes), outShape = _a[0], reduceShape = _a[1];\n        var inSize = util.sizeFromShape(reduceShape);\n        var a2D = x.as2D(-1, inSize);\n        return this.reduce(a2D, 'max', a2D.dtype).reshape(outShape);\n    };\n    MathBackendWebGL.prototype.maximum = function (a, b) {\n        var program = new binaryop_gpu_1.BinaryOpProgram(binaryop_gpu.MAX, a.shape, b.shape);\n        return this.compileAndRun(program, [a, b]);\n    };\n    MathBackendWebGL.prototype.all = function (x, axes) {\n        axis_util.assertAxesAreInnerMostDims('all', axes, x.rank);\n        var _a = axis_util.computeOutAndReduceShapes(x.shape, axes), outShape = _a[0], reduceShape = _a[1];\n        var inSize = util.sizeFromShape(reduceShape);\n        var a2D = x.as2D(-1, inSize);\n        return this.reduce(a2D, 'all', a2D.dtype).reshape(outShape);\n    };\n    MathBackendWebGL.prototype.any = function (x, axes) {\n        axis_util.assertAxesAreInnerMostDims('any', axes, x.rank);\n        var _a = axis_util.computeOutAndReduceShapes(x.shape, axes), outShape = _a[0], reduceShape = _a[1];\n        var inSize = util.sizeFromShape(reduceShape);\n        var a2D = x.as2D(-1, inSize);\n        return this.reduce(a2D, 'any', a2D.dtype).reshape(outShape);\n    };\n    MathBackendWebGL.prototype.squaredDifference = function (a, b) {\n        var program = new binaryop_gpu_1.BinaryOpProgram(binaryop_gpu.SQUARED_DIFFERENCE, a.shape, b.shape);\n        return this.compileAndRun(program, [a, b]);\n    };\n    MathBackendWebGL.prototype.realDivide = function (a, b) {\n        var op = binaryop_gpu.DIV;\n        var outputDtype = 'float32';\n        var program = new binaryop_gpu_1.BinaryOpProgram(op, a.shape, b.shape);\n        var output = this.makeOutputArray(program.outputShape, outputDtype);\n        return this.compileAndRun(program, [a, b], output);\n    };\n    MathBackendWebGL.prototype.floorDiv = function (a, b) {\n        var op = binaryop_gpu.INT_DIV;\n        var outputDtype = 'int32';\n        var program = new binaryop_gpu_1.BinaryOpProgram(op, a.shape, b.shape);\n        var output = this.makeOutputArray(program.outputShape, outputDtype);\n        return this.compileAndRun(program, [a, b], output);\n    };\n    MathBackendWebGL.prototype.add = function (a, b) {\n        var program = new binaryop_gpu_1.BinaryOpProgram(binaryop_gpu.ADD, a.shape, b.shape);\n        var output = this.makeOutputArray(program.outputShape, types_1.upcastType(a.dtype, b.dtype));\n        return this.compileAndRun(program, [a, b], output);\n    };\n    MathBackendWebGL.prototype.addN = function (tensors) {\n        var res = tensors[0];\n        for (var i = 1; i < tensors.length; i++) {\n            res = this.add(res, tensors[i]);\n        }\n        return res;\n    };\n    MathBackendWebGL.prototype.subtract = function (a, b) {\n        var program = new binaryop_gpu_1.BinaryOpProgram(binaryop_gpu.SUB, a.shape, b.shape);\n        var output = this.makeOutputArray(program.outputShape, types_1.upcastType(a.dtype, b.dtype));\n        return this.compileAndRun(program, [a, b], output);\n    };\n    MathBackendWebGL.prototype.pow = function (a, b) {\n        var program = new binaryop_gpu_1.BinaryOpProgram(binaryop_gpu.POW, a.shape, b.shape);\n        var customSetup = program.getCustomSetupFunc();\n        var output = this.makeOutputArray(program.outputShape, types_1.upcastType(a.dtype, b.dtype));\n        return this.compileAndRun(program, [a, b], output, customSetup);\n    };\n    MathBackendWebGL.prototype.ceil = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.CEIL);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.floor = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.FLOOR);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.sign = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.SIGN);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.round = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.ROUND);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.exp = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.EXP);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.expm1 = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.EXPM1);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.log = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.LOG);\n        var customSetup = program.getCustomSetupFunc();\n        return this.compileAndRun(program, [x], null, customSetup);\n    };\n    MathBackendWebGL.prototype.log1p = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.LOG1P);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.sqrt = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.SQRT);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.rsqrt = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.RSQRT);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.square = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.SQUARE);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.reciprocal = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.RECIPROCAL);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.relu = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.RELU);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.elu = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.ELU);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.eluDer = function (dy, y) {\n        var program = new binaryop_gpu_1.BinaryOpProgram(binaryop_gpu.ELU_DER, dy.shape, y.shape);\n        return this.compileAndRun(program, [dy, y]);\n    };\n    MathBackendWebGL.prototype.selu = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.SELU);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.int = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.TO_INT);\n        var output = this.makeOutputArray(program.outputShape, 'int32');\n        return this.compileAndRun(program, [x], output);\n    };\n    MathBackendWebGL.prototype.clip = function (x, min, max) {\n        var program = new clip_gpu_1.ClipProgram(x.shape, min, max);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.abs = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.ABS);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.sigmoid = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.SIGMOID);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.softplus = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.SOFTPLUS);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.sin = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.SIN);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.cos = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.COS);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.tan = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.TAN);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.asin = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.ASIN);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.acos = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.ACOS);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.atan = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.ATAN);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.atan2 = function (a, b) {\n        var program = new binaryop_gpu_1.BinaryOpProgram(binaryop_gpu.ATAN2, a.shape, b.shape);\n        return this.compileAndRun(program, [a, b]);\n    };\n    MathBackendWebGL.prototype.sinh = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.SINH);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.cosh = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.COSH);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.tanh = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.TANH);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.asinh = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.ASINH);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.acosh = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.ACOSH);\n        var customSetup = program.getCustomSetupFunc();\n        return this.compileAndRun(program, [x], null, customSetup);\n    };\n    MathBackendWebGL.prototype.atanh = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.ATANH);\n        var customSetup = program.getCustomSetupFunc();\n        return this.compileAndRun(program, [x], null, customSetup);\n    };\n    MathBackendWebGL.prototype.erf = function (x) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.ERF);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.step = function (x, alpha) {\n        var program = new unaryop_gpu_1.UnaryOpProgram(x.shape, unary_op.STEP(alpha));\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.conv2d = function (x, filter, convInfo) {\n        var program = new conv_gpu_1.Conv2DProgram(convInfo);\n        return this.compileAndRun(program, [x, filter]);\n    };\n    MathBackendWebGL.prototype.conv2dDerInput = function (dy, filter, convInfo) {\n        var program = new conv_backprop_gpu_1.Conv2DDerInputProgram(convInfo);\n        return this.compileAndRun(program, [dy, filter]);\n    };\n    MathBackendWebGL.prototype.conv2dDerFilter = function (x, dy, convInfo) {\n        var program = new conv_backprop_gpu_1.Conv2DDerFilterProgram(convInfo);\n        return this.compileAndRun(program, [x, dy]);\n    };\n    MathBackendWebGL.prototype.depthwiseConv2D = function (x, filter, convInfo) {\n        var program = new conv_gpu_depthwise_1.DepthwiseConv2DProgram(convInfo);\n        return this.compileAndRun(program, [x, filter]);\n    };\n    MathBackendWebGL.prototype.depthwiseConv2DDerInput = function (dy, filter, convInfo) {\n        var program = new conv_backprop_gpu_depthwise_1.DepthwiseConv2DDerInputProgram(convInfo);\n        return this.compileAndRun(program, [dy, filter]);\n    };\n    MathBackendWebGL.prototype.depthwiseConv2DDerFilter = function (x, dy, convInfo) {\n        var program = new conv_backprop_gpu_depthwise_1.DepthwiseConv2DDerFilterProgram(convInfo);\n        return this.compileAndRun(program, [x, dy]);\n    };\n    MathBackendWebGL.prototype.maxPool = function (x, convInfo) {\n        var program = new pool_gpu_1.Pool2DProgram(convInfo, 'max', false);\n        var output = this.makeOutputArray(program.outputShape, x.dtype);\n        return this.compileAndRun(program, [x], output);\n    };\n    MathBackendWebGL.prototype.avgPool = function (x, convInfo) {\n        var program = new pool_gpu_1.Pool2DProgram(convInfo, 'avg', false);\n        var output = this.makeOutputArray(program.outputShape, 'float32');\n        return this.compileAndRun(program, [x], output);\n    };\n    MathBackendWebGL.prototype.maxPoolBackprop = function (dy, x, y, convInfo) {\n        var getPositions = true;\n        var maxPoolPositionsProgram = new pool_gpu_1.Pool2DProgram(convInfo, 'max', getPositions);\n        var maxPoolPositions = this.compileAndRun(maxPoolPositionsProgram, [x]);\n        var maxPoolBackPropProgram = new max_pool_backprop_gpu_1.MaxPool2DBackpropProgram(convInfo);\n        var output = this.makeOutputArray(maxPoolBackPropProgram.outputShape, x.dtype);\n        var result = this.compileAndRun(maxPoolBackPropProgram, [dy, maxPoolPositions], output);\n        maxPoolPositions.dispose();\n        return result;\n    };\n    MathBackendWebGL.prototype.avgPoolBackprop = function (dy, x, convInfo) {\n        var avgPoolBackpropProgram = new avg_pool_backprop_gpu_1.AvgPool2DBackpropProgram(convInfo);\n        var output = this.makeOutputArray(avgPoolBackpropProgram.outputShape, x.dtype);\n        return this.compileAndRun(avgPoolBackpropProgram, [dy], output);\n    };\n    MathBackendWebGL.prototype.cast = function (x, dtype) {\n        return backend_util.castTensor(x, dtype, this);\n    };\n    MathBackendWebGL.prototype.reshape = function (x, shape) {\n        return backend_util.reshapeTensor(x, shape);\n    };\n    MathBackendWebGL.prototype.resizeBilinear = function (x, newHeight, newWidth, alignCorners) {\n        var program = new resize_bilinear_gpu_1.ResizeBilinearProgram(x.shape, newHeight, newWidth, alignCorners);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.resizeBilinearBackprop = function (dy, x, alignCorners) {\n        var program = new resize_bilinear_backprop_gpu_1.ResizeBilinearBackpropProgram(dy, x, alignCorners);\n        return this.compileAndRun(program, [dy]);\n    };\n    MathBackendWebGL.prototype.resizeNearestNeighbor = function (x, newHeight, newWidth, alignCorners) {\n        var program = new resize_nearest_neighbor_gpu_1.ResizeNearestNeighborProgram(x.shape, newHeight, newWidth, alignCorners);\n        return this.compileAndRun(program, [x]);\n    };\n    MathBackendWebGL.prototype.resizeNearestNeighborBackprop = function (dy, x, alignCorners) {\n        var program = new resize_nearest_neighbor_backprop_gpu_1.ResizeNearestNeigborBackpropProgram(dy, x, alignCorners);\n        return this.compileAndRun(program, [dy]);\n    };\n    MathBackendWebGL.prototype.multinomial = function (logits, normalized, numSamples, seed) {\n        var probs = normalized ? logits : softmax_1.softmax(logits);\n        var batchSize = probs.shape[0];\n        var numOutcomes = probs.shape[1];\n        var program = new multinomial_gpu_1.MultinomialProgram(batchSize, numOutcomes, numSamples);\n        var output = this.makeOutputArray(program.outputShape, 'int32');\n        var customSetup = program.getCustomSetupFunc(seed);\n        return this.compileAndRun(program, [probs], output, customSetup);\n    };\n    MathBackendWebGL.prototype.oneHot = function (indices, depth, onValue, offValue) {\n        var program = new onehot_gpu_1.OneHotProgram(indices.size, depth, onValue, offValue);\n        return this.compileAndRun(program, [indices]);\n    };\n    MathBackendWebGL.prototype.nonMaxSuppression = function (boxes, scores, maxOutputSize, iouThreshold, scoreThreshold) {\n        log_1.warn('tf.nonMaxSuppression() in webgl locks the UI thread. ' +\n            'Call tf.nonMaxSuppressionAsync() instead');\n        var boxesVals = boxes.dataSync();\n        var scoresVals = scores.dataSync();\n        return non_max_suppression_impl_1.nonMaxSuppressionImpl(boxesVals, scoresVals, maxOutputSize, iouThreshold, scoreThreshold);\n    };\n    MathBackendWebGL.prototype.makeOutputArray = function (shape, dtype) {\n        return tensor_1.Tensor.make(shape, {}, dtype);\n    };\n    MathBackendWebGL.prototype.compileAndRun = function (program, inputs, output, customSetup, pageToCpu) {\n        var _this = this;\n        if (pageToCpu === void 0) { pageToCpu = true; }\n        if (output == null) {\n            output = this.makeOutputArray(program.outputShape, inputs[0].dtype);\n        }\n        var inputsData = inputs.map(function (tensor) {\n            var texData = _this.texData.get(tensor.dataId);\n            if (texData.texture == null && tensor.size <= exports.SIZE_UPLOAD_UNIFORM) {\n                return { tensor: tensor, texData: null, isUniform: true };\n            }\n            _this.uploadToGPU(tensor.dataId);\n            return { tensor: tensor, texData: texData, isUniform: false };\n        });\n        this.uploadToGPU(output.dataId);\n        var outputData = {\n            tensor: output,\n            texData: this.texData.get(output.dataId),\n            isUniform: false\n        };\n        var key = gpgpu_math.makeShaderKey(program, inputsData, outputData);\n        var binary = this.getAndSaveBinary(key, function () {\n            return gpgpu_math.compileProgram(_this.gpgpu, program, inputsData, outputData);\n        });\n        var shouldTimeProgram = this.activeTimers != null;\n        var query;\n        if (shouldTimeProgram) {\n            query = this.startTimer();\n        }\n        gpgpu_math.runProgram(binary, inputsData, outputData, customSetup);\n        if (pageToCpu && this.numBytesInGPU > this.NUM_BYTES_BEFORE_PAGING) {\n            var numBytesToPage = this.numBytesInGPU - this.NUM_BYTES_BEFORE_PAGING;\n            while (numBytesToPage > 0 && this.lruDataGPU.length > 0) {\n                var dataId = this.lruDataGPU.shift();\n                var _a = this.texData.get(dataId), shape = _a.shape, dtype = _a.dtype;\n                numBytesToPage -= this.computeBytes(shape, dtype);\n                this.read(dataId);\n            }\n        }\n        if (shouldTimeProgram) {\n            query = this.endTimer(query);\n            this.activeTimers.push(this.getQueryTime(query));\n        }\n        return output;\n    };\n    MathBackendWebGL.prototype.getAndSaveBinary = function (key, getBinary) {\n        if (!(key in this.binaryCache)) {\n            this.binaryCache[key] = getBinary();\n        }\n        return this.binaryCache[key];\n    };\n    MathBackendWebGL.prototype.getTextureManager = function () {\n        return this.textureManager;\n    };\n    MathBackendWebGL.prototype.dispose = function () {\n        if (this.disposed) {\n            return;\n        }\n        for (var key in this.binaryCache) {\n            this.gpgpu.deleteProgram(this.binaryCache[key].webGLProgram);\n        }\n        this.textureManager.dispose();\n        this.canvas.remove();\n        if (this.fromPixelsCanvas != null) {\n            this.fromPixelsCanvas.remove();\n        }\n        if (this.gpgpuCreatedLocally) {\n            this.gpgpu.dispose();\n        }\n        this.disposed = true;\n    };\n    MathBackendWebGL.prototype.throwIfNoData = function (dataId) {\n        if (!this.texData.has(dataId)) {\n            throw new Error(\"WebGL backend: No data found for this tensor. \" +\n                \"Did you change your backend in the middle of the program? \" +\n                \"New backends can't use Tensors created with previous backends\");\n        }\n    };\n    MathBackendWebGL.prototype.uploadToGPU = function (dataId) {\n        this.throwIfNoData(dataId);\n        var texData = this.texData.get(dataId);\n        var shape = texData.shape, values = texData.values, texture = texData.texture, dtype = texData.dtype, usage = texData.usage;\n        if (texture != null) {\n            var index = this.lruDataGPU.indexOf(dataId);\n            if (index >= 0) {\n                this.lruDataGPU.splice(this.lruDataGPU.indexOf(dataId), 1);\n                this.lruDataGPU.push(dataId);\n            }\n            return;\n        }\n        var shouldTimeProgram = this.activeTimers != null;\n        var start;\n        if (shouldTimeProgram) {\n            start = performance.now();\n        }\n        var texShape = webgl_util.getTextureShapeFromLogicalShape(this.gpgpu.gl, shape);\n        texData.texShape = texShape;\n        var newTexture = this.acquireTexture(dataId, texShape, usage);\n        texData.texture = newTexture;\n        if (values != null) {\n            this.gpgpu.uploadMatrixToTexture(newTexture, texShape[0], texShape[1], typedArrayToFloat32(values, dtype));\n            texData.values = null;\n            if (shouldTimeProgram) {\n                this.uploadWaitMs += performance.now() - start;\n            }\n        }\n    };\n    MathBackendWebGL.prototype.cacheOnCPU = function (dataId, float32Values) {\n        var dontKeepCopyOnGPU = this.delayedStorage;\n        var texData = this.texData.get(dataId);\n        var texture = texData.texture, texShape = texData.texShape, dtype = texData.dtype, usage = texData.usage;\n        if (dontKeepCopyOnGPU && texture != null) {\n            this.releaseTexture(dataId, texture, texShape, usage);\n            texData.texture = null;\n            texData.texShape = null;\n        }\n        if (float32Values != null) {\n            texData.values = float32ToTypedArray(float32Values, dtype);\n        }\n    };\n    MathBackendWebGL.prototype.releaseTexture = function (dataId, texture, texShape, texType) {\n        var _a = this.texData.get(dataId), shape = _a.shape, dtype = _a.dtype;\n        var idx = this.lruDataGPU.indexOf(dataId);\n        if (idx >= 0) {\n            this.lruDataGPU.splice(idx, 1);\n        }\n        this.numBytesInGPU -= this.computeBytes(shape, dtype);\n        this.textureManager.releaseTexture(texture, texShape, texType);\n    };\n    MathBackendWebGL.prototype.acquireTexture = function (dataId, texShape, texType) {\n        var _a = this.texData.get(dataId), shape = _a.shape, dtype = _a.dtype;\n        this.lruDataGPU.push(dataId);\n        this.numBytesInGPU += this.computeBytes(shape, dtype);\n        return this.textureManager.acquireTexture(texShape, texType);\n    };\n    MathBackendWebGL.prototype.computeBytes = function (shape, dtype) {\n        return util.sizeFromShape(shape) * util.bytesPerElement(dtype);\n    };\n    return MathBackendWebGL;\n}());\nexports.MathBackendWebGL = MathBackendWebGL;\nif (environment_1.ENV.get('IS_BROWSER')) {\n    environment_1.ENV.registerBackend('webgl', function () { return new MathBackendWebGL(); }, 2, tensor_1.setTensorTracker);\n}\nfunction float32ToTypedArray(a, dtype) {\n    if (dtype === 'float32') {\n        return a;\n    }\n    else if (dtype === 'int32' || dtype === 'bool') {\n        var result = (dtype === 'int32') ? new Int32Array(a.length) :\n            new Uint8Array(a.length);\n        for (var i = 0; i < result.length; ++i) {\n            result[i] = Math.round(a[i]);\n        }\n        return result;\n    }\n    else {\n        throw new Error(\"Unknown dtype \" + dtype);\n    }\n}\nfunction typedArrayToFloat32(a, dtype) {\n    return (a instanceof Float32Array) ? a : new Float32Array(a);\n}\n\n},{\"../environment\":55,\"../log\":119,\"../ops/array_ops_util\":121,\"../ops/axis_util\":122,\"../ops/reduce_util\":145,\"../ops/segment_util\":150,\"../ops/slice_util\":153,\"../ops/softmax\":154,\"../ops/tensor_ops\":156,\"../tensor\":173,\"../types\":179,\"../util\":180,\"./backend_util\":72,\"./non_max_suppression_impl\":74,\"./topk_impl\":75,\"./webgl/argminmax_gpu\":76,\"./webgl/avg_pool_backprop_gpu\":77,\"./webgl/batchnorm_gpu\":78,\"./webgl/binaryop_gpu\":79,\"./webgl/clip_gpu\":80,\"./webgl/concat_gpu\":81,\"./webgl/conv_backprop_gpu\":82,\"./webgl/conv_backprop_gpu_depthwise\":83,\"./webgl/conv_gpu\":84,\"./webgl/conv_gpu_depthwise\":85,\"./webgl/cumsum_gpu\":86,\"./webgl/encode_float_gpu\":87,\"./webgl/from_pixels_gpu\":88,\"./webgl/gather_gpu\":89,\"./webgl/gpgpu_context\":90,\"./webgl/gpgpu_math\":91,\"./webgl/gpgpu_util\":92,\"./webgl/lrn_gpu\":93,\"./webgl/lrn_grad_gpu\":94,\"./webgl/max_pool_backprop_gpu\":95,\"./webgl/mulmat_gpu\":96,\"./webgl/multinomial_gpu\":97,\"./webgl/onehot_gpu\":98,\"./webgl/pad_gpu\":99,\"./webgl/pool_gpu\":100,\"./webgl/reduce_gpu\":101,\"./webgl/resize_bilinear_backprop_gpu\":102,\"./webgl/resize_bilinear_gpu\":103,\"./webgl/resize_nearest_neighbor_backprop_gpu\":104,\"./webgl/resize_nearest_neighbor_gpu\":105,\"./webgl/reverse_gpu\":106,\"./webgl/segment_gpu\":107,\"./webgl/select_gpu\":108,\"./webgl/slice_gpu\":110,\"./webgl/strided_slice_gpu\":111,\"./webgl/tex_util\":112,\"./webgl/texture_manager\":113,\"./webgl/tile_gpu\":114,\"./webgl/transpose_gpu\":115,\"./webgl/unaryop_gpu\":116,\"./webgl/webgl_util\":117,\"./where_impl\":118}],74:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tensor_ops_1 = require(\"../ops/tensor_ops\");\nfunction nonMaxSuppressionImpl(boxes, scores, maxOutputSize, iouThreshold, scoreThreshold) {\n    var candidates = Array.from(scores)\n        .map(function (score, boxIndex) { return ({ score: score, boxIndex: boxIndex }); })\n        .filter(function (c) { return c.score > scoreThreshold; })\n        .sort(function (c1, c2) { return c2.score - c1.score; });\n    var selected = [];\n    for (var i = 0; i < candidates.length; i++) {\n        var _a = candidates[i], score = _a.score, boxIndex = _a.boxIndex;\n        if (score < scoreThreshold) {\n            break;\n        }\n        var ignoreCandidate = false;\n        for (var j = selected.length - 1; j >= 0; --j) {\n            var iou = intersectionOverUnion(boxes, boxIndex, selected[j]);\n            if (iou >= iouThreshold) {\n                ignoreCandidate = true;\n                break;\n            }\n        }\n        if (!ignoreCandidate) {\n            selected.push(boxIndex);\n            if (selected.length >= maxOutputSize) {\n                break;\n            }\n        }\n    }\n    return tensor_ops_1.tensor1d(selected, 'int32');\n}\nexports.nonMaxSuppressionImpl = nonMaxSuppressionImpl;\nfunction intersectionOverUnion(boxes, i, j) {\n    var iCoord = boxes.subarray(i * 4, i * 4 + 4);\n    var jCoord = boxes.subarray(j * 4, j * 4 + 4);\n    var yminI = Math.min(iCoord[0], iCoord[2]);\n    var xminI = Math.min(iCoord[1], iCoord[3]);\n    var ymaxI = Math.max(iCoord[0], iCoord[2]);\n    var xmaxI = Math.max(iCoord[1], iCoord[3]);\n    var yminJ = Math.min(jCoord[0], jCoord[2]);\n    var xminJ = Math.min(jCoord[1], jCoord[3]);\n    var ymaxJ = Math.max(jCoord[0], jCoord[2]);\n    var xmaxJ = Math.max(jCoord[1], jCoord[3]);\n    var areaI = (ymaxI - yminI) * (xmaxI - xminI);\n    var areaJ = (ymaxJ - yminJ) * (xmaxJ - xminJ);\n    if (areaI <= 0 || areaJ <= 0) {\n        return 0.0;\n    }\n    var intersectionYmin = Math.max(yminI, yminJ);\n    var intersectionXmin = Math.max(xminI, xminJ);\n    var intersectionYmax = Math.min(ymaxI, ymaxJ);\n    var intersectionXmax = Math.min(xmaxI, xmaxJ);\n    var intersectionArea = Math.max(intersectionYmax - intersectionYmin, 0.0) *\n        Math.max(intersectionXmax - intersectionXmin, 0.0);\n    return intersectionArea / (areaI + areaJ - intersectionArea);\n}\n\n},{\"../ops/tensor_ops\":156}],75:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tensor_ops_1 = require(\"../ops/tensor_ops\");\nvar util_1 = require(\"../util\");\nfunction topkImpl(x, xShape, xDtype, k, sorted) {\n    var lastDim = xShape[xShape.length - 1];\n    var _a = [x.length / lastDim, lastDim], batch = _a[0], size = _a[1];\n    var allTopKVals = util_1.getTypedArrayFromDType(xDtype, batch * k);\n    var allTopKIndices = util_1.getTypedArrayFromDType('int32', batch * k);\n    for (var b = 0; b < batch; b++) {\n        var offset = b * size;\n        var vals = x.subarray(offset, offset + size);\n        var valAndInd = [];\n        for (var i = 0; i < vals.length; i++) {\n            valAndInd.push({ value: vals[i], index: i });\n        }\n        valAndInd.sort(function (a, b) { return b.value - a.value; });\n        var outOffset = b * k;\n        var topKVals = allTopKVals.subarray(outOffset, outOffset + k);\n        var topKIndices = allTopKIndices.subarray(outOffset, outOffset + k);\n        for (var i = 0; i < k; i++) {\n            topKVals[i] = valAndInd[i].value;\n            topKIndices[i] = valAndInd[i].index;\n        }\n    }\n    var outputShape = xShape.slice();\n    outputShape[outputShape.length - 1] = k;\n    return [\n        tensor_ops_1.tensor(allTopKVals, outputShape, xDtype),\n        tensor_ops_1.tensor(allTopKIndices, outputShape, 'int32')\n    ];\n}\nexports.topkImpl = topkImpl;\n\n},{\"../ops/tensor_ops\":156,\"../util\":180}],76:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ArgMinMaxProgram = (function () {\n    function ArgMinMaxProgram(reduceInfo, op, firstPass) {\n        this.variableNames = ['A'];\n        var windowSize = reduceInfo.windowSize;\n        var batchSize = reduceInfo.batchSize;\n        var inSize = reduceInfo.inSize;\n        var outSize = Math.ceil(inSize / windowSize);\n        if (!firstPass) {\n            this.variableNames.push('bestIndicesA');\n        }\n        this.outputShape = [batchSize, outSize];\n        var compOp = (op === 'max') ? '>' : '<';\n        var indexSnippet = firstPass ?\n            'inOffset + i;' :\n            'round(getBestIndicesA(batch, inOffset + i));';\n        this.userCode = \"\\n      void main() {\\n        ivec2 coords = getOutputCoords();\\n        int batch = coords[0];\\n        int outIdx = coords[1];\\n        int inOffset = outIdx * \" + windowSize + \";\\n\\n        int bestIndex = 0;\\n        float bestValue = getA(batch, inOffset);\\n\\n        for (int i = 0; i < \" + windowSize + \"; i++) {\\n          int inIdx = \" + indexSnippet + \";\\n          float candidate = getA(batch, inIdx);\\n          if (candidate \" + compOp + \" bestValue) {\\n            bestValue = candidate;\\n            bestIndex = inIdx;\\n          }\\n        }\\n        setOutput(float(bestIndex));\\n      }\\n    \";\n    }\n    return ArgMinMaxProgram;\n}());\nexports.ArgMinMaxProgram = ArgMinMaxProgram;\n\n},{}],77:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar AvgPool2DBackpropProgram = (function () {\n    function AvgPool2DBackpropProgram(convInfo) {\n        this.variableNames = ['dy'];\n        this.outputShape = convInfo.inShape;\n        var filterHeight = convInfo.filterHeight;\n        var filterWidth = convInfo.filterWidth;\n        var strideHeight = convInfo.strideHeight;\n        var strideWidth = convInfo.strideWidth;\n        var padTop = filterHeight - 1 - convInfo.padInfo.top;\n        var padLeft = filterWidth - 1 - convInfo.padInfo.left;\n        var avgMultiplier = 1 / (filterHeight * filterWidth);\n        this.userCode = \"\\n      const ivec2 pads = ivec2(\" + padTop + \", \" + padLeft + \");\\n      const float avgMultiplier = float(\" + avgMultiplier + \");\\n\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int b = coords[0];\\n        int d = coords[3];\\n\\n        ivec2 dyRCCorner = coords.yz - pads;\\n        int dyRCorner = dyRCCorner.x;\\n        int dyCCorner = dyRCCorner.y;\\n\\n        // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\\n        // ? = to be determined. : = across all values in that axis.\\n        float dotProd = 0.0;\\n        for (int wR = 0; wR < \" + filterHeight + \"; wR++) {\\n          float dyR = float(dyRCorner + wR) / \" + strideHeight + \".0;\\n\\n          if (dyR < 0.0 || dyR >= \" + convInfo.outHeight + \".0 || fract(dyR) > 0.0) {\\n            continue;\\n          }\\n          int idyR = int(dyR);\\n\\n          for (int wC = 0; wC < \" + filterWidth + \"; wC++) {\\n            float dyC = float(dyCCorner + wC) / \" + strideWidth + \".0;\\n\\n            if (dyC < 0.0 || dyC >= \" + convInfo.outWidth + \".0 ||\\n                fract(dyC) > 0.0) {\\n              continue;\\n            }\\n            int idyC = int(dyC);\\n\\n            float dyValue = getDy(b, idyR, idyC, d);\\n\\n            dotProd += dyValue * avgMultiplier;\\n          }\\n        }\\n        setOutput(dotProd);\\n      }\\n    \";\n    }\n    return AvgPool2DBackpropProgram;\n}());\nexports.AvgPool2DBackpropProgram = AvgPool2DBackpropProgram;\n\n},{}],78:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar broadcast_util = require(\"../../ops/broadcast_util\");\nvar BatchNormProgram = (function () {\n    function BatchNormProgram(xShape, meanShape, varianceShape, offsetShape, scaleShape, varianceEpsilon) {\n        this.outputShape = [];\n        this.supportsBroadcasting = true;\n        this.variableNames = ['x', 'mean', 'variance'];\n        broadcast_util.assertAndGetBroadcastShape(xShape, meanShape);\n        broadcast_util.assertAndGetBroadcastShape(xShape, varianceShape);\n        var offsetSnippet = '0.0';\n        if (offsetShape != null) {\n            broadcast_util.assertAndGetBroadcastShape(xShape, offsetShape);\n            this.variableNames.push('offset');\n            offsetSnippet = 'getOffsetAtOutCoords()';\n        }\n        var scaleSnippet = '1.0';\n        if (scaleShape != null) {\n            broadcast_util.assertAndGetBroadcastShape(xShape, scaleShape);\n            this.variableNames.push('scale');\n            scaleSnippet = 'getScaleAtOutCoords()';\n        }\n        this.outputShape = xShape;\n        this.userCode = \"\\n      void main() {\\n        float x = getXAtOutCoords();\\n        float mean = getMeanAtOutCoords();\\n        float variance = getVarianceAtOutCoords();\\n        float offset = \" + offsetSnippet + \";\\n        float scale = \" + scaleSnippet + \";\\n        float inv = scale * inversesqrt(variance + float(\" + varianceEpsilon + \"));\\n        setOutput((x - mean) * inv + offset);\\n      }\\n    \";\n    }\n    return BatchNormProgram;\n}());\nexports.BatchNormProgram = BatchNormProgram;\n\n},{\"../../ops/broadcast_util\":125}],79:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar broadcast_util = require(\"../../ops/broadcast_util\");\nvar CHECK_NAN_SNIPPET = \"\\n  if (isNaN(a)) return a;\\n  if (isNaN(b)) return b;\\n\";\nexports.ADD = 'return a + b;';\nexports.SUB = 'return a - b;';\nexports.MUL = 'return a * b;';\nexports.DIV = \"if (a == b) return 1.0;\\n  return a / b;\";\nexports.INT_DIV = \"\\n  float resultSign = sign(a) * sign(b);\\n  int ia = round(a);\\n  int ib = round(b);\\n  int result = ia / ib;\\n  int amodb = ia - ib * result;\\n\\n  if (resultSign < 0.0 && amodb != 0) {\\n    result -= 1;\\n  }\\n  return float(result);\\n\";\nexports.POW = \"\\nif(a < 0.0 && floor(b) < b){\\n  return NAN;\\n}\\nreturn (round(mod(b, 2.0)) == 0 || round(mod(b, 2.0)) == 2) ?\\n    pow(abs(a), b) : sign(a) * pow(abs(a), b);\\n\";\nexports.SQUARED_DIFFERENCE = 'return (a - b) * (a - b);';\nexports.EQUAL = \"return float(a == b);\";\nexports.NOT_EQUAL = \"return float(a != b);\";\nexports.LESS = \"return float(a < b);\";\nexports.LESS_EQUAL = \"return float(a <= b);\";\nexports.GREATER = \"return float(a > b);\";\nexports.GREATER_EQUAL = \"return float(a >= b);\";\nexports.LOGICAL_AND = \"return float(a >= 1.0 && b >= 1.0);\";\nexports.LOGICAL_OR = \"return float(a >= 1.0 || b >= 1.0);\";\nexports.MAX = CHECK_NAN_SNIPPET + \"\\n  return max(a, b);\\n\";\nexports.MIN = CHECK_NAN_SNIPPET + \"\\n  return min(a, b);\\n\";\nexports.MOD = \"if (b == 0.0) return NAN;\\n  return mod(a, b);\";\nexports.ATAN2 = CHECK_NAN_SNIPPET + \"\\n  return atan(a, b);\\n\";\nexports.ELU_DER = \"return (b >= 1.0) ? a : a * (b + 1.0);\";\nvar BinaryOpProgram = (function () {\n    function BinaryOpProgram(op, aShape, bShape) {\n        this.variableNames = ['A', 'B'];\n        this.supportsBroadcasting = true;\n        this.outputShape =\n            broadcast_util.assertAndGetBroadcastShape(aShape, bShape);\n        this.userCode = \"\\n      uniform float NAN;\\n      float binaryOperation(float a, float b) {\\n        \" + op + \"\\n      }\\n\\n      void main() {\\n        float a = getAAtOutCoords();\\n        float b = getBAtOutCoords();\\n        setOutput(binaryOperation(a, b));\\n      }\\n    \";\n    }\n    BinaryOpProgram.prototype.getCustomSetupFunc = function () {\n        var _this = this;\n        return function (gpgpu, webGLProgram) {\n            if (_this.startLoc == null) {\n                _this.startLoc = gpgpu.getUniformLocationNoThrow(webGLProgram, 'NAN');\n                if (_this.startLoc == null) {\n                    return;\n                }\n            }\n            gpgpu.gl.uniform1f(_this.startLoc, NaN);\n        };\n    };\n    return BinaryOpProgram;\n}());\nexports.BinaryOpProgram = BinaryOpProgram;\n\n},{\"../../ops/broadcast_util\":125}],80:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ClipProgram = (function () {\n    function ClipProgram(aShape, min, max) {\n        this.variableNames = ['A'];\n        this.outputShape = aShape;\n        var minFixed = min.toFixed(20);\n        var maxFixed = max.toFixed(20);\n        this.userCode = \"\\n      void main() {\\n        float value = getAAtOutCoords();\\n        if (isNaN(value)) {\\n          setOutput(value);\\n          return;\\n        }\\n\\n        setOutput(clamp(value, \" + minFixed + \", \" + maxFixed + \"));\\n      }\\n    \";\n    }\n    return ClipProgram;\n}());\nexports.ClipProgram = ClipProgram;\n\n},{}],81:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar concat_util = require(\"../../ops/concat_util\");\nvar ConcatProgram = (function () {\n    function ConcatProgram(aShape, bShape) {\n        this.variableNames = ['A', 'B'];\n        this.outputShape = [];\n        this.outputShape =\n            concat_util.computeOutShape(aShape, bShape, 1);\n        this.userCode = \"\\n      void main() {\\n        ivec2 coords = getOutputCoords();\\n        int yR = coords.x;\\n        int yC = coords.y;\\n\\n        float value = 0.0;\\n        if (yC < \" + aShape[1] + \") {\\n          value = getA(yR, yC);\\n        } else {\\n          yC -= \" + aShape[1] + \";\\n          value = getB(yR, yC);\\n        }\\n\\n        setOutput(value);\\n      }\\n    \";\n    }\n    return ConcatProgram;\n}());\nexports.ConcatProgram = ConcatProgram;\n\n},{\"../../ops/concat_util\":128}],82:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Conv2DDerFilterProgram = (function () {\n    function Conv2DDerFilterProgram(convInfo) {\n        this.variableNames = ['x', 'dy'];\n        this.outputShape = convInfo.filterShape;\n        var strideHeight = convInfo.strideHeight;\n        var strideWidth = convInfo.strideWidth;\n        var padTop = convInfo.padInfo.top;\n        var padLeft = convInfo.padInfo.left;\n        this.userCode = \"\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int wR = coords.x;\\n        int wC = coords.y;\\n        int d1 = coords.z;\\n        int d2 = coords.w;\\n\\n        // Convolve x(?, ?, d1) with dy(:, :, d2) to get dw(wR, wC, d1, d2).\\n        // ? = to be determined. : = across all values in that axis.\\n        float dotProd = 0.0;\\n\\n        for (int b = 0; b < \" + convInfo.batchSize + \"; b++) {\\n          for (int yR = 0; yR < \" + convInfo.outHeight + \"; yR++) {\\n            int xR = wR + yR * \" + strideHeight + \" - \" + padTop + \";\\n\\n            if (xR < 0 || xR >= \" + convInfo.inHeight + \") {\\n              continue;\\n            }\\n\\n            for (int yC = 0; yC < \" + convInfo.outWidth + \"; yC++) {\\n              int xC = wC + yC * \" + strideWidth + \" - \" + padLeft + \";\\n\\n              if (xC < 0 || xC >= \" + convInfo.inWidth + \") {\\n                continue;\\n              }\\n\\n              float dyValue = getDy(b, yR, yC, d2);\\n              float xValue = getX(b, xR, xC, d1);\\n              dotProd += (xValue * dyValue);\\n            }\\n          }\\n        }\\n        setOutput(dotProd);\\n      }\\n    \";\n    }\n    return Conv2DDerFilterProgram;\n}());\nexports.Conv2DDerFilterProgram = Conv2DDerFilterProgram;\nvar Conv2DDerInputProgram = (function () {\n    function Conv2DDerInputProgram(convInfo) {\n        this.variableNames = ['dy', 'W'];\n        this.outputShape = convInfo.inShape;\n        var filterHeight = convInfo.filterHeight;\n        var filterWidth = convInfo.filterWidth;\n        var strideHeight = convInfo.strideHeight;\n        var strideWidth = convInfo.strideWidth;\n        var padTop = filterHeight - 1 - convInfo.padInfo.top;\n        var padLeft = filterWidth - 1 - convInfo.padInfo.left;\n        this.userCode = \"\\n      const ivec2 pads = ivec2(\" + padTop + \", \" + padLeft + \");\\n\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int batch = coords[0];\\n        int d1 = coords[3];\\n\\n        ivec2 dyCorner = coords.yz - pads;\\n        int dyRCorner = dyCorner.x;\\n        int dyCCorner = dyCorner.y;\\n\\n        // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\\n        // ? = to be determined. : = across all values in that axis.\\n        float dotProd = 0.0;\\n        for (int wR = 0; wR < \" + filterHeight + \"; wR++) {\\n          float dyR = float(dyRCorner + wR) / \" + strideHeight + \".0;\\n\\n          if (dyR < 0.0 || dyR >= \" + convInfo.outHeight + \".0 || fract(dyR) > 0.0) {\\n            continue;\\n          }\\n          int idyR = int(dyR);\\n\\n          int wRPerm = \" + filterHeight + \" - 1 - wR;\\n\\n          for (int wC = 0; wC < \" + filterWidth + \"; wC++) {\\n            float dyC = float(dyCCorner + wC) / \" + strideWidth + \".0;\\n\\n            if (dyC < 0.0 || dyC >= \" + convInfo.outWidth + \".0 ||\\n                fract(dyC) > 0.0) {\\n              continue;\\n            }\\n            int idyC = int(dyC);\\n\\n            int wCPerm = \" + filterWidth + \" - 1 - wC;\\n\\n            for (int d2 = 0; d2 < \" + convInfo.outChannels + \"; d2++) {\\n              float xValue = getDy(batch, idyR, idyC, d2);\\n              float wValue = getW(wRPerm, wCPerm, d1, d2);\\n              dotProd += xValue * wValue;\\n            }\\n          }\\n        }\\n        setOutput(dotProd);\\n      }\\n    \";\n    }\n    return Conv2DDerInputProgram;\n}());\nexports.Conv2DDerInputProgram = Conv2DDerInputProgram;\n\n},{}],83:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar DepthwiseConv2DDerFilterProgram = (function () {\n    function DepthwiseConv2DDerFilterProgram(convInfo) {\n        this.variableNames = ['x', 'dy'];\n        this.outputShape = convInfo.filterShape;\n        var strideHeight = convInfo.strideHeight;\n        var strideWidth = convInfo.strideWidth;\n        var padTop = convInfo.padInfo.top;\n        var padLeft = convInfo.padInfo.left;\n        var channelMul = convInfo.outChannels / convInfo.inChannels;\n        this.userCode = \"\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int wR = coords.x;\\n        int wC = coords.y;\\n        int d1 = coords.z;\\n        int dm = coords.w;\\n        int d2 = d1 * \" + channelMul + \" + dm;\\n\\n        float dotProd = 0.0;\\n\\n        // TODO: Vec4 over the batch size\\n        for (int b = 0; b < \" + convInfo.batchSize + \"; b++) {\\n          for (int yR = 0; yR < \" + convInfo.outHeight + \"; yR++) {\\n            int xR = wR + yR * \" + strideHeight + \" - \" + padTop + \";\\n\\n            if (xR < 0 || xR >= \" + convInfo.inHeight + \") {\\n              continue;\\n            }\\n\\n            for (int yC = 0; yC < \" + convInfo.outWidth + \"; yC++) {\\n              int xC = wC + yC * \" + strideWidth + \" - \" + padLeft + \";\\n\\n              if (xC < 0 || xC >= \" + convInfo.inWidth + \") {\\n                continue;\\n              }\\n\\n              float dyValue = getDy(b, yR, yC, d2);\\n              float xValue = getX(b, xR, xC, d1);\\n              dotProd += (xValue * dyValue);\\n            }\\n          }\\n        }\\n        setOutput(dotProd);\\n      }\\n    \";\n    }\n    return DepthwiseConv2DDerFilterProgram;\n}());\nexports.DepthwiseConv2DDerFilterProgram = DepthwiseConv2DDerFilterProgram;\nvar DepthwiseConv2DDerInputProgram = (function () {\n    function DepthwiseConv2DDerInputProgram(convInfo) {\n        this.variableNames = ['dy', 'W'];\n        this.outputShape = convInfo.inShape;\n        var filterHeight = convInfo.filterHeight;\n        var filterWidth = convInfo.filterWidth;\n        var strideHeight = convInfo.strideHeight;\n        var strideWidth = convInfo.strideWidth;\n        var padTop = filterHeight - 1 - convInfo.padInfo.top;\n        var padLeft = filterWidth - 1 - convInfo.padInfo.left;\n        var channelMul = convInfo.outChannels / convInfo.inChannels;\n        this.userCode = \"\\n      const ivec2 pads = ivec2(\" + padTop + \", \" + padLeft + \");\\n\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int batch = coords[0];\\n        int d1 = coords[3];\\n        ivec2 dyCorner = coords.yz - pads;\\n        int dyRCorner = dyCorner.x;\\n        int dyCCorner = dyCorner.y;\\n\\n        float dotProd = 0.0;\\n\\n        for (int wR = 0; wR < \" + filterHeight + \"; wR++) {\\n          float dyR = float(dyRCorner + wR) / \" + strideHeight + \".0;\\n\\n          if (dyR < 0.0 || dyR >= \" + convInfo.outHeight + \".0 || fract(dyR) > 0.0) {\\n            continue;\\n          }\\n          int idyR = int(dyR);\\n\\n          int wRPerm = \" + filterHeight + \" - 1 - wR;\\n\\n          for (int wC = 0; wC < \" + filterWidth + \"; wC++) {\\n            float dyC = float(dyCCorner + wC) / \" + strideWidth + \".0;\\n\\n            if (dyC < 0.0 || dyC >= \" + convInfo.outWidth + \".0 ||\\n                fract(dyC) > 0.0) {\\n              continue;\\n            }\\n            int idyC = int(dyC);\\n\\n            int wCPerm = \" + filterWidth + \" - 1 - wC;\\n\\n            // TODO: Vec4 over the channelMul\\n            for (int dm = 0; dm < \" + channelMul + \"; dm++) {\\n              int d2 = d1 * \" + channelMul + \" + dm;\\n              float xValue = getDy(batch, idyR, idyC, d2);\\n              float wValue = getW(wRPerm, wCPerm, d1, dm);\\n              dotProd += xValue * wValue;\\n            }\\n          }\\n        }\\n        setOutput(dotProd);\\n      }\\n    \";\n    }\n    return DepthwiseConv2DDerInputProgram;\n}());\nexports.DepthwiseConv2DDerInputProgram = DepthwiseConv2DDerInputProgram;\n\n},{}],84:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Conv2DProgram = (function () {\n    function Conv2DProgram(convInfo) {\n        this.variableNames = ['x', 'W'];\n        this.outputShape = convInfo.outShape;\n        var padTop = convInfo.padInfo.top;\n        var padLeft = convInfo.padInfo.left;\n        var strideHeight = convInfo.strideHeight;\n        var strideWidth = convInfo.strideWidth;\n        var dilationHeight = convInfo.dilationHeight;\n        var dilationWidth = convInfo.dilationWidth;\n        var filterHeight = convInfo.filterHeight;\n        var filterWidth = convInfo.filterWidth;\n        var inputDepthNearestVec4 = Math.floor(convInfo.inChannels / 4) * 4;\n        var inputDepthVec4Remainder = convInfo.inChannels % 4;\n        this.userCode = \"\\n      const ivec2 strides = ivec2(\" + strideHeight + \", \" + strideWidth + \");\\n      const ivec2 pads = ivec2(\" + padTop + \", \" + padLeft + \");\\n\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int batch = coords[0];\\n        int d2 = coords[3];\\n\\n        ivec2 xRCCorner = coords.yz * strides - pads;\\n        int xRCorner = xRCCorner.x;\\n        int xCCorner = xRCCorner.y;\\n\\n        // Convolve x(?, ?, d1) with w(:, :, d1, d2) to get y(yR, yC, d2).\\n        // ? = to be determined. : = across all values in that axis.\\n        float dotProd = 0.0;\\n        for (int wR = 0; wR < \" + filterHeight + \"; wR++) {\\n          int xR = xRCorner + wR * \" + dilationHeight + \";\\n\\n          if (xR < 0 || xR >= \" + convInfo.inHeight + \") {\\n            continue;\\n          }\\n\\n          for (int wC = 0; wC < \" + filterWidth + \"; wC++) {\\n            int xC = xCCorner + wC * \" + dilationWidth + \";\\n\\n            if (xC < 0 || xC >= \" + convInfo.inWidth + \") {\\n              continue;\\n            }\\n\\n            for (int d1 = 0; d1 < \" + inputDepthNearestVec4 + \"; d1 += 4) {\\n              vec4 xValues = vec4(\\n                getX(batch, xR, xC, d1),\\n                getX(batch, xR, xC, d1 + 1),\\n                getX(batch, xR, xC, d1 + 2),\\n                getX(batch, xR, xC, d1 + 3)\\n              );\\n              vec4 wValues = vec4(\\n                getW(wR, wC, d1, d2),\\n                getW(wR, wC, d1 + 1, d2),\\n                getW(wR, wC, d1 + 2, d2),\\n                getW(wR, wC, d1 + 3, d2)\\n              );\\n\\n              dotProd += dot(xValues, wValues);\\n            }\\n\\n            if (\" + (inputDepthVec4Remainder === 1) + \") {\\n              dotProd +=\\n                getX(batch, xR, xC, \" + inputDepthNearestVec4 + \") *\\n                getW(wR, wC, \" + inputDepthNearestVec4 + \", d2);\\n            } else if (\" + (inputDepthVec4Remainder === 2) + \") {\\n              vec2 xValues = vec2(\\n                getX(batch, xR, xC, \" + inputDepthNearestVec4 + \"),\\n                getX(batch, xR, xC, \" + inputDepthNearestVec4 + \" + 1)\\n              );\\n              vec2 wValues = vec2(\\n                getW(wR, wC, \" + inputDepthNearestVec4 + \", d2),\\n                getW(wR, wC, \" + inputDepthNearestVec4 + \" + 1, d2)\\n              );\\n              dotProd += dot(xValues, wValues);\\n            } else if (\" + (inputDepthVec4Remainder === 3) + \") {\\n              vec3 xValues = vec3(\\n                getX(batch, xR, xC, \" + inputDepthNearestVec4 + \"),\\n                getX(batch, xR, xC, \" + inputDepthNearestVec4 + \" + 1),\\n                getX(batch, xR, xC, \" + inputDepthNearestVec4 + \" + 2)\\n              );\\n              vec3 wValues = vec3(\\n                getW(wR, wC, \" + inputDepthNearestVec4 + \", d2),\\n                getW(wR, wC, \" + inputDepthNearestVec4 + \" + 1, d2),\\n                getW(wR, wC, \" + inputDepthNearestVec4 + \" + 2, d2)\\n              );\\n              dotProd += dot(xValues, wValues);\\n            }\\n          }\\n        }\\n        setOutput(dotProd);\\n      }\\n    \";\n    }\n    return Conv2DProgram;\n}());\nexports.Conv2DProgram = Conv2DProgram;\n\n},{}],85:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar DepthwiseConv2DProgram = (function () {\n    function DepthwiseConv2DProgram(convInfo) {\n        this.variableNames = ['x', 'W'];\n        this.outputShape = convInfo.outShape;\n        var xNumRows = convInfo.inHeight;\n        var xNumCols = convInfo.inWidth;\n        var padTop = convInfo.padInfo.top;\n        var padLeft = convInfo.padInfo.left;\n        var strideHeight = convInfo.strideHeight;\n        var strideWidth = convInfo.strideWidth;\n        var dilationHeight = convInfo.dilationHeight;\n        var dilationWidth = convInfo.dilationWidth;\n        var filterHeight = convInfo.filterHeight;\n        var filterWidth = convInfo.filterWidth;\n        var channelMul = convInfo.outChannels / convInfo.inChannels;\n        this.userCode = \"\\n      const ivec2 strides = ivec2(\" + strideHeight + \", \" + strideWidth + \");\\n      const ivec2 pads = ivec2(\" + padTop + \", \" + padLeft + \");\\n\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int batch = coords.x;\\n        ivec2 xRCCorner = coords.yz * strides - pads;\\n        int d2 = coords.w;\\n        int d1 = d2 / \" + channelMul + \";\\n        int q = d2 - d1 * \" + channelMul + \";\\n\\n        int xRCorner = xRCCorner.x;\\n        int xCCorner = xRCCorner.y;\\n\\n        // Convolve x(?, ?, d1) with w(:, :, d1, q) to get y(yR, yC, d2).\\n        // ? = to be determined. : = across all values in that axis.\\n        float dotProd = 0.0;\\n        // TODO(dsmilkov): Flatten the two for loops and vec4 the operations.\\n        for (int wR = 0; wR < \" + filterHeight + \"; wR++) {\\n          int xR = xRCorner + wR * \" + dilationHeight + \";\\n\\n          if (xR < 0 || xR >= \" + xNumRows + \") {\\n            continue;\\n          }\\n\\n          for (int wC = 0; wC < \" + filterWidth + \"; wC++) {\\n            int xC = xCCorner + wC * \" + dilationWidth + \";\\n\\n            if (xC < 0 || xC >= \" + xNumCols + \") {\\n              continue;\\n            }\\n\\n            float xVal = getX(batch, xR, xC, d1);\\n            float wVal = getW(wR, wC, d1, q);\\n            dotProd += xVal * wVal;\\n          }\\n        }\\n        setOutput(dotProd);\\n      }\\n    \";\n    }\n    return DepthwiseConv2DProgram;\n}());\nexports.DepthwiseConv2DProgram = DepthwiseConv2DProgram;\n\n},{}],86:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shader_compiler_1 = require(\"./shader_compiler\");\nvar CumSumProgram = (function () {\n    function CumSumProgram(shape, exclusive, reverse) {\n        this.variableNames = ['x'];\n        this.outputShape = shape;\n        var rank = shape.length;\n        var finalDim = shape[shape.length - 1];\n        var comparator = reverse ? '<' : '>';\n        this.userCode = \"\\n      int getIndex(int i) {\\n        \" + (reverse ? \"return \" + finalDim + \" -i - 1;\" : 'return i;') + \"\\n      }\\n\\n      void main() {\\n        \" + shader_compiler_1.getCoordsDataType(rank) + \" coords = getOutputCoords();\\n        int end = \" + getFinalCoord(rank, 'coords') + \";\\n        float val = 0.0;\\n        for (int i = \" + finalDim + \" - 1; i >= 0; i -= 1) {\\n          int idx = getIndex(i);\\n          if (idx \" + comparator + \" end) {\\n            continue;\\n          }\\n          if (idx == end && \" + exclusive + \") {\\n            continue;\\n          }\\n          \" + getFinalCoord(rank, 'coords') + \" = idx;\\n          val += getX(\" + getCoords(rank, 'coords') + \");\\n        }\\n        setOutput(val);\\n      }\\n    \";\n    }\n    return CumSumProgram;\n}());\nexports.CumSumProgram = CumSumProgram;\nfunction getCoords(rank, name) {\n    if (rank === 1) {\n        return \"\" + name;\n    }\n    else if (rank === 2) {\n        return name + \".x, \" + name + \".y\";\n    }\n    else if (rank === 3) {\n        return name + \".x, \" + name + \".y, \" + name + \".z\";\n    }\n    else if (rank === 4) {\n        return name + \".x, \" + name + \".y, \" + name + \".z, \" + name + \".w\";\n    }\n    else {\n        throw Error(\"Cumulative sum for rank \" + rank + \" is not yet supported\");\n    }\n}\nfunction getFinalCoord(rank, name) {\n    if (rank === 1) {\n        return \"\" + name;\n    }\n    else if (rank === 2) {\n        return name + \".y\";\n    }\n    else if (rank === 3) {\n        return name + \".z\";\n    }\n    else if (rank === 4) {\n        return name + \".w\";\n    }\n    else {\n        throw Error(\"Cumulative sum for rank \" + rank + \" is not yet supported\");\n    }\n}\n\n},{\"./shader_compiler\":109}],87:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar EncodeFloatProgram = (function () {\n    function EncodeFloatProgram(outputShape) {\n        this.variableNames = ['A'];\n        this.outputShape = outputShape;\n        this.userCode = \"\\n      const float FLOAT_MAX = 1.70141184e38;\\n      const float FLOAT_MIN = 1.17549435e-38;\\n\\n      lowp vec4 encode_float(highp float v) {\\n        if (isNaN(v)) {\\n          return vec4(255, 255, 255, 255);\\n        }\\n\\n        highp float av = abs(v);\\n\\n        if(av < FLOAT_MIN) {\\n          return vec4(0.0, 0.0, 0.0, 0.0);\\n        } else if(v > FLOAT_MAX) {\\n          return vec4(0.0, 0.0, 128.0, 127.0) / 255.0;\\n        } else if(v < -FLOAT_MAX) {\\n          return vec4(0.0, 0.0,  128.0, 255.0) / 255.0;\\n        }\\n\\n        highp vec4 c = vec4(0,0,0,0);\\n\\n        highp float e = floor(log2(av));\\n        highp float m = exp2(fract(log2(av))) - 1.0;\\n\\n        c[2] = floor(128.0 * m);\\n        m -= c[2] / 128.0;\\n        c[1] = floor(32768.0 * m);\\n        m -= c[1] / 32768.0;\\n        c[0] = floor(8388608.0 * m);\\n\\n        highp float ebias = e + 127.0;\\n        c[3] = floor(ebias / 2.0);\\n        ebias -= c[3] * 2.0;\\n        c[2] += floor(ebias) * 128.0;\\n\\n        c[3] += 128.0 * step(0.0, -v);\\n\\n        return c / 255.0;\\n      }\\n\\n      void main() {\\n        float x = getAAtOutCoords();\\n        gl_FragColor = encode_float(x);\\n      }\\n    \";\n    }\n    return EncodeFloatProgram;\n}());\nexports.EncodeFloatProgram = EncodeFloatProgram;\n\n},{}],88:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar FromPixelsProgram = (function () {\n    function FromPixelsProgram(outputShape) {\n        this.variableNames = ['A'];\n        var height = outputShape[0], width = outputShape[1];\n        this.outputShape = outputShape;\n        this.userCode = \"\\n      void main() {\\n        ivec3 coords = getOutputCoords();\\n        int texR = coords[0];\\n        int texC = coords[1];\\n        int depth = coords[2];\\n        vec2 uv = (vec2(texC, texR) + halfCR) / vec2(\" + width + \".0, \" + height + \".0);\\n\\n        vec4 values = texture2D(A, uv);\\n        float value;\\n        if (depth == 0) {\\n          value = values.r;\\n        } else if (depth == 1) {\\n          value = values.g;\\n        } else if (depth == 2) {\\n          value = values.b;\\n        } else if (depth == 3) {\\n          value = values.a;\\n        }\\n\\n        setOutput(floor(value * 255.0 + 0.5));\\n      }\\n    \";\n    }\n    return FromPixelsProgram;\n}());\nexports.FromPixelsProgram = FromPixelsProgram;\n\n},{}],89:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shader_compiler_1 = require(\"./shader_compiler\");\nvar GatherProgram = (function () {\n    function GatherProgram(aShape, indicesLength, axis) {\n        this.variableNames = ['A', 'indices'];\n        var outputShape = aShape.slice();\n        outputShape[axis] = indicesLength;\n        this.outputShape = outputShape;\n        this.rank = outputShape.length;\n        var dtype = shader_compiler_1.getCoordsDataType(this.rank);\n        var sourceCoords = getSourceCoords(aShape, axis);\n        this.userCode = \"\\n      void main() {\\n        \" + dtype + \" resRC = getOutputCoords();\\n        setOutput(getA(\" + sourceCoords + \"));\\n      }\\n    \";\n    }\n    return GatherProgram;\n}());\nexports.GatherProgram = GatherProgram;\nfunction getSourceCoords(aShape, axis) {\n    var rank = aShape.length;\n    if (rank > 4) {\n        throw Error(\"Gather for rank \" + rank + \" is not yet supported\");\n    }\n    if (rank === 1) {\n        return \"int(getIndices(resRC))\";\n    }\n    var currentCoords = ['resRC.x', 'resRC.y', 'resRC.z', 'resRC.w'];\n    var sourceCoords = [];\n    for (var i = 0; i < aShape.length; i++) {\n        if (i === axis) {\n            sourceCoords.push(\"int(getIndices(\" + currentCoords[i] + \"))\");\n        }\n        else {\n            sourceCoords.push(\"\" + currentCoords[i]);\n        }\n    }\n    return sourceCoords.join();\n}\n\n},{\"./shader_compiler\":109}],90:[function(require,module,exports){\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 = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, 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 environment_1 = require(\"../../environment\");\nvar util = require(\"../../util\");\nvar gpgpu_util = require(\"./gpgpu_util\");\nvar tex_util = require(\"./tex_util\");\nvar webgl_util = require(\"./webgl_util\");\nvar GPGPUContext = (function () {\n    function GPGPUContext(gl) {\n        this.outputTexture = null;\n        this.program = null;\n        this.disposed = false;\n        this.autoDebugValidate = false;\n        this.vertexAttrsAreBound = false;\n        this.itemsToPoll = [];\n        if (gl != null) {\n            this.gl = gl;\n        }\n        else {\n            this.gl = gpgpu_util.createWebGLContext();\n        }\n        if (environment_1.ENV.get('WEBGL_VERSION') === 1) {\n            this.textureFloatExtension =\n                webgl_util.getExtensionOrThrow(this.gl, 'OES_texture_float');\n            this.colorBufferFloatExtension =\n                this.gl.getExtension('WEBGL_color_buffer_float');\n            if (!environment_1.ENV.get('WEBGL_RENDER_FLOAT32_ENABLED')) {\n                this.textureHalfFloatExtension =\n                    webgl_util.getExtensionOrThrow(this.gl, 'OES_texture_half_float');\n                this.colorBufferHalfFloatExtension =\n                    this.gl.getExtension('EXT_color_buffer_half_float');\n            }\n        }\n        else {\n            this.colorBufferFloatExtension =\n                webgl_util.getExtensionOrThrow(this.gl, 'EXT_color_buffer_float');\n        }\n        this.loseContextExtension =\n            webgl_util.getExtensionOrThrow(this.gl, 'WEBGL_lose_context');\n        this.vertexBuffer = gpgpu_util.createVertexBuffer(this.gl);\n        this.indexBuffer = gpgpu_util.createIndexBuffer(this.gl);\n        this.framebuffer = webgl_util.createFramebuffer(this.gl);\n        this.textureConfig =\n            gpgpu_util.getTextureConfig(this.gl, this.textureHalfFloatExtension);\n    }\n    GPGPUContext.prototype.dispose = function () {\n        var _this = this;\n        if (this.disposed) {\n            return;\n        }\n        if (this.program != null) {\n            console.warn('Disposing a GPGPUContext that still has a bound WebGLProgram.' +\n                ' This is probably a resource leak, delete the program with ' +\n                'GPGPUContext.deleteProgram before disposing.');\n        }\n        if (this.outputTexture != null) {\n            console.warn('Disposing a GPGPUContext that still has a bound output matrix ' +\n                'texture.  This is probably a resource leak, delete the output ' +\n                'matrix texture with GPGPUContext.deleteMatrixTexture before ' +\n                'disposing.');\n        }\n        var gl = this.gl;\n        webgl_util.callAndCheck(gl, function () { return gl.finish(); });\n        webgl_util.callAndCheck(gl, function () { return gl.bindFramebuffer(gl.FRAMEBUFFER, null); });\n        webgl_util.callAndCheck(gl, function () { return gl.deleteFramebuffer(_this.framebuffer); });\n        webgl_util.callAndCheck(gl, function () { return gl.bindBuffer(gl.ARRAY_BUFFER, null); });\n        webgl_util.callAndCheck(gl, function () { return gl.deleteBuffer(_this.vertexBuffer); });\n        webgl_util.callAndCheck(gl, function () { return gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null); });\n        webgl_util.callAndCheck(gl, function () { return gl.deleteBuffer(_this.indexBuffer); });\n        this.loseContextExtension.loseContext();\n        this.disposed = true;\n    };\n    GPGPUContext.prototype.enableAutomaticDebugValidation = function (enabled) {\n        this.autoDebugValidate = enabled;\n        webgl_util.enableDebugWebGLErrorChecking(enabled);\n    };\n    GPGPUContext.prototype.createFloat32MatrixTexture = function (rows, columns) {\n        this.throwIfDisposed();\n        return gpgpu_util.createFloat32MatrixTexture(this.gl, rows, columns, this.textureConfig);\n    };\n    GPGPUContext.prototype.createFloat16MatrixTexture = function (rows, columns) {\n        this.throwIfDisposed();\n        return gpgpu_util.createFloat16MatrixTexture(this.gl, rows, columns, this.textureConfig);\n    };\n    GPGPUContext.prototype.createUnsignedBytesMatrixTexture = function (rows, columns) {\n        this.throwIfDisposed();\n        return gpgpu_util.createUnsignedBytesMatrixTexture(this.gl, rows, columns, this.textureConfig);\n    };\n    GPGPUContext.prototype.uploadPixelDataToTexture = function (texture, pixels) {\n        this.throwIfDisposed();\n        gpgpu_util.uploadPixelDataToTexture(this.gl, texture, pixels);\n    };\n    GPGPUContext.prototype.createPackedMatrixTexture = function (rows, columns) {\n        this.throwIfDisposed();\n        return gpgpu_util.createPackedMatrixTexture(this.gl, rows, columns, this.textureConfig);\n    };\n    GPGPUContext.prototype.deleteMatrixTexture = function (texture) {\n        var _this = this;\n        this.throwIfDisposed();\n        if (this.outputTexture === texture) {\n            webgl_util.unbindColorTextureFromFramebuffer(this.gl, this.framebuffer);\n            this.outputTexture = null;\n        }\n        webgl_util.callAndCheck(this.gl, function () { return _this.gl.deleteTexture(texture); });\n    };\n    GPGPUContext.prototype.uploadMatrixToTexture = function (texture, rows, columns, matrix) {\n        this.throwIfDisposed();\n        var numChannels = webgl_util.getNumChannels();\n        return gpgpu_util.uploadMatrixToTexture(this.gl, texture, rows, columns, matrix, numChannels, this.textureConfig);\n    };\n    GPGPUContext.prototype.uploadMatrixToPackedTexture = function (texture, rows, columns, matrix) {\n        this.throwIfDisposed();\n        return gpgpu_util.uploadMatrixToPackedTexture(this.gl, texture, rows, columns, matrix, this.textureConfig);\n    };\n    GPGPUContext.prototype.downloadFloat32MatrixFromOutputTexture = function (texture, rows, columns) {\n        var _this = this;\n        return this.downloadMatrixDriver(texture, function () { return gpgpu_util.downloadFloat32MatrixFromOutputTexture(_this.gl, rows, columns, _this.textureConfig); });\n    };\n    GPGPUContext.prototype.downloadByteEncodedFloatMatrixFromOutputTexture = function (texture, rows, columns) {\n        var _this = this;\n        return this.downloadMatrixDriver(texture, function () { return gpgpu_util.downloadByteEncodedFloatMatrixFromOutputTexture(_this.gl, rows, columns, _this.textureConfig); });\n    };\n    GPGPUContext.prototype.downloadFloat32MatrixFromBuffer = function (buffer, rows, columns) {\n        return gpgpu_util.downloadFloat32MatrixFromBuffer(this.gl, buffer, rows, columns, this.textureConfig);\n    };\n    GPGPUContext.prototype.maybeCreateBufferFromTexture = function (texture, rows, columns) {\n        this.bindTextureToFrameBuffer(texture);\n        var result = gpgpu_util.maybeCreateBufferFromOutputTexture(this.gl, texture, rows, columns, this.textureConfig);\n        this.unbindTextureToFrameBuffer();\n        return result;\n    };\n    GPGPUContext.prototype.createAndWaitForFence = function () {\n        var fenceContext = this.createFence(this.gl);\n        return this.pollFence(fenceContext);\n    };\n    GPGPUContext.prototype.createFence = function (gl) {\n        var _this = this;\n        var query;\n        var isFencePassed;\n        if (environment_1.ENV.get('WEBGL_FENCE_API_ENABLED')) {\n            var gl2_1 = gl;\n            var sync_1 = gl2_1.fenceSync(gl2_1.SYNC_GPU_COMMANDS_COMPLETE, 0);\n            gl.flush();\n            isFencePassed = function () {\n                var status = gl2_1.clientWaitSync(sync_1, 0, 0);\n                return status === gl2_1.ALREADY_SIGNALED ||\n                    status === gl2_1.CONDITION_SATISFIED;\n            };\n            query = sync_1;\n        }\n        else if (environment_1.ENV.get('WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION') > 0) {\n            query = this.beginQuery();\n            this.endQuery();\n            isFencePassed = function () { return _this.isQueryAvailable(query, environment_1.ENV.get('WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION')); };\n        }\n        else {\n            isFencePassed = function () { return true; };\n        }\n        return { query: query, isFencePassed: isFencePassed };\n    };\n    GPGPUContext.prototype.downloadMatrixFromPackedTexture = function (texture, rows, columns) {\n        var _this = this;\n        return this.downloadMatrixDriver(texture, function () { return gpgpu_util.downloadMatrixFromPackedOutputTexture(_this.gl, rows, columns, _this.textureConfig); });\n    };\n    GPGPUContext.prototype.createProgram = function (fragmentShaderSource) {\n        this.throwIfDisposed();\n        var gl = this.gl;\n        var fragmentShader = webgl_util.createFragmentShader(gl, fragmentShaderSource);\n        var vertexShader = gpgpu_util.createVertexShader(gl);\n        var program = webgl_util.createProgram(gl);\n        webgl_util.callAndCheck(gl, function () { return gl.attachShader(program, vertexShader); });\n        webgl_util.callAndCheck(gl, function () { return gl.attachShader(program, fragmentShader); });\n        webgl_util.linkProgram(gl, program);\n        if (this.autoDebugValidate) {\n            webgl_util.validateProgram(gl, program);\n        }\n        if (!this.vertexAttrsAreBound) {\n            this.setProgram(program);\n            this.vertexAttrsAreBound = gpgpu_util.bindVertexProgramAttributeStreams(gl, this.program, this.vertexBuffer);\n        }\n        return program;\n    };\n    GPGPUContext.prototype.deleteProgram = function (program) {\n        var _this = this;\n        this.throwIfDisposed();\n        if (program === this.program) {\n            this.program = null;\n        }\n        if (program != null) {\n            webgl_util.callAndCheck(this.gl, function () { return _this.gl.deleteProgram(program); });\n        }\n    };\n    GPGPUContext.prototype.setProgram = function (program) {\n        var _this = this;\n        this.throwIfDisposed();\n        this.program = program;\n        if ((this.program != null) && this.autoDebugValidate) {\n            webgl_util.validateProgram(this.gl, this.program);\n        }\n        webgl_util.callAndCheck(this.gl, function () { return _this.gl.useProgram(program); });\n    };\n    GPGPUContext.prototype.getUniformLocation = function (program, uniformName, shouldThrow) {\n        if (shouldThrow === void 0) { shouldThrow = true; }\n        this.throwIfDisposed();\n        if (shouldThrow) {\n            return webgl_util.getProgramUniformLocationOrThrow(this.gl, program, uniformName);\n        }\n        else {\n            return webgl_util.getProgramUniformLocation(this.gl, program, uniformName);\n        }\n    };\n    GPGPUContext.prototype.getAttributeLocation = function (program, attribute) {\n        var _this = this;\n        this.throwIfDisposed();\n        return webgl_util.callAndCheck(this.gl, function () { return _this.gl.getAttribLocation(program, attribute); });\n    };\n    GPGPUContext.prototype.getUniformLocationNoThrow = function (program, uniformName) {\n        this.throwIfDisposed();\n        return this.gl.getUniformLocation(program, uniformName);\n    };\n    GPGPUContext.prototype.setInputMatrixTexture = function (inputMatrixTexture, uniformLocation, textureUnit) {\n        this.throwIfDisposed();\n        this.throwIfNoProgram();\n        webgl_util.bindTextureToProgramUniformSampler(this.gl, this.program, inputMatrixTexture, uniformLocation, textureUnit);\n    };\n    GPGPUContext.prototype.setOutputMatrixTexture = function (outputMatrixTexture, rows, columns) {\n        this.setOutputMatrixTextureDriver(outputMatrixTexture, columns, rows);\n    };\n    GPGPUContext.prototype.setOutputPackedMatrixTexture = function (outputPackedMatrixTexture, rows, columns) {\n        this.throwIfDisposed();\n        var _a = tex_util.getPackedMatrixTextureShapeWidthHeight(rows, columns), width = _a[0], height = _a[1];\n        this.setOutputMatrixTextureDriver(outputPackedMatrixTexture, width, height);\n    };\n    GPGPUContext.prototype.setOutputMatrixWriteRegion = function (startRow, numRows, startColumn, numColumns) {\n        this.setOutputMatrixWriteRegionDriver(startColumn, startRow, numColumns, numRows);\n    };\n    GPGPUContext.prototype.setOutputPackedMatrixWriteRegion = function (startRow, numRows, startColumn, numColumns) {\n        throw new Error('setOutputPackedMatrixWriteRegion not implemented.');\n    };\n    GPGPUContext.prototype.debugValidate = function () {\n        if (this.program != null) {\n            webgl_util.validateProgram(this.gl, this.program);\n        }\n        webgl_util.validateFramebuffer(this.gl);\n    };\n    GPGPUContext.prototype.executeProgram = function () {\n        this.throwIfDisposed();\n        this.throwIfNoProgram();\n        var gl = this.gl;\n        if (this.autoDebugValidate) {\n            this.debugValidate();\n        }\n        webgl_util.callAndCheck(gl, function () { return gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0); });\n    };\n    GPGPUContext.prototype.blockUntilAllProgramsCompleted = function () {\n        var _this = this;\n        this.throwIfDisposed();\n        webgl_util.callAndCheck(this.gl, function () { return _this.gl.finish(); });\n    };\n    GPGPUContext.prototype.getQueryTimerExtension = function () {\n        if (this.disjointQueryTimerExtension == null) {\n            this.disjointQueryTimerExtension =\n                webgl_util.getExtensionOrThrow(this.gl, environment_1.ENV.get('WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION') === 2 ?\n                    'EXT_disjoint_timer_query_webgl2' :\n                    'EXT_disjoint_timer_query');\n        }\n        return this.disjointQueryTimerExtension;\n    };\n    GPGPUContext.prototype.getQueryTimerExtensionWebGL2 = function () {\n        return this.getQueryTimerExtension();\n    };\n    GPGPUContext.prototype.getQueryTimerExtensionWebGL1 = function () {\n        return this.getQueryTimerExtension();\n    };\n    GPGPUContext.prototype.beginQuery = function () {\n        if (environment_1.ENV.get('WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION') === 2) {\n            var gl2 = this.gl;\n            var ext_1 = this.getQueryTimerExtensionWebGL2();\n            var query_1 = gl2.createQuery();\n            gl2.beginQuery(ext_1.TIME_ELAPSED_EXT, query_1);\n            return query_1;\n        }\n        var ext = this.getQueryTimerExtensionWebGL1();\n        var query = ext.createQueryEXT();\n        ext.beginQueryEXT(ext.TIME_ELAPSED_EXT, query);\n        return query;\n    };\n    GPGPUContext.prototype.endQuery = function () {\n        if (environment_1.ENV.get('WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION') === 2) {\n            var gl2 = this.gl;\n            var ext_2 = this.getQueryTimerExtensionWebGL2();\n            gl2.endQuery(ext_2.TIME_ELAPSED_EXT);\n            return;\n        }\n        var ext = this.getQueryTimerExtensionWebGL1();\n        ext.endQueryEXT(ext.TIME_ELAPSED_EXT);\n    };\n    GPGPUContext.prototype.waitForQueryAndGetTime = function (query) {\n        return __awaiter(this, void 0, void 0, function () {\n            var _this = this;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0: return [4, util.repeatedTry(function () { return _this.isQueryAvailable(query, environment_1.ENV.get('WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION')); })];\n                    case 1:\n                        _a.sent();\n                        return [2, this.getQueryTime(query, environment_1.ENV.get('WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION'))];\n                }\n            });\n        });\n    };\n    GPGPUContext.prototype.getQueryTime = function (query, queryTimerVersion) {\n        if (queryTimerVersion === 0) {\n            return null;\n        }\n        if (queryTimerVersion === 2) {\n            var gl2 = this.gl;\n            var timeElapsedNanos = gl2.getQueryParameter(query, gl2.QUERY_RESULT);\n            return timeElapsedNanos / 1000000;\n        }\n        else {\n            var ext = this.getQueryTimerExtensionWebGL1();\n            var timeElapsedNanos = ext.getQueryObjectEXT(query, ext.QUERY_RESULT_EXT);\n            return timeElapsedNanos / 1000000;\n        }\n    };\n    GPGPUContext.prototype.isQueryAvailable = function (query, queryTimerVersion) {\n        if (queryTimerVersion === 0) {\n            return true;\n        }\n        if (queryTimerVersion === 2) {\n            var gl2 = this.gl;\n            var ext = this.getQueryTimerExtensionWebGL2();\n            var available = gl2.getQueryParameter(query, gl2.QUERY_RESULT_AVAILABLE);\n            if (this.disjoint == null) {\n                this.disjoint = this.gl.getParameter(ext.GPU_DISJOINT_EXT);\n            }\n            return available && !this.disjoint;\n        }\n        else {\n            var ext = this.getQueryTimerExtensionWebGL1();\n            var available = ext.getQueryObjectEXT(query, ext.QUERY_RESULT_AVAILABLE_EXT);\n            if (this.disjoint == null) {\n                this.disjoint = this.gl.getParameter(ext.GPU_DISJOINT_EXT);\n            }\n            return available && !this.disjoint;\n        }\n    };\n    GPGPUContext.prototype.pollFence = function (fenceContext) {\n        var _this = this;\n        return new Promise(function (resolve) {\n            _this.addItemToPoll(function () { return fenceContext.isFencePassed(); }, function () { return resolve(); });\n        });\n    };\n    GPGPUContext.prototype.pollItems = function () {\n        var index = binSearchLastTrue(this.itemsToPoll.map(function (x) { return x.isDoneFn; }));\n        for (var i = 0; i <= index; ++i) {\n            var resolveFn = this.itemsToPoll[i].resolveFn;\n            resolveFn();\n        }\n        this.itemsToPoll = this.itemsToPoll.slice(index + 1);\n    };\n    GPGPUContext.prototype.addItemToPoll = function (isDoneFn, resolveFn) {\n        var _this = this;\n        this.itemsToPoll.push({ isDoneFn: isDoneFn, resolveFn: resolveFn });\n        if (this.itemsToPoll.length > 1) {\n            return;\n        }\n        util.repeatedTry(function () {\n            _this.pollItems();\n            return _this.itemsToPoll.length === 0;\n        });\n    };\n    GPGPUContext.prototype.bindTextureToFrameBuffer = function (texture) {\n        this.throwIfDisposed();\n        webgl_util.bindColorTextureToFramebuffer(this.gl, texture, this.framebuffer);\n        if (this.autoDebugValidate) {\n            webgl_util.validateFramebuffer(this.gl);\n        }\n    };\n    GPGPUContext.prototype.unbindTextureToFrameBuffer = function () {\n        if (this.outputTexture != null) {\n            webgl_util.bindColorTextureToFramebuffer(this.gl, this.outputTexture, this.framebuffer);\n            if (this.autoDebugValidate) {\n                webgl_util.validateFramebuffer(this.gl);\n            }\n        }\n        else {\n            webgl_util.unbindColorTextureFromFramebuffer(this.gl, this.framebuffer);\n        }\n    };\n    GPGPUContext.prototype.downloadMatrixDriver = function (texture, downloadAndDecode) {\n        this.bindTextureToFrameBuffer(texture);\n        var result = downloadAndDecode();\n        this.unbindTextureToFrameBuffer();\n        return result;\n    };\n    GPGPUContext.prototype.setOutputMatrixTextureDriver = function (outputMatrixTextureMaybePacked, width, height) {\n        this.throwIfDisposed();\n        var gl = this.gl;\n        webgl_util.bindColorTextureToFramebuffer(gl, outputMatrixTextureMaybePacked, this.framebuffer);\n        if (this.autoDebugValidate) {\n            webgl_util.validateFramebuffer(gl);\n        }\n        this.outputTexture = outputMatrixTextureMaybePacked;\n        webgl_util.callAndCheck(gl, function () { return gl.viewport(0, 0, width, height); });\n        webgl_util.callAndCheck(gl, function () { return gl.scissor(0, 0, width, height); });\n    };\n    GPGPUContext.prototype.setOutputMatrixWriteRegionDriver = function (x, y, width, height) {\n        var _this = this;\n        this.throwIfDisposed();\n        webgl_util.callAndCheck(this.gl, function () { return _this.gl.scissor(x, y, width, height); });\n    };\n    GPGPUContext.prototype.throwIfDisposed = function () {\n        if (this.disposed) {\n            throw new Error('Attempted to use disposed GPGPUContext.');\n        }\n    };\n    GPGPUContext.prototype.throwIfNoProgram = function () {\n        if (this.program == null) {\n            throw new Error('No GPU program is currently set.');\n        }\n    };\n    return GPGPUContext;\n}());\nexports.GPGPUContext = GPGPUContext;\nfunction binSearchLastTrue(arr) {\n    var start = 0;\n    var end = arr.length - 1;\n    var best = -1;\n    while (start <= end) {\n        var mid = (start + end) >> 1;\n        var isDone = arr[mid]();\n        if (isDone) {\n            best = mid;\n            start = mid + 1;\n        }\n        else {\n            end = mid - 1;\n        }\n    }\n    return best;\n}\nexports.binSearchLastTrue = binSearchLastTrue;\n\n},{\"../../environment\":55,\"../../util\":180,\"./gpgpu_util\":92,\"./tex_util\":112,\"./webgl_util\":117}],91:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util = require(\"../../util\");\nvar shader_compiler = require(\"./shader_compiler\");\nfunction compileProgram(gpgpu, program, inputs, output) {\n    var userCode = program.userCode;\n    var inputInfos = inputs.map(function (input, i) {\n        var shapeInfo = {\n            logicalShape: input.tensor.shape,\n            texShape: input.isUniform ? null : input.texData.texShape,\n            isUniform: input.isUniform\n        };\n        return { name: program.variableNames[i], shapeInfo: shapeInfo };\n    });\n    var inShapeInfos = inputInfos.map(function (x) { return x.shapeInfo; });\n    var outShapeInfo = {\n        logicalShape: output.tensor.shape,\n        texShape: output.texData.texShape,\n        isUniform: false\n    };\n    var source = shader_compiler.makeShader(inputInfos, outShapeInfo, userCode, program.supportsBroadcasting === true);\n    var webGLProgram = gpgpu.createProgram(source);\n    var uniformLocations = {};\n    for (var i = 0; i < program.variableNames.length; i++) {\n        var uniformName = program.variableNames[i];\n        var shouldThrow = false;\n        uniformLocations[uniformName] =\n            gpgpu.getUniformLocation(webGLProgram, uniformName, shouldThrow);\n    }\n    return {\n        program: program,\n        source: source,\n        webGLProgram: webGLProgram,\n        uniformLocations: uniformLocations,\n        gpgpu: gpgpu,\n        inShapeInfos: inShapeInfos,\n        outShapeInfo: outShapeInfo\n    };\n}\nexports.compileProgram = compileProgram;\nfunction validateBinaryAndProgram(shapeInfos, inputs) {\n    if (shapeInfos.length !== inputs.length) {\n        throw Error(\"Binary was compiled with \" + shapeInfos.length + \" inputs, but \" +\n            (\"was executed with \" + inputs.length + \" inputs\"));\n    }\n    shapeInfos.forEach(function (s, i) {\n        var shapeA = s.logicalShape;\n        var input = inputs[i];\n        var shapeB = input.tensor.shape;\n        if (!util.arraysEqual(shapeA, shapeB)) {\n            throw Error(\"Binary was compiled with different shapes than \" +\n                (\"the current args. Shapes \" + shapeA + \" and \" + shapeB + \" must match\"));\n        }\n        if (s.isUniform && input.isUniform) {\n            return;\n        }\n        var texShapeA = s.texShape;\n        var texShapeB = input.isUniform ? null : input.texData.texShape;\n        if (!util.arraysEqual(texShapeA, texShapeB)) {\n            throw Error(\"Binary was compiled with different texture shapes than the\" +\n                (\" current args. Shape \" + texShapeA + \" and \" + texShapeB + \" must match\"));\n        }\n    });\n}\nfunction runProgram(binary, inputs, output, customSetup) {\n    validateBinaryAndProgram(binary.inShapeInfos, inputs);\n    validateBinaryAndProgram([binary.outShapeInfo], [output]);\n    var outTex = output.texData.texture;\n    var outTexShape = output.texData.texShape;\n    var gpgpu = binary.gpgpu;\n    gpgpu.setOutputMatrixTexture(outTex, outTexShape[0], outTexShape[1]);\n    gpgpu.setProgram(binary.webGLProgram);\n    inputs.forEach(function (input, i) {\n        var variableName = binary.program.variableNames[i];\n        var variableUniformLocation = binary.uniformLocations[variableName];\n        if (variableUniformLocation != null) {\n            if (input.isUniform) {\n                if (input.tensor.size === 1) {\n                    gpgpu.gl.uniform1f(variableUniformLocation, input.tensor.dataSync()[0]);\n                }\n                else {\n                    var vals = input.tensor.dataSync();\n                    if (!(vals instanceof Float32Array)) {\n                        vals = new Float32Array(vals);\n                    }\n                    gpgpu.gl.uniform1fv(variableUniformLocation, vals);\n                }\n                return;\n            }\n            var tex = input.texData.texture;\n            gpgpu.setInputMatrixTexture(tex, variableUniformLocation, i);\n        }\n    });\n    if (customSetup != null) {\n        customSetup(gpgpu, binary.webGLProgram);\n    }\n    gpgpu.executeProgram();\n}\nexports.runProgram = runProgram;\nfunction makeShaderKey(program, inputs, output) {\n    var keyInputs = '';\n    inputs.concat(output).forEach(function (x) {\n        keyInputs +=\n            x.tensor.shape + \"_\" + (x.isUniform ? 'uniform' : x.texData.texShape);\n    });\n    var keyUserCode = program.userCode;\n    var keyBroadcast = (program.supportsBroadcasting === true).toString();\n    var key = program.constructor.name;\n    key += '_' + keyBroadcast + '_' + keyInputs + '_' + keyUserCode;\n    return key;\n}\nexports.makeShaderKey = makeShaderKey;\n\n},{\"../../util\":180,\"./shader_compiler\":109}],92:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"../../environment\");\nvar tex_util = require(\"./tex_util\");\nvar webgl_util = require(\"./webgl_util\");\nfunction getWebGLContextAttributes() {\n    return {\n        alpha: false,\n        antialias: false,\n        premultipliedAlpha: false,\n        preserveDrawingBuffer: false,\n        depth: false,\n        stencil: false,\n        failIfMajorPerformanceCaveat: true\n    };\n}\nexports.getWebGLContextAttributes = getWebGLContextAttributes;\nfunction createWebGLContext(canvas) {\n    var attributes = getWebGLContextAttributes();\n    var gl;\n    if (canvas != null) {\n        gl = webgl_util.createWebGLRenderingContextFromCanvas(canvas, attributes);\n    }\n    else {\n        gl = webgl_util.createWebGLRenderingContext(attributes);\n    }\n    webgl_util.callAndCheck(gl, function () { return gl.disable(gl.DEPTH_TEST); });\n    webgl_util.callAndCheck(gl, function () { return gl.disable(gl.STENCIL_TEST); });\n    webgl_util.callAndCheck(gl, function () { return gl.disable(gl.BLEND); });\n    webgl_util.callAndCheck(gl, function () { return gl.disable(gl.DITHER); });\n    webgl_util.callAndCheck(gl, function () { return gl.disable(gl.POLYGON_OFFSET_FILL); });\n    webgl_util.callAndCheck(gl, function () { return gl.disable(gl.SAMPLE_COVERAGE); });\n    webgl_util.callAndCheck(gl, function () { return gl.enable(gl.SCISSOR_TEST); });\n    webgl_util.callAndCheck(gl, function () { return gl.enable(gl.CULL_FACE); });\n    webgl_util.callAndCheck(gl, function () { return gl.cullFace(gl.BACK); });\n    return gl;\n}\nexports.createWebGLContext = createWebGLContext;\nfunction createVertexShader(gl) {\n    var vertexShaderSource = \"\\n    precision highp float;\\n    attribute vec3 clipSpacePos;\\n    attribute vec2 uv;\\n    varying vec2 resultUV;\\n\\n    void main() {\\n      gl_Position = vec4(clipSpacePos, 1);\\n      resultUV = uv;\\n    }\";\n    return webgl_util.createVertexShader(gl, vertexShaderSource);\n}\nexports.createVertexShader = createVertexShader;\nfunction createVertexBuffer(gl) {\n    var vertexArray = new Float32Array([-1, 1, 0, 0, 1, -1, -1, 0, 0, 0, 1, 1, 0, 1, 1, 1, -1, 0, 1, 0]);\n    return webgl_util.createStaticVertexBuffer(gl, vertexArray);\n}\nexports.createVertexBuffer = createVertexBuffer;\nfunction createIndexBuffer(gl) {\n    var triangleVertexIndices = new Uint16Array([0, 1, 2, 2, 1, 3]);\n    return webgl_util.createStaticIndexBuffer(gl, triangleVertexIndices);\n}\nexports.createIndexBuffer = createIndexBuffer;\nfunction getTextureConfig(gl, textureHalfFloatExtension) {\n    var glany = gl;\n    var internalFormatFloat;\n    var internalFormatHalfFloat;\n    var internalFormatPackedFloat;\n    var textureFormatFloat;\n    var downloadTextureFormat;\n    var downloadUnpackNumChannels;\n    var defaultNumChannels;\n    var textureTypeHalfFloat;\n    if (environment_1.ENV.get('WEBGL_VERSION') === 2) {\n        internalFormatFloat = glany.R32F;\n        internalFormatHalfFloat = glany.R16F;\n        internalFormatPackedFloat = glany.RGBA32F;\n        textureFormatFloat = glany.RED;\n        downloadUnpackNumChannels = 4;\n        defaultNumChannels = 1;\n        textureTypeHalfFloat = glany.HALF_FLOAT;\n    }\n    else {\n        internalFormatFloat = gl.RGBA;\n        internalFormatHalfFloat = gl.RGBA;\n        internalFormatPackedFloat = glany.RGBA;\n        textureFormatFloat = gl.RGBA;\n        downloadUnpackNumChannels = 4;\n        defaultNumChannels = 4;\n        textureTypeHalfFloat = textureHalfFloatExtension != null ?\n            textureHalfFloatExtension.HALF_FLOAT_OES :\n            null;\n    }\n    downloadTextureFormat = gl.RGBA;\n    return {\n        internalFormatFloat: internalFormatFloat,\n        internalFormatHalfFloat: internalFormatHalfFloat,\n        internalFormatPackedFloat: internalFormatPackedFloat,\n        textureFormatFloat: textureFormatFloat,\n        downloadTextureFormat: downloadTextureFormat,\n        downloadUnpackNumChannels: downloadUnpackNumChannels,\n        defaultNumChannels: defaultNumChannels,\n        textureTypeHalfFloat: textureTypeHalfFloat\n    };\n}\nexports.getTextureConfig = getTextureConfig;\nfunction createAndConfigureTexture(gl, width, height, internalFormat, textureFormat, textureType) {\n    webgl_util.validateTextureSize(gl, width, height);\n    var texture = webgl_util.createTexture(gl);\n    var tex2d = gl.TEXTURE_2D;\n    webgl_util.callAndCheck(gl, function () { return gl.bindTexture(tex2d, texture); });\n    webgl_util.callAndCheck(gl, function () { return gl.texParameteri(tex2d, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); });\n    webgl_util.callAndCheck(gl, function () { return gl.texParameteri(tex2d, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); });\n    webgl_util.callAndCheck(gl, function () { return gl.texParameteri(tex2d, gl.TEXTURE_MIN_FILTER, gl.NEAREST); });\n    webgl_util.callAndCheck(gl, function () { return gl.texParameteri(tex2d, gl.TEXTURE_MAG_FILTER, gl.NEAREST); });\n    webgl_util.callAndCheck(gl, function () { return gl.texImage2D(tex2d, 0, internalFormat, width, height, 0, textureFormat, textureType, null); });\n    webgl_util.callAndCheck(gl, function () { return gl.bindTexture(gl.TEXTURE_2D, null); });\n    return texture;\n}\nfunction createFloat32MatrixTexture(gl, rows, columns, textureConfig) {\n    var _a = tex_util.getUnpackedMatrixTextureShapeWidthHeight(rows, columns), width = _a[0], height = _a[1];\n    return createAndConfigureTexture(gl, width, height, textureConfig.internalFormatFloat, textureConfig.textureFormatFloat, gl.FLOAT);\n}\nexports.createFloat32MatrixTexture = createFloat32MatrixTexture;\nfunction createFloat16MatrixTexture(gl, rows, columns, textureConfig) {\n    var _a = tex_util.getUnpackedMatrixTextureShapeWidthHeight(rows, columns), width = _a[0], height = _a[1];\n    return createAndConfigureTexture(gl, width, height, textureConfig.internalFormatFloat, textureConfig.textureFormatFloat, textureConfig.textureTypeHalfFloat);\n}\nexports.createFloat16MatrixTexture = createFloat16MatrixTexture;\nfunction createUnsignedBytesMatrixTexture(gl, rows, columns, textureConfig) {\n    var _a = tex_util.getUnpackedMatrixTextureShapeWidthHeight(rows, columns), width = _a[0], height = _a[1];\n    return createAndConfigureTexture(gl, width, height, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE);\n}\nexports.createUnsignedBytesMatrixTexture = createUnsignedBytesMatrixTexture;\nfunction createPackedMatrixTexture(gl, rows, columns, textureConfig) {\n    var _a = tex_util.getPackedMatrixTextureShapeWidthHeight(rows, columns), width = _a[0], height = _a[1];\n    return createAndConfigureTexture(gl, width, height, textureConfig.internalFormatPackedFloat, gl.RGBA, gl.FLOAT);\n}\nexports.createPackedMatrixTexture = createPackedMatrixTexture;\nfunction bindVertexProgramAttributeStreams(gl, program, vertexBuffer) {\n    var posOffset = 0;\n    var uvOffset = 3 * 4;\n    var stride = (3 * 4) + (2 * 4);\n    webgl_util.callAndCheck(gl, function () { return gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer); });\n    var success = webgl_util.bindVertexBufferToProgramAttribute(gl, program, 'clipSpacePos', vertexBuffer, 3, stride, posOffset);\n    return success &&\n        webgl_util.bindVertexBufferToProgramAttribute(gl, program, 'uv', vertexBuffer, 2, stride, uvOffset);\n}\nexports.bindVertexProgramAttributeStreams = bindVertexProgramAttributeStreams;\nfunction uploadPixelDataToTexture(gl, texture, pixels) {\n    webgl_util.callAndCheck(gl, function () { return gl.bindTexture(gl.TEXTURE_2D, texture); });\n    webgl_util.callAndCheck(gl, function () { return gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, pixels); });\n    webgl_util.callAndCheck(gl, function () { return gl.bindTexture(gl.TEXTURE_2D, null); });\n}\nexports.uploadPixelDataToTexture = uploadPixelDataToTexture;\nfunction uploadDataToTexture(gl, texture, width, height, data, textureFormat) {\n    webgl_util.validateTextureSize(gl, width, height);\n    webgl_util.callAndCheck(gl, function () { return gl.bindTexture(gl.TEXTURE_2D, texture); });\n    webgl_util.callAndCheck(gl, function () { return gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, width, height, textureFormat, gl.FLOAT, data); });\n    webgl_util.callAndCheck(gl, function () { return gl.bindTexture(gl.TEXTURE_2D, null); });\n}\nfunction uploadMatrixToTexture(gl, texture, rows, columns, matrix, numChannels, textureConfig) {\n    var _a = tex_util.getUnpackedMatrixTextureShapeWidthHeight(rows, columns), w = _a[0], h = _a[1];\n    var unpackedArray;\n    if (textureConfig.defaultNumChannels === 1) {\n        unpackedArray = matrix;\n    }\n    else {\n        unpackedArray =\n            new Float32Array(tex_util.getUnpackedArraySizeFromMatrixSize(matrix.length, numChannels));\n        tex_util.encodeMatrixToUnpackedArray(matrix, unpackedArray, numChannels);\n    }\n    uploadDataToTexture(gl, texture, w, h, unpackedArray, textureConfig.textureFormatFloat);\n}\nexports.uploadMatrixToTexture = uploadMatrixToTexture;\nfunction uploadMatrixToPackedTexture(gl, texture, rows, columns, matrix, textureConfig) {\n    var _a = tex_util.getPackedMatrixTextureShapeWidthHeight(rows, columns), w = _a[0], h = _a[1];\n    var packedRGBA = new Float32Array(tex_util.getPackedRGBAArraySizeFromMatrixShape(rows, columns));\n    tex_util.encodeMatrixToPackedRGBA(matrix, rows, columns, packedRGBA);\n    uploadDataToTexture(gl, texture, w, h, packedRGBA, gl.RGBA);\n}\nexports.uploadMatrixToPackedTexture = uploadMatrixToPackedTexture;\nfunction maybeCreateBufferFromOutputTexture(gl, texture, rows, columns, textureConfig) {\n    var bufferOrTexture = texture;\n    if (environment_1.ENV.get('WEBGL_VERSION') === 2) {\n        var gl2_1 = gl;\n        var buffer_1 = gl2_1.createBuffer();\n        webgl_util.callAndCheck(gl, function () { return gl.bindBuffer(gl2_1.PIXEL_PACK_BUFFER, buffer_1); });\n        var bytesPerFloat = 4;\n        var bufferSizeBytes_1 = bytesPerFloat *\n            tex_util.getUnpackedArraySizeFromMatrixSize(rows * columns, textureConfig.downloadUnpackNumChannels);\n        webgl_util.callAndCheck(gl, function () { return gl.bufferData(gl2_1.PIXEL_PACK_BUFFER, bufferSizeBytes_1, gl.STATIC_DRAW); });\n        webgl_util.callAndCheck(gl, function () { return gl2_1.readPixels(0, 0, columns, rows, gl.RGBA, gl.FLOAT, 0); });\n        webgl_util.callAndCheck(gl, function () { return gl.bindBuffer(gl2_1.PIXEL_PACK_BUFFER, null); });\n        bufferOrTexture = buffer_1;\n    }\n    return bufferOrTexture;\n}\nexports.maybeCreateBufferFromOutputTexture = maybeCreateBufferFromOutputTexture;\nfunction downloadFloat32MatrixFromBuffer(gl, buffer, rows, columns, textureConfig) {\n    var gl2 = gl;\n    var downloadTarget = new Float32Array(tex_util.getUnpackedArraySizeFromMatrixSize(rows * columns, textureConfig.downloadUnpackNumChannels));\n    gl2.bindBuffer(gl.ARRAY_BUFFER, buffer);\n    gl2.getBufferSubData(gl.ARRAY_BUFFER, 0, downloadTarget);\n    gl2.bindBuffer(gl.ARRAY_BUFFER, null);\n    var matrix = new Float32Array(rows * columns);\n    tex_util.decodeMatrixFromUnpackedArray(downloadTarget, matrix, textureConfig.downloadUnpackNumChannels);\n    return matrix;\n}\nexports.downloadFloat32MatrixFromBuffer = downloadFloat32MatrixFromBuffer;\nfunction downloadFloat32MatrixFromOutputTexture(gl, rows, columns, textureConfig) {\n    var _a = tex_util.getUnpackedMatrixTextureShapeWidthHeight(rows, columns), w = _a[0], h = _a[1];\n    var downloadTarget = new Float32Array(tex_util.getUnpackedArraySizeFromMatrixSize(rows * columns, textureConfig.downloadUnpackNumChannels));\n    webgl_util.callAndCheck(gl, function () { return gl.readPixels(0, 0, w, h, textureConfig.downloadTextureFormat, gl.FLOAT, downloadTarget); });\n    var matrix = new Float32Array(rows * columns);\n    tex_util.decodeMatrixFromUnpackedArray(downloadTarget, matrix, textureConfig.downloadUnpackNumChannels);\n    return matrix;\n}\nexports.downloadFloat32MatrixFromOutputTexture = downloadFloat32MatrixFromOutputTexture;\nfunction downloadByteEncodedFloatMatrixFromOutputTexture(gl, rows, columns, textureConfig) {\n    var _a = tex_util.getUnpackedMatrixTextureShapeWidthHeight(rows, columns), w = _a[0], h = _a[1];\n    var numChannels = 4;\n    var downloadTarget = new Uint8Array(tex_util.getUnpackedArraySizeFromMatrixSize(rows * columns, numChannels));\n    webgl_util.callAndCheck(gl, function () { return gl.readPixels(0, 0, w, h, textureConfig.downloadTextureFormat, gl.UNSIGNED_BYTE, downloadTarget); });\n    return new Float32Array(downloadTarget.buffer);\n}\nexports.downloadByteEncodedFloatMatrixFromOutputTexture = downloadByteEncodedFloatMatrixFromOutputTexture;\nfunction downloadMatrixFromPackedOutputTexture(gl, rows, columns, textureConfig) {\n    var _a = tex_util.getPackedMatrixTextureShapeWidthHeight(rows, columns), w = _a[0], h = _a[1];\n    var packedRGBA = new Float32Array(tex_util.getPackedRGBAArraySizeFromMatrixShape(rows, columns));\n    webgl_util.callAndCheck(gl, function () { return gl.readPixels(0, 0, w, h, gl.RGBA, gl.FLOAT, packedRGBA); });\n    var matrix = new Float32Array(rows * columns);\n    return tex_util.decodeMatrixFromPackedRGBA(packedRGBA, rows, columns, matrix);\n}\nexports.downloadMatrixFromPackedOutputTexture = downloadMatrixFromPackedOutputTexture;\n\n},{\"../../environment\":55,\"./tex_util\":112,\"./webgl_util\":117}],93:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LRNProgram = (function () {\n    function LRNProgram(xShape, radius, bias, alpha, beta) {\n        this.variableNames = ['x'];\n        this.outputShape = [];\n        var rad = radius;\n        var maxD = xShape[3] - 1;\n        this.outputShape = xShape;\n        var powOperator;\n        var basis = \"float(\" + bias + \") + float(\" + alpha + \") * sum\";\n        if (beta === 0.5) {\n            powOperator = \"inversesqrt(\" + basis + \")\";\n        }\n        else if (beta === 1.0) {\n            powOperator = \"1.0/(\" + basis + \")\";\n        }\n        else {\n            powOperator = \"exp(log(\" + basis + \") * float(-\" + beta + \"));\";\n        }\n        this.userCode = \"\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int b = coords[0];\\n        int r = coords[1];\\n        int c = coords[2];\\n        int d = coords[3];\\n        float x = getX(b, r, c, d);\\n        float sum = 0.0;\\n        for (int j = -\" + rad + \"; j <= \" + rad + \"; j++) {\\n          int idx = d + j;\\n          if (idx >= 0 && idx <=  \" + maxD + \") {\\n            float z = getX(b, r, c, idx);\\n            sum += z * z;\\n          }\\n        }\\n        float val = x * \" + powOperator + \";\\n        setOutput(val);\\n      }\\n    \";\n    }\n    return LRNProgram;\n}());\nexports.LRNProgram = LRNProgram;\n\n},{}],94:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LRNGradProgram = (function () {\n    function LRNGradProgram(inputShape, depthRadius, bias, alpha, beta) {\n        this.variableNames = ['inputImage', 'outputImage', 'dy'];\n        this.outputShape = [];\n        this.outputShape = inputShape;\n        this.depth = inputShape[3];\n        this.depthRadius = depthRadius;\n        this.bias = bias;\n        this.alpha = alpha;\n        this.beta = beta;\n        this.userCode = \"\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int b = coords[0];\\n        int r = coords[1];\\n        int c = coords[2];\\n\\n        float result = 0.0;\\n        for (int d = 0; d < \" + this.depth + \"; ++d) {\\n          int depthBegin = int(max(0.0, float(d - \" + depthRadius + \")));\\n          int depthEnd = int(min(float(\" + this.depth + \"),\\n              float(d + \" + depthRadius + \" + 1)));\\n\\n          const int MIN_DEPTH_BEGIN = 0;\\n          const int MAX_DEPTH_END = \" + this.depth + \";\\n\\n          float norm = 0.0;\\n          for (int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k) {\\n            if (k < depthBegin){\\n              continue;\\n            }\\n            else if (k >= depthBegin && k < depthEnd) {\\n              norm += getInputImage(b, r, c, k) * getInputImage(b, r, c, k);\\n            }\\n            else {\\n              break;\\n            }\\n          }\\n\\n          norm = float(\" + alpha + \") * norm + float(\" + bias + \");\\n\\n          for(int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k){\\n            if (k < depthBegin){\\n              continue;\\n            }\\n            else if (k >= depthBegin && k < depthEnd){\\n              float dyi = -2.0 * float(\" + alpha + \")\\n                * float(\" + beta + \")\\n                * getInputImage(b ,r ,c, k) * getOutputImage(b, r, c, d)\\n                / norm;\\n              if (k == d) {\\n                dyi += pow(norm, -1.0 * \" + beta + \");\\n              }\\n              if (k == coords[3]) {\\n                dyi *= getDy(b, r, c, d);\\n                result += dyi;\\n              }\\n            }\\n            else {\\n              break;\\n            }\\n          }\\n      }\\n      setOutput(result);\\n      }\\n    \";\n    }\n    return LRNGradProgram;\n}());\nexports.LRNGradProgram = LRNGradProgram;\n\n},{}],95:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar MaxPool2DBackpropProgram = (function () {\n    function MaxPool2DBackpropProgram(convInfo) {\n        this.variableNames = ['dy', 'maxPos'];\n        this.outputShape = convInfo.inShape;\n        var filterHeight = convInfo.filterHeight;\n        var filterWidth = convInfo.filterWidth;\n        var strideHeight = convInfo.strideHeight;\n        var strideWidth = convInfo.strideWidth;\n        var padTop = filterHeight - 1 - convInfo.padInfo.top;\n        var padLeft = filterWidth - 1 - convInfo.padInfo.left;\n        var lastIndex = filterHeight * filterWidth - 1;\n        this.userCode = \"\\n      const ivec2 pads = ivec2(\" + padTop + \", \" + padLeft + \");\\n\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int b = coords[0];\\n        int d = coords[3];\\n\\n        ivec2 dyRCCorner = coords.yz - pads;\\n        int dyRCorner = dyRCCorner.x;\\n        int dyCCorner = dyRCCorner.y;\\n\\n        // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\\n        // ? = to be determined. : = across all values in that axis.\\n        float dotProd = 0.0;\\n        for (int wR = 0; wR < \" + filterHeight + \"; wR++) {\\n          float dyR = float(dyRCorner + wR) / \" + strideHeight + \".0;\\n\\n          if (dyR < 0.0 || dyR >= \" + convInfo.outHeight + \".0 || fract(dyR) > 0.0) {\\n            continue;\\n          }\\n          int idyR = int(dyR);\\n\\n          for (int wC = 0; wC < \" + filterWidth + \"; wC++) {\\n            float dyC = float(dyCCorner + wC) / \" + strideWidth + \".0;\\n\\n            if (dyC < 0.0 || dyC >= \" + convInfo.outWidth + \".0 ||\\n                fract(dyC) > 0.0) {\\n              continue;\\n            }\\n            int idyC = int(dyC);\\n\\n            float dyValue = getDy(b, idyR, idyC, d);\\n            int maxPosValue = \" + lastIndex + \" - int(getMaxPos(b, idyR, idyC, d));\\n\\n            // Get the current value, check it against the value from the\\n            // position matrix.\\n            int curPosValue = wR * \" + filterWidth + \" + wC;\\n            float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);\\n\\n            dotProd += dyValue * mask;\\n          }\\n        }\\n        setOutput(dotProd);\\n      }\\n    \";\n    }\n    return MaxPool2DBackpropProgram;\n}());\nexports.MaxPool2DBackpropProgram = MaxPool2DBackpropProgram;\n\n},{}],96:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar MatMulProgram = (function () {\n    function MatMulProgram(aShape, bShape, transposeA, transposeB) {\n        if (transposeA === void 0) { transposeA = false; }\n        if (transposeB === void 0) { transposeB = false; }\n        this.variableNames = ['matrixA', 'matrixB'];\n        var outerShapeA = transposeA ? aShape[1] : aShape[0];\n        var outerShapeB = transposeB ? bShape[0] : bShape[1];\n        var sharedDim = transposeA ? aShape[0] : aShape[1];\n        this.outputShape = [outerShapeA, outerShapeB];\n        var aSnippetFromOffset = function (vec4Offset, indexVar) {\n            return transposeA ? indexVar + \" + \" + vec4Offset + \", aRow\" :\n                \"aRow, \" + indexVar + \" + \" + vec4Offset;\n        };\n        var bSnippetFromOffset = function (vec4Offset, indexVar) {\n            return transposeB ? \"bCol, \" + indexVar + \" + \" + vec4Offset :\n                indexVar + \" + \" + vec4Offset + \", bCol\";\n        };\n        var sharedDimNearestVec4 = Math.floor(sharedDim / 4) * 4;\n        var sharedDimVec4Remainder = sharedDim % 4;\n        this.userCode = \" float dotARowBCol(int aRow, int bCol) {\\n      float result = 0.0;\\n      for (int i = 0; i < \" + sharedDimNearestVec4 + \"; i += 4) {\\n        vec4 a = vec4(\\n          getMatrixA(\" + aSnippetFromOffset(0, 'i') + \"),\\n          getMatrixA(\" + aSnippetFromOffset(1, 'i') + \"),\\n          getMatrixA(\" + aSnippetFromOffset(2, 'i') + \"),\\n          getMatrixA(\" + aSnippetFromOffset(3, 'i') + \")\\n        );\\n        vec4 b = vec4(\\n          getMatrixB(\" + bSnippetFromOffset(0, 'i') + \"),\\n          getMatrixB(\" + bSnippetFromOffset(1, 'i') + \"),\\n          getMatrixB(\" + bSnippetFromOffset(2, 'i') + \"),\\n          getMatrixB(\" + bSnippetFromOffset(3, 'i') + \")\\n        );\\n\\n        result += dot(a, b);\\n      }\\n\\n      if (\" + (sharedDimVec4Remainder === 1) + \") {\\n        result += getMatrixA(\" + aSnippetFromOffset(0, sharedDimNearestVec4) + \") *\\n          getMatrixB(\" + bSnippetFromOffset(0, sharedDimNearestVec4) + \");\\n      } else if (\" + (sharedDimVec4Remainder === 2) + \") {\\n        vec2 a = vec2(\\n          getMatrixA(\" + aSnippetFromOffset(0, sharedDimNearestVec4) + \"),\\n          getMatrixA(\" + aSnippetFromOffset(1, sharedDimNearestVec4) + \")\\n        );\\n        vec2 b = vec2(\\n          getMatrixB(\" + bSnippetFromOffset(0, sharedDimNearestVec4) + \"),\\n          getMatrixB(\" + bSnippetFromOffset(1, sharedDimNearestVec4) + \")\\n        );\\n        result += dot(a, b);\\n      } else if (\" + (sharedDimVec4Remainder === 3) + \") {\\n        vec3 a = vec3(\\n          getMatrixA(\" + aSnippetFromOffset(0, sharedDimNearestVec4) + \"),\\n          getMatrixA(\" + aSnippetFromOffset(1, sharedDimNearestVec4) + \"),\\n          getMatrixA(\" + aSnippetFromOffset(2, sharedDimNearestVec4) + \")\\n        );\\n        vec3 b = vec3(\\n          getMatrixB(\" + bSnippetFromOffset(0, sharedDimNearestVec4) + \"),\\n          getMatrixB(\" + bSnippetFromOffset(1, sharedDimNearestVec4) + \"),\\n          getMatrixB(\" + bSnippetFromOffset(2, sharedDimNearestVec4) + \")\\n        );\\n        result += dot(a, b);\\n      }\\n\\n      return result;\\n    }\\n\\n    void main() {\\n      ivec2 resRC = getOutputCoords();\\n      setOutput(dotARowBCol(resRC.x, resRC.y));\\n    }\\n    \";\n    }\n    return MatMulProgram;\n}());\nexports.MatMulProgram = MatMulProgram;\n\n},{}],97:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar MultinomialProgram = (function () {\n    function MultinomialProgram(batchSize, numOutcomes, numSamples) {\n        this.variableNames = ['probs'];\n        this.outputShape = [batchSize, numSamples];\n        this.userCode = \"\\n      uniform float seed;\\n\\n      void main() {\\n        ivec2 coords = getOutputCoords();\\n        int batch = coords[0];\\n\\n        float r = random(seed);\\n        float cdf = 0.0;\\n\\n        for (int i = 0; i < \" + (numOutcomes - 1) + \"; i++) {\\n          cdf += getProbs(batch, i);\\n\\n          if (r < cdf) {\\n            setOutput(float(i));\\n            return;\\n          }\\n        }\\n\\n        // If no other event happened, last event happened.\\n        setOutput(float(\" + (numOutcomes - 1) + \"));\\n      }\\n    \";\n    }\n    MultinomialProgram.prototype.getCustomSetupFunc = function (seed) {\n        var _this = this;\n        return function (gpgpu, webGLProgram) {\n            if (_this.seedLoc == null) {\n                _this.seedLoc = gpgpu.getUniformLocation(webGLProgram, 'seed');\n            }\n            gpgpu.gl.uniform1f(_this.seedLoc, seed);\n        };\n    };\n    return MultinomialProgram;\n}());\nexports.MultinomialProgram = MultinomialProgram;\n\n},{}],98:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar OneHotProgram = (function () {\n    function OneHotProgram(numIndices, depth, onValue, offValue) {\n        this.variableNames = ['indices'];\n        this.outputShape = [numIndices, depth];\n        this.userCode = \"\\n      void main() {\\n        ivec2 coords = getOutputCoords();\\n        int index = round(getIndices(coords.x));\\n        setOutput(mix(float(\" + offValue + \"), float(\" + onValue + \"),\\n                      float(index == coords.y)));\\n      }\\n    \";\n    }\n    return OneHotProgram;\n}());\nexports.OneHotProgram = OneHotProgram;\n\n},{}],99:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shader_compiler_1 = require(\"./shader_compiler\");\nvar PadProgram = (function () {\n    function PadProgram(xShape, paddings, constantValue) {\n        this.variableNames = ['x'];\n        this.outputShape = paddings.map(function (p, i) { return p[0] + xShape[i] + p[1]; });\n        var rank = xShape.length;\n        var type = shader_compiler_1.getCoordsDataType(rank);\n        var start = paddings.map(function (p) { return p[0]; }).join(',');\n        var end = paddings.map(function (p, i) { return p[0] + xShape[i]; }).join(',');\n        var unpackedCoords = ['coords[0]', 'coords[1]', 'coords[2]', 'coords[3]'].slice(0, rank);\n        if (rank === 1) {\n            this.userCode = \"\\n        int start = \" + start + \";\\n        int end = \" + end + \";\\n\\n        void main() {\\n          int outC = getOutputCoords();\\n          if (outC < start || outC >= end) {\\n            setOutput(float(\" + constantValue + \"));\\n          } else {\\n            setOutput(getX(outC - start));\\n          }\\n        }\\n      \";\n            return;\n        }\n        this.userCode = \"\\n      \" + type + \" start = \" + type + \"(\" + start + \");\\n      \" + type + \" end = \" + type + \"(\" + end + \");\\n\\n      void main() {\\n        \" + type + \" outC = getOutputCoords();\\n        if (any(lessThan(outC, start)) || any(greaterThanEqual(outC, end))) {\\n          setOutput(float(\" + constantValue + \"));\\n        } else {\\n          \" + type + \" coords = outC - start;\\n          setOutput(getX(\" + unpackedCoords + \"));\\n        }\\n      }\\n    \";\n    }\n    return PadProgram;\n}());\nexports.PadProgram = PadProgram;\n\n},{\"./shader_compiler\":109}],100:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Pool2DProgram = (function () {\n    function Pool2DProgram(convInfo, poolType, computePositions) {\n        this.variableNames = ['x'];\n        if (poolType === 'avg' && computePositions) {\n            throw new Error('Cannot compute positions for average pool.');\n        }\n        var filterHeight = convInfo.filterHeight;\n        var filterWidth = convInfo.filterWidth;\n        var strideHeight = convInfo.strideHeight;\n        var strideWidth = convInfo.strideWidth;\n        var padTop = convInfo.padInfo.top;\n        var padLeft = convInfo.padInfo.left;\n        this.outputShape = convInfo.outShape;\n        var isAvgPool = poolType === 'avg';\n        var initializationValue = '0.0';\n        if (!isAvgPool) {\n            initializationValue = '-1.0 / 0.0';\n        }\n        if (computePositions) {\n            var compareOp_1 = '>=';\n            this.userCode = \"\\n        const ivec2 strides = ivec2(\" + strideHeight + \", \" + strideWidth + \");\\n        const ivec2 pads = ivec2(\" + padTop + \", \" + padLeft + \");\\n\\n        void main() {\\n          ivec4 coords = getOutputCoords();\\n          int batch = coords[0];\\n          int d = coords[3];\\n\\n          ivec2 xRCCorner = coords.yz * strides - pads;\\n          int xRCorner = xRCCorner.x;\\n          int xCCorner = xRCCorner.y;\\n\\n          // max/min x(?, ?, d) to get y(yR, yC, d).\\n          // ? = to be determined\\n          float minMaxValue = 0.0;\\n          float minMaxValueFound = 0.0;\\n          int minMaxPosition = 0;\\n          float avgValue = 0.0;\\n\\n          for (int wR = 0; wR < \" + filterHeight + \"; wR++) {\\n            int xR = xRCorner + wR;\\n\\n            if (xR < 0 || xR >= \" + convInfo.inHeight + \") {\\n              continue;\\n            }\\n\\n            for (int wC = 0; wC < \" + filterWidth + \"; wC++) {\\n              int xC = xCCorner + wC;\\n\\n              if (xC < 0 || xC >= \" + convInfo.inWidth + \") {\\n                continue;\\n              }\\n\\n              float value = getX(batch, xR, xC, d);\\n\\n              // If a min / max value has already been found, use it. If not,\\n              // use the current value.\\n              float currMinMaxValue = mix(\\n                  value, minMaxValue, minMaxValueFound);\\n              if (value \" + compareOp_1 + \" currMinMaxValue) {\\n                minMaxValue = value;\\n                minMaxValueFound = 1.0;\\n                minMaxPosition = wR * \" + filterWidth + \" + wC;\\n              }\\n            }\\n          }\\n          setOutput(float(minMaxPosition));\\n        }\\n      \";\n            return;\n        }\n        var compareOp = 'max';\n        var returnValue = poolType + \"(\" + poolType + \"(\" + poolType + \"(\" +\n            'minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])';\n        if (poolType === 'avg') {\n            returnValue = \"avgValue / count\";\n        }\n        var filterWidthNearestVec4 = Math.floor(filterWidth / 4) * 4;\n        var filterWidthVec4Remainder = filterWidth % 4;\n        var updateSnippet = \"\\n      if (\" + isAvgPool + \") {\\n        avgValue += dot(values, ones);\\n      } else {\\n        minMaxValue = \" + compareOp + \"(values, minMaxValue);\\n      }\\n    \";\n        this.userCode = \"\\n      const ivec2 strides = ivec2(\" + strideHeight + \", \" + strideWidth + \");\\n      const ivec2 pads = ivec2(\" + padTop + \", \" + padLeft + \");\\n      const float initializationValue = \" + initializationValue + \";\\n      const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\\n\\n      float count = 0.0;\\n\\n      float getValue(int batch, int xR, int xC, int d) {\\n        if (xC < 0 || xC >= \" + convInfo.inWidth + \") {\\n          return initializationValue;\\n        }\\n        count += 1.0;\\n        return getX(batch, xR, xC, d);\\n      }\\n\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int batch = coords[0];\\n        int d = coords[3];\\n\\n        ivec2 xRCCorner = coords.yz * strides - pads;\\n        int xRCorner = xRCCorner.x;\\n        int xCCorner = xRCCorner.y;\\n\\n        // max/min x(?, ?, d) to get y(yR, yC, d).\\n        // ? = to be determined\\n        vec4 minMaxValue = vec4(\" + initializationValue + \");\\n        float avgValue = 0.0;\\n        count = 0.0;\\n\\n        for (int wR = 0; wR < \" + filterHeight + \"; wR++) {\\n          int xR = xRCorner + wR;\\n\\n          if (xR < 0 || xR >= \" + convInfo.inHeight + \") {\\n            continue;\\n          }\\n\\n          for (int wC = 0; wC < \" + filterWidthNearestVec4 + \"; wC += 4) {\\n            int xC = xCCorner + wC;\\n\\n            vec4 values = vec4(\\n              getValue(batch, xR, xC, d),\\n              getValue(batch, xR, xC + 1, d),\\n              getValue(batch, xR, xC + 2, d),\\n              getValue(batch, xR, xC + 3, d)\\n            );\\n\\n            \" + updateSnippet + \"\\n          }\\n\\n          int xC = xCCorner + \" + filterWidthNearestVec4 + \";\\n          if (\" + (filterWidthVec4Remainder === 1) + \") {\\n            vec4 values = vec4(\\n              getValue(batch, xR, xC, d),\\n              initializationValue,\\n              initializationValue,\\n              initializationValue\\n            );\\n\\n            \" + updateSnippet + \"\\n          } else if (\" + (filterWidthVec4Remainder === 2) + \") {\\n            vec4 values = vec4(\\n              getValue(batch, xR, xC, d),\\n              getValue(batch, xR, xC + 1, d),\\n              initializationValue,\\n              initializationValue\\n            );\\n\\n            \" + updateSnippet + \"\\n          } else if (\" + (filterWidthVec4Remainder === 3) + \") {\\n            vec4 values = vec4(\\n              getValue(batch, xR, xC, d),\\n              getValue(batch, xR, xC + 1, d),\\n              getValue(batch, xR, xC + 2, d),\\n              initializationValue\\n            );\\n\\n            \" + updateSnippet + \"\\n          }\\n        }\\n        setOutput(\" + returnValue + \");\\n      }\\n    \";\n    }\n    return Pool2DProgram;\n}());\nexports.Pool2DProgram = Pool2DProgram;\n\n},{}],101:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ReduceProgram = (function () {\n    function ReduceProgram(reduceInfo, reduceType) {\n        this.variableNames = ['x'];\n        var windowSize = reduceInfo.windowSize;\n        var batchSize = reduceInfo.batchSize;\n        var inSize = reduceInfo.inSize;\n        var outSize = Math.ceil(inSize / windowSize);\n        this.outputShape = [batchSize, outSize];\n        var initializationValue = '0.0';\n        var compareOp = \"\";\n        if (reduceType === 'min') {\n            initializationValue = '1.0 / 0.0';\n            compareOp = \"min\";\n        }\n        else if (reduceType === 'max') {\n            initializationValue = '-1.0 / 0.0';\n            compareOp = \"max\";\n        }\n        var returnValue = reduceType + \"(\" + reduceType + \"(\" + reduceType + \"(\" +\n            'minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])';\n        if (reduceType === 'sum') {\n            returnValue = \"sumValue\";\n        }\n        else if (reduceType === 'all') {\n            returnValue = \"allValue\";\n        }\n        else if (reduceType === 'any') {\n            returnValue = \"anyValue\";\n        }\n        var windowSizeNearestVec4 = Math.floor(windowSize / 4) * 4;\n        var windowSizeVec4Remainder = windowSize % 4;\n        var updateSnippet = \"\\n      if (\" + (reduceType === 'sum') + \") {\\n        sumValue += dot(values, ones);\\n      } else {\\n        minMaxValue = \" + compareOp + \"(values, minMaxValue);\\n      }\\n    \";\n        var vecType = \"vec4\";\n        if (reduceType === 'all') {\n            initializationValue = '1.0';\n            updateSnippet = \"\\n        bool reducedAllValue = all(values);\\n        float floatedReducedAllValue = float(reducedAllValue);\\n        allValue = float(allValue >= 1.0 && floatedReducedAllValue >= 1.0);\\n      \";\n            vecType = \"bvec4\";\n        }\n        else if (reduceType === 'any') {\n            initializationValue = '0.0';\n            updateSnippet = \"\\n        bool reducedAnyValue = any(values);\\n        float floatedReducedAnyValue = float(reducedAnyValue);\\n        anyValue = float(anyValue >= 1.0 || floatedReducedAnyValue >= 1.0);\\n      \";\n            vecType = \"bvec4\";\n        }\n        var checkOutOfBounds = '';\n        if (inSize % windowSize > 0) {\n            checkOutOfBounds = \"\\n        if (inIdx < 0 || inIdx >= \" + inSize + \") {\\n          return initializationValue;\\n        }\\n      \";\n        }\n        this.userCode = \"\\n      const float initializationValue = \" + initializationValue + \";\\n      const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\\n\\n      float getValue(int batch, int inIdx) {\\n        \" + checkOutOfBounds + \"\\n        return getX(batch, inIdx);\\n      }\\n\\n      void main() {\\n        ivec2 coords = getOutputCoords();\\n        int batch = coords[0];\\n        int outIdx = coords[1];\\n        int inOffset = outIdx * \" + windowSize + \";\\n\\n        vec4 minMaxValue = vec4(\" + initializationValue + \");\\n        float sumValue = 0.0;\\n        float allValue = 1.0;\\n        float anyValue = 0.0;\\n\\n        for (int i = 0; i < \" + windowSizeNearestVec4 + \"; i += 4) {\\n          int inIdx = inOffset + i;\\n          \" + vecType + \" values = \" + vecType + \"(\\n            getValue(batch, inIdx),\\n            getValue(batch, inIdx + 1),\\n            getValue(batch, inIdx + 2),\\n            getValue(batch, inIdx + 3)\\n          );\\n\\n          \" + updateSnippet + \"\\n        }\\n\\n        int inIdx = inOffset + \" + windowSizeNearestVec4 + \";\\n        if (\" + (windowSizeVec4Remainder === 1) + \") {\\n          \" + vecType + \" values = \" + vecType + \"(\\n            getValue(batch, inIdx),\\n            initializationValue,\\n            initializationValue,\\n            initializationValue\\n          );\\n\\n          \" + updateSnippet + \"\\n        } else if (\" + (windowSizeVec4Remainder === 2) + \") {\\n          \" + vecType + \" values = \" + vecType + \"(\\n            getValue(batch, inIdx),\\n            getValue(batch, inIdx + 1),\\n            initializationValue,\\n            initializationValue\\n          );\\n\\n          \" + updateSnippet + \"\\n        } else if (\" + (windowSizeVec4Remainder === 3) + \") {\\n          \" + vecType + \" values = \" + vecType + \"(\\n            getValue(batch, inIdx),\\n            getValue(batch, inIdx + 1),\\n            getValue(batch, inIdx + 2),\\n            initializationValue\\n          );\\n\\n          \" + updateSnippet + \"\\n        }\\n        setOutput(\" + returnValue + \");\\n      }\\n    \";\n    }\n    return ReduceProgram;\n}());\nexports.ReduceProgram = ReduceProgram;\n\n},{}],102:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ResizeBilinearBackpropProgram = (function () {\n    function ResizeBilinearBackpropProgram(dy, x, alignCorners) {\n        this.variableNames = ['dy'];\n        this.outputShape = [];\n        this.outputShape = x.shape;\n        var _a = x.shape, xHeight = _a[1], xWidth = _a[2];\n        var _b = dy.shape, yHeight = _b[1], yWidth = _b[2];\n        var effectiveXSize = [\n            (alignCorners && yHeight > 1) ? xHeight - 1 : xHeight,\n            (alignCorners && yWidth > 1) ? xWidth - 1 : xWidth\n        ];\n        var effectiveYSize = [\n            (alignCorners && yHeight > 1) ? yHeight - 1 : yHeight,\n            (alignCorners && yWidth > 1) ? yWidth - 1 : yWidth\n        ];\n        var heightScale = effectiveXSize[0] / effectiveYSize[0];\n        var widthScale = effectiveXSize[1] / effectiveYSize[1];\n        var invHeightScale = 1 / heightScale;\n        var invWidthScale = 1 / widthScale;\n        var winHeight = (Math.ceil(invHeightScale) * 2) + 2;\n        var winWidth = (Math.ceil(invWidthScale) * 2) + 2;\n        this.userCode = \"\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int b = coords[0];\\n        int d = coords[3];\\n        int r = coords[1];\\n        int c = coords[2];\\n\\n        float accumulator = 0.0;\\n\\n        const float heightScale = float(\" + heightScale + \");\\n        const float widthScale = float(\" + widthScale + \");\\n\\n        const float invHeightScale = float(\" + invHeightScale + \");\\n        const float invWidthScale = float(\" + invWidthScale + \");\\n\\n        const int winHeight = int(\" + winHeight + \");\\n        const int winWidth = int(\" + winWidth + \");\\n\\n        // Compute bounds for where in dy we will look\\n        float startRLerp = floor(float(r) * invHeightScale);\\n        int startDyR = int(startRLerp - float(winHeight / 2));\\n\\n        float startCLerp = floor(float(c) * invWidthScale);\\n        int startDyC = int(startCLerp - float(winWidth / 2));\\n\\n        // Loop over dy\\n        for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\\n          int dyR = dyROffset + startDyR;\\n\\n          // Guard against the window exceeding the bounds of dy\\n          if (dyR < 0 || dyR >= \" + yHeight + \") {\\n            continue;\\n          }\\n\\n          for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\\n            int dyC = dyCOffset + startDyC;\\n\\n            // Guard against the window exceeding the bounds of dy\\n            if (dyC < 0 || dyC >= \" + yWidth + \") {\\n              continue;\\n            }\\n\\n            float dxR = float(dyR) * heightScale;\\n            int topDxRIndex = int(floor(dxR));\\n            int bottomDxRIndex = int(min(ceil(dxR), \" + (xHeight - 1) + \".0));\\n            float dxRLerp = dxR - float(topDxRIndex);\\n            float inverseDxRLerp = 1.0 - dxRLerp;\\n\\n            float dxC = float(dyC) * widthScale;\\n            int leftDxCIndex = int(floor(dxC));\\n            int rightDxCIndex = int(min(ceil(dxC), \" + (xWidth - 1) + \".0));\\n            float dxCLerp = dxC - float(leftDxCIndex);\\n            float inverseDxCLerp = 1.0 - dxCLerp;\\n\\n            if (r == topDxRIndex && c == leftDxCIndex) {\\n              // topLeft\\n              accumulator +=\\n                getDy(b, dyR, dyC, d) * inverseDxRLerp * inverseDxCLerp;\\n            }\\n\\n            if (r == topDxRIndex && c == rightDxCIndex) {\\n              // topRight\\n              accumulator += getDy(b, dyR, dyC, d) * inverseDxRLerp * dxCLerp;\\n            }\\n\\n            if (r == bottomDxRIndex && c == leftDxCIndex) {\\n              // bottomLeft\\n              accumulator += getDy(b, dyR, dyC, d) * dxRLerp * inverseDxCLerp;\\n            }\\n\\n            if (r == bottomDxRIndex && c == rightDxCIndex) {\\n              // bottomRight\\n              accumulator += getDy(b, dyR, dyC, d) * dxRLerp * dxCLerp;\\n            }\\n          }\\n        }\\n        // End loop over dy\\n\\n        setOutput(accumulator);\\n      }\\n    \";\n    }\n    return ResizeBilinearBackpropProgram;\n}());\nexports.ResizeBilinearBackpropProgram = ResizeBilinearBackpropProgram;\n\n},{}],103:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ResizeBilinearProgram = (function () {\n    function ResizeBilinearProgram(inputShape, newHeight, newWidth, alignCorners) {\n        this.variableNames = ['A'];\n        this.outputShape = [];\n        var batch = inputShape[0], oldHeight = inputShape[1], oldWidth = inputShape[2], depth = inputShape[3];\n        this.outputShape = [batch, newHeight, newWidth, depth];\n        var effectiveInSize = [\n            (alignCorners && newHeight > 1) ? oldHeight - 1 : oldHeight,\n            (alignCorners && newWidth > 1) ? oldWidth - 1 : oldWidth\n        ];\n        var effectiveOutSize = [\n            (alignCorners && newHeight > 1) ? newHeight - 1 : newHeight,\n            (alignCorners && newWidth > 1) ? newWidth - 1 : newWidth\n        ];\n        this.userCode = \"\\n      const vec2 effectiveInputOverOutputRatioRC = vec2(\\n          \" + effectiveInSize[0] / effectiveOutSize[0] + \",\\n          \" + effectiveInSize[1] / effectiveOutSize[1] + \");\\n      const vec2 inputShapeRC = vec2(\" + oldHeight + \".0, \" + oldWidth + \".0);\\n\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int b = coords[0];\\n        int d = coords[3];\\n        ivec2 yRC = coords.yz;\\n\\n        // Fractional source index.\\n        vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC;\\n\\n        // Compute the four integer indices.\\n        ivec2 sourceFloorRC = ivec2(sourceFracIndexRC);\\n        ivec2 sourceCeilRC = ivec2(\\n          min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));\\n\\n        float topLeft = getA(b, sourceFloorRC.x, sourceFloorRC.y, d);\\n        float bottomLeft = getA(b, sourceCeilRC.x, sourceFloorRC.y, d);\\n        float topRight = getA(b, sourceFloorRC.x, sourceCeilRC.y, d);\\n        float bottomRight = getA(b, sourceCeilRC.x, sourceCeilRC.y, d);\\n\\n        vec2 fracRC = sourceFracIndexRC - vec2(sourceFloorRC);\\n\\n        float top = topLeft + (topRight - topLeft) * fracRC.y;\\n        float bottom = bottomLeft + (bottomRight - bottomLeft) * fracRC.y;\\n        float newValue = top + (bottom - top) * fracRC.x;\\n\\n        setOutput(newValue);\\n      }\\n    \";\n    }\n    return ResizeBilinearProgram;\n}());\nexports.ResizeBilinearProgram = ResizeBilinearProgram;\n\n},{}],104:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ResizeNearestNeigborBackpropProgram = (function () {\n    function ResizeNearestNeigborBackpropProgram(dy, x, alignCorners) {\n        this.variableNames = ['dy'];\n        this.outputShape = [];\n        this.outputShape = x.shape;\n        var _a = x.shape, xHeight = _a[1], xWidth = _a[2];\n        var _b = dy.shape, yHeight = _b[1], yWidth = _b[2];\n        var effectiveXSize = [\n            (alignCorners && yHeight > 1) ? xHeight - 1 : xHeight,\n            (alignCorners && yWidth > 1) ? xWidth - 1 : xWidth\n        ];\n        var effectiveYSize = [\n            (alignCorners && yHeight > 1) ? yHeight - 1 : yHeight,\n            (alignCorners && yWidth > 1) ? yWidth - 1 : yWidth\n        ];\n        var heightScale = effectiveXSize[0] / effectiveYSize[0];\n        var widthScale = effectiveXSize[1] / effectiveYSize[1];\n        var invHeightScale = 1 / heightScale;\n        var invWidthScale = 1 / widthScale;\n        var winHeight = (Math.ceil(invHeightScale) * 2) + 2;\n        var winWidth = (Math.ceil(invWidthScale) * 2) + 2;\n        this.userCode = \"\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int b = coords[0];\\n        int d = coords[3];\\n        int r = coords[1];\\n        int c = coords[2];\\n\\n        float accumulator = 0.0;\\n\\n        const float heightScale = float(\" + heightScale + \");\\n        const float widthScale = float(\" + widthScale + \");\\n\\n        const float invHeightScale = float(\" + invHeightScale + \");\\n        const float invWidthScale = float(\" + invWidthScale + \");\\n\\n        const int winHeight = int(\" + winHeight + \");\\n        const int winWidth = int(\" + winWidth + \");\\n\\n        // Compute bounds for where in dy we will look\\n        float startRLerp = floor(float(r) * invHeightScale);\\n        int startDyR = int(floor(startRLerp - float(winHeight / 2)));\\n\\n        float startCLerp = floor(float(c) * invWidthScale);\\n        int startDyC = int(floor(startCLerp - float(winWidth / 2)));\\n\\n        // Loop over dy\\n        for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\\n          int dyR = dyROffset + startDyR;\\n\\n          // Guard against the window exceeding the bounds of dy\\n          if (dyR < 0 || dyR >= \" + yHeight + \") {\\n            continue;\\n          }\\n\\n          for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\\n            int dyC = dyCOffset + startDyC;\\n\\n            // Guard against the window exceeding the bounds of dy\\n            if (dyC < 0 || dyC >= \" + yWidth + \") {\\n              continue;\\n            }\\n\\n            float sourceFracRow =\\n              float(\" + effectiveXSize[0] + \") *\\n                (float(dyR) / float(\" + effectiveYSize[0] + \"));\\n\\n            float sourceFracCol =\\n                float(\" + effectiveXSize[1] + \") *\\n                  (float(dyC) / float(\" + effectiveYSize[1] + \"));\\n\\n            int sourceNearestRow = int(min(\\n                float(int(\" + xHeight + \") - 1),\\n                \" + alignCorners + \" ? float(round(sourceFracRow)) :\\n                                  float(floor(sourceFracRow))));\\n\\n            int sourceNearestCol = int(min(\\n                float(int(\" + xWidth + \") - 1),\\n                \" + alignCorners + \" ? float(round(sourceFracCol)) :\\n                                  float(floor(sourceFracCol))));\\n\\n            if (r == sourceNearestRow && c == sourceNearestCol) {\\n              accumulator += getDy(b, dyR, dyC, d);\\n            }\\n          }\\n        }\\n        // End loop over dy\\n\\n        setOutput(accumulator);\\n      }\\n    \";\n    }\n    return ResizeNearestNeigborBackpropProgram;\n}());\nexports.ResizeNearestNeigborBackpropProgram = ResizeNearestNeigborBackpropProgram;\n\n},{}],105:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ResizeNearestNeighborProgram = (function () {\n    function ResizeNearestNeighborProgram(inputShape, newHeight, newWidth, alignCorners) {\n        this.variableNames = ['A'];\n        this.outputShape = [];\n        var batch = inputShape[0], oldHeight = inputShape[1], oldWidth = inputShape[2], depth = inputShape[3];\n        this.outputShape = [batch, newHeight, newWidth, depth];\n        var effectiveInSize = [\n            (alignCorners && newHeight > 1) ? oldHeight - 1 : oldHeight,\n            (alignCorners && newWidth > 1) ? oldWidth - 1 : oldWidth\n        ];\n        var effectiveOutSize = [\n            (alignCorners && newHeight > 1) ? newHeight - 1 : newHeight,\n            (alignCorners && newWidth > 1) ? newWidth - 1 : newWidth\n        ];\n        var roundBase = alignCorners ? '0.5' : '0.0';\n        this.userCode = \"\\n      const vec2 effectiveInputOverOutputRatioRC = vec2(\\n          \" + effectiveInSize[0] / effectiveOutSize[0] + \",\\n          \" + effectiveInSize[1] / effectiveOutSize[1] + \");\\n      const vec2 inputShapeRC = vec2(\" + oldHeight + \".0, \" + oldWidth + \".0);\\n\\n      void main() {\\n        ivec4 coords = getOutputCoords();\\n        int b = coords[0];\\n        int d = coords[3];\\n        ivec2 yRC = coords.yz;\\n\\n        // Fractional source index.\\n        vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC;\\n\\n        // Compute the coordinators of nearest neighbor point.\\n        ivec2 sourceNearestRC = ivec2(\\n          min(inputShapeRC - 1.0, floor(sourceFracIndexRC + \" + roundBase + \")));\\n\\n        float newValue = getA(b, sourceNearestRC.x, sourceNearestRC.y, d);\\n\\n        setOutput(newValue);\\n      }\\n    \";\n    }\n    return ResizeNearestNeighborProgram;\n}());\nexports.ResizeNearestNeighborProgram = ResizeNearestNeighborProgram;\n\n},{}],106:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shader_compiler_1 = require(\"./shader_compiler\");\nvar ReverseProgram = (function () {\n    function ReverseProgram(xShape, axis) {\n        this.variableNames = ['x'];\n        var rank = xShape.length;\n        if (rank > 4) {\n            throw new Error(\"WebGL backend: Reverse of rank-\" + rank + \" tensor is not yet supported\");\n        }\n        this.outputShape = xShape;\n        if (rank === 1) {\n            this.userCode = \"\\n        void main() {\\n          int coord = getOutputCoords();\\n          setOutput(getX(\" + xShape[0] + \" - coord - 1));\\n        }\\n      \";\n            return;\n        }\n        var getInCoord = function (i) {\n            if (axis.indexOf(i) !== -1 && xShape[i] !== 1) {\n                return xShape[i] + \" - coords[\" + i + \"] - 1\";\n            }\n            return \"coords[\" + i + \"]\";\n        };\n        var inCoords = xShape.map(function (_, i) { return getInCoord(i); }).join(',');\n        var type = shader_compiler_1.getCoordsDataType(rank);\n        this.userCode = \"\\n      void main() {\\n        \" + type + \" coords = getOutputCoords();\\n        setOutput(getX(\" + inCoords + \"));\\n      }\\n    \";\n    }\n    return ReverseProgram;\n}());\nexports.ReverseProgram = ReverseProgram;\n\n},{\"./shader_compiler\":109}],107:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar SegmentOpProgram = (function () {\n    function SegmentOpProgram(segOpInfo, segOpType) {\n        this.variableNames = ['x', 'segmentIds'];\n        var windowSize = segOpInfo.windowSize;\n        var batchSize = segOpInfo.batchSize;\n        var inSize = segOpInfo.inSize;\n        var numSegments = segOpInfo.numSegments;\n        var outSize = numSegments * Math.ceil(inSize / windowSize);\n        this.outputShape = [batchSize, outSize];\n        var initializationValue = '0.0';\n        var returnValue = \"sumValue\";\n        var windowSizeNearestVec4 = Math.floor(windowSize / 4) * 4;\n        var windowSizeVec4Remainder = windowSize % 4;\n        var updateSnippet = \"\\n        sumValue += dot(values, filter);\\n    \";\n        var checkValueOutOfBounds = '';\n        if (inSize % windowSize > 0) {\n            checkValueOutOfBounds = \"\\n        if (inIdx < 0 || inIdx >= \" + inSize + \") {\\n          return initializationValue;\\n        }\\n      \";\n        }\n        var checkSegmentIdOutOfBounds = '';\n        if (inSize % windowSize > 0) {\n            checkSegmentIdOutOfBounds = \"\\n        if (inIdx < 0 || inIdx >= \" + inSize + \") {\\n          return -1.0;\\n        }\\n      \";\n        }\n        this.userCode = \"\\n      const float initializationValue = \" + initializationValue + \";\\n\\n      float getValue(int batch, int inIdx) {\\n        \" + checkValueOutOfBounds + \"\\n        return getX(batch, inIdx);\\n      }\\n\\n      float getSegmentIdAtIndex(int inIdx) {\\n        \" + checkSegmentIdOutOfBounds + \"\\n        return getSegmentIds(inIdx);\\n      }\\n\\n      void main() {\\n        ivec2 coords = getOutputCoords();\\n        int batch = coords[0];\\n        int outIdx = coords[1];\\n        int inOffset = int(floor(float(outIdx) / float(\\n          \" + numSegments + \")) * float(\" + windowSize + \"));\\n        int currentSeg = int(mod(float(outIdx), float(\" + numSegments + \")));\\n\\n        float sumValue = 0.0;\\n\\n        for (int i = 0; i < \" + windowSizeNearestVec4 + \"; i += 4) {\\n          int inIdx = inOffset + i;\\n          vec4 values = vec4(\\n            getValue(batch, inIdx),\\n            getValue(batch, inIdx + 1),\\n            getValue(batch, inIdx + 2),\\n            getValue(batch, inIdx + 3)\\n          );\\n\\n          vec4 filter = vec4(\\n            int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\\n            int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\\n            int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\\n            int(getSegmentIdAtIndex(inIdx + 3)) == currentSeg ? 1 : 0\\n          );\\n\\n          \" + updateSnippet + \"\\n        }\\n\\n        int inIdx = inOffset + \" + windowSizeNearestVec4 + \";\\n        if (\" + (windowSizeVec4Remainder === 1) + \") {\\n          vec4 values = vec4(\\n            getValue(batch, inIdx),\\n            initializationValue,\\n            initializationValue,\\n            initializationValue\\n          );\\n\\n          int inIdxSeg = int(getSegmentIdAtIndex(inIdx));\\n\\n          vec4 filter = vec4(\\n            int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\\n            0,\\n            0,\\n            0\\n          );\\n\\n          \" + updateSnippet + \"\\n        } else if (\" + (windowSizeVec4Remainder === 2) + \") {\\n          vec4 values = vec4(\\n            getValue(batch, inIdx),\\n            getValue(batch, inIdx + 1),\\n            initializationValue,\\n            initializationValue\\n          );\\n\\n          vec4 filter = vec4(\\n            int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\\n            int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\\n              0,\\n              0\\n          );\\n\\n          \" + updateSnippet + \"\\n        } else if (\" + (windowSizeVec4Remainder === 3) + \") {\\n          vec4 values = vec4(\\n            getValue(batch, inIdx),\\n            getValue(batch, inIdx + 1),\\n            getValue(batch, inIdx + 2),\\n            initializationValue\\n          );\\n\\n          vec4 filter = vec4(\\n            int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\\n            int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\\n            int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\\n            0\\n          );\\n\\n          \" + updateSnippet + \"\\n        }\\n        setOutput(\" + returnValue + \");\\n      }\\n    \";\n    }\n    return SegmentOpProgram;\n}());\nexports.SegmentOpProgram = SegmentOpProgram;\n\n},{}],108:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shader_compiler_1 = require(\"./shader_compiler\");\nvar SelectProgram = (function () {\n    function SelectProgram(cRank, shape, rank) {\n        this.variableNames = ['c', 'a', 'b'];\n        this.outputShape = shape;\n        var cCoords;\n        var abCoords;\n        if (rank > 4) {\n            throw Error(\"Where for rank \" + rank + \" is not yet supported\");\n        }\n        if (rank === 1) {\n            abCoords = \"resRC\";\n            cCoords = \"resRC\";\n        }\n        else {\n            var currentCoords = ['resRC.x', 'resRC.y', 'resRC.z', 'resRC.w'];\n            var cCoordVars = [];\n            var abCoordVars = [];\n            for (var i = 0; i < shape.length; i++) {\n                abCoordVars.push(\"\" + currentCoords[i]);\n                if (i < cRank) {\n                    cCoordVars.push(\"\" + currentCoords[i]);\n                }\n            }\n            cCoords = cCoordVars.join();\n            abCoords = abCoordVars.join();\n        }\n        var dtype = shader_compiler_1.getCoordsDataType(rank);\n        this.userCode = \"\\n      void main() {\\n        \" + dtype + \" resRC = getOutputCoords();\\n        float cVal = getC(\" + cCoords + \");\\n        if (cVal >= 1.0) {\\n          setOutput(getA(\" + abCoords + \"));\\n        } else {\\n          setOutput(getB(\" + abCoords + \"));\\n        }\\n      }\\n    \";\n    }\n    return SelectProgram;\n}());\nexports.SelectProgram = SelectProgram;\n\n},{\"./shader_compiler\":109}],109:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar broadcast_util = require(\"../../ops/broadcast_util\");\nvar util = require(\"../../util\");\nfunction makeShader(inputsInfo, outputShape, userCode, broadcast) {\n    var inputPrefixSnippet = inputsInfo.map(function (x) {\n        var size = util.sizeFromShape(x.shapeInfo.logicalShape);\n        if (x.shapeInfo.isUniform) {\n            return \"uniform float \" + x.name + (size > 1 ? \"[\" + size + \"]\" : '') + \";\";\n        }\n        return \"uniform sampler2D \" + x.name + \";\";\n    });\n    inputPrefixSnippet = inputPrefixSnippet.join('\\n');\n    var inputSamplingSnippet = inputsInfo.map(function (x) { return getInputSamplingSnippet(x, outputShape, broadcast); })\n        .join('\\n');\n    var outTexShape = outputShape.texShape;\n    var outputSamplingSnippet = getOutputSamplingSnippet(outputShape.logicalShape, outTexShape);\n    var source = [\n        SHADER_PREFIX, FLOAT_TEXTURE_SAMPLE_SNIPPET,\n        FLOAT_TEXTURE_SETOUTPUT_SNIPPET, inputPrefixSnippet, outputSamplingSnippet,\n        inputSamplingSnippet, userCode\n    ].join('\\n');\n    return source;\n}\nexports.makeShader = makeShader;\nfunction getSamplerFromInInfo(inInfo) {\n    var shape = inInfo.shapeInfo.logicalShape;\n    switch (shape.length) {\n        case 0:\n            return getSamplerScalar(inInfo);\n        case 1:\n            return getSampler1D(inInfo);\n        case 2:\n            return getSampler2D(inInfo);\n        case 3:\n            return getSampler3D(inInfo);\n        case 4:\n            return getSampler4D(inInfo);\n        case 5:\n            return getSampler5D(inInfo);\n        case 6:\n            return getSampler6D(inInfo);\n        default:\n            throw new Error(shape.length + \"-D input sampling\" +\n                \" is not yet supported\");\n    }\n}\nfunction getInputSamplingSnippet(inInfo, outShapeInfo, broadcast) {\n    var res = getSamplerFlat(inInfo);\n    res += getSamplerFromInInfo(inInfo);\n    if (broadcast ||\n        util.arraysEqual(inInfo.shapeInfo.logicalShape, outShapeInfo.logicalShape)) {\n        res += getSamplerAtOutputCoords(inInfo, outShapeInfo, broadcast);\n    }\n    return res;\n}\nfunction getOutputSamplingSnippet(outShape, outTexShape) {\n    switch (outShape.length) {\n        case 0:\n            return getOutputScalarCoords();\n        case 1:\n            return getOutput1DCoords(outShape, outTexShape);\n        case 2:\n            return getOutput2DCoords(outShape, outTexShape);\n        case 3:\n            return getOutput3DCoords(outShape, outTexShape);\n        case 4:\n            return getOutput4DCoords(outShape, outTexShape);\n        case 5:\n            return getOutput5DCoords(outShape, outTexShape);\n        case 6:\n            return getOutput6DCoords(outShape, outTexShape);\n        default:\n            throw new Error(outShape.length + \"-D output sampling is not yet supported\");\n    }\n}\nvar SAMPLE_1D_SNIPPET = \"\\nvec2 UVfrom1D(int texNumR, int texNumC, int index) {\\n  int texR = index / texNumC;\\n  int texC = index - texR * texNumC;\\n  return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\\n}\\n\";\nvar SAMPLE_2D_SNIPPET = \"\\nvec2 UVfrom2D(int texNumR, int texNumC, int numC, int row, int col) {\\n  int index = row * numC + col;\\n  int texR = index / texNumC;\\n  int texC = index - texR * texNumC;\\n  return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\\n}\\n\";\nvar SAMPLE_3D_SNIPPET = \"\\nvec2 UVfrom3D(int texNumR, int texNumC, int stride0,\\n    int stride1, int row, int col, int depth) {\\n  // Explicitly use integer operations as dot() only works on floats.\\n  int index = row * stride0 + col * stride1 + depth;\\n  int texR = index / texNumC;\\n  int texC = index - texR * texNumC;\\n  return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\\n}\\n\";\nvar SAMPLE_4D_SNIPPET = \"\\nvec2 UVfrom4D(int texNumR, int texNumC, int stride0,\\n    int stride1, int stride2, int row, int col, int depth,\\n    int depth2) {\\n  // Explicitly use integer operations as dot() only works on floats.\\n  int index = row * stride0 + col * stride1 + depth * stride2 + depth2;\\n  int texR = index / texNumC;\\n  int texC = index - texR * texNumC;\\n  return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\\n}\\n\";\nvar SAMPLE_5D_SNIPPET = \"\\nvec2 UVfrom5D(int texNumR, int texNumC, int stride0,\\n    int stride1, int stride2, int stride3, int row, int col, int depth,\\n    int depth2, int depth3) {\\n  // Explicitly use integer operations as dot() only works on floats.\\n  int index = row * stride0 + col * stride1 +\\n              depth * stride2 + depth2 * stride3 + depth3;\\n  int texR = index / texNumC;\\n  int texC = index - texR * texNumC;\\n  return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\\n}\\n\";\nvar SAMPLE_6D_SNIPPET = \"\\nvec2 UVfrom6D(int texNumR, int texNumC, int stride0,\\n    int stride1, int stride2, int stride3, int stride4,\\n    int row, int col, int depth, int depth2, int depth3, int depth4) {\\n  // Explicitly use integer operations as dot() only works on floats.\\n  int index = row * stride0 + col * stride1 + depth * stride2 + depth2 *\\n    stride3 + depth3 * stride4 + depth4;\\n  int texR = index / texNumC;\\n  int texC = index - texR * texNumC;\\n  return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);\\n}\\n\";\nvar FLOAT_TEXTURE_SAMPLE_SNIPPET = \"\\n  float sampleTexture(sampler2D textureSampler, vec2 uv) {\\n    return texture2D(textureSampler, uv).r;\\n  }\\n\";\nvar FLOAT_TEXTURE_SETOUTPUT_SNIPPET = \"\\n  void setOutput(float val) {\\n    gl_FragColor = vec4(val, 0, 0, 0);\\n  }\\n\";\nvar SHADER_PREFIX = \"\\n  precision highp float;\\n  precision highp int;\\n  varying vec2 resultUV;\\n  const vec2 halfCR = vec2(0.5, 0.5);\\n\\n  struct ivec5\\n  {\\n    int x;\\n    int y;\\n    int z;\\n    int w;\\n    int u;\\n  };\\n\\n  struct ivec6\\n  {\\n    int x;\\n    int y;\\n    int z;\\n    int w;\\n    int u;\\n    int v;\\n  };\\n\\n  bool isNaN(float val) {\\n    return (val < 0.0 || 0.0 < val || val == 0.0) ? false : true;\\n  }\\n\\n  bool hasNaN(vec4 values) {\\n    vec4 v1 = values * values;\\n    vec4 v2 = values * values;\\n    return any(notEqual(v1, v2));\\n  }\\n\\n  float getNaN(vec4 values) {\\n    return dot(vec4(1), values);\\n  }\\n\\n  int round(float value) {\\n    return int(floor(value + 0.5));\\n  }\\n\\n  int imod(int x, int y) {\\n    return x - y * (x / y);\\n  }\\n\\n  //Based on the work of Dave Hoskins\\n  //https://www.shadertoy.com/view/4djSRW\\n  #define HASHSCALE1 443.8975\\n  float random(float seed){\\n    vec2 p = resultUV * seed;\\n    vec3 p3  = fract(vec3(p.xyx) * HASHSCALE1);\\n    p3 += dot(p3, p3.yzx + 19.19);\\n    return fract((p3.x + p3.y) * p3.z);\\n  }\\n\\n  \" + SAMPLE_1D_SNIPPET + \"\\n  \" + SAMPLE_2D_SNIPPET + \"\\n  \" + SAMPLE_3D_SNIPPET + \"\\n  \" + SAMPLE_4D_SNIPPET + \"\\n  \" + SAMPLE_5D_SNIPPET + \"\\n  \" + SAMPLE_6D_SNIPPET + \"\\n\";\nfunction getOutputScalarCoords() {\n    return \"\\n    int getOutputCoords() {\\n      return 0;\\n    }\\n  \";\n}\nfunction getOutput1DCoords(shape, texShape) {\n    if (texShape[0] === 1) {\n        return \"\\n      int getOutputCoords() {\\n        return int(resultUV.x * \" + texShape[1] + \".0);\\n      }\\n    \";\n    }\n    if (texShape[1] === 1) {\n        return \"\\n      int getOutputCoords() {\\n        return int(resultUV.y * \" + texShape[0] + \".0);\\n      }\\n    \";\n    }\n    return \"\\n    int getOutputCoords() {\\n      ivec2 resTexRC = ivec2(resultUV.yx *\\n                             vec2(\" + texShape[0] + \", \" + texShape[1] + \"));\\n      return resTexRC.x * \" + texShape[1] + \" + resTexRC.y;\\n    }\\n  \";\n}\nfunction getOutput3DCoords(shape, texShape) {\n    var stride0 = shape[1] * shape[2];\n    var stride1 = shape[2];\n    return \"\\n    ivec3 getOutputCoords() {\\n      ivec2 resTexRC = ivec2(resultUV.yx *\\n                             vec2(\" + texShape[0] + \", \" + texShape[1] + \"));\\n      int index = resTexRC.x * \" + texShape[1] + \" + resTexRC.y;\\n      int r = index / \" + stride0 + \";\\n      index -= r * \" + stride0 + \";\\n      int c = index / \" + stride1 + \";\\n      int d = index - c * \" + stride1 + \";\\n      return ivec3(r, c, d);\\n    }\\n  \";\n}\nfunction getOutput4DCoords(shape, texShape) {\n    var stride2 = shape[3];\n    var stride1 = shape[2] * stride2;\n    var stride0 = shape[1] * stride1;\n    return \"\\n    ivec4 getOutputCoords() {\\n      ivec2 resTexRC = ivec2(resultUV.yx *\\n        vec2(\" + texShape[0] + \", \" + texShape[1] + \"));\\n      int index = resTexRC.x * \" + texShape[1] + \" + resTexRC.y;\\n\\n      int r = index / \" + stride0 + \";\\n      index -= r * \" + stride0 + \";\\n\\n      int c = index / \" + stride1 + \";\\n      index -= c * \" + stride1 + \";\\n\\n      int d = index / \" + stride2 + \";\\n      int d2 = index - d * \" + stride2 + \";\\n\\n      return ivec4(r, c, d, d2);\\n    }\\n  \";\n}\nfunction getOutput5DCoords(shape, texShape) {\n    var stride3 = shape[4];\n    var stride2 = shape[3] * stride3;\n    var stride1 = shape[2] * stride2;\n    var stride0 = shape[1] * stride1;\n    return \"\\n    ivec5 getOutputCoords() {\\n      ivec2 resTexRC = ivec2(resultUV.yx * vec2(\" + texShape[0] + \",\\n                             \" + texShape[1] + \"));\\n\\n      int index = resTexRC.x * \" + texShape[1] + \" + resTexRC.y;\\n\\n      int r = index / \" + stride0 + \";\\n      index -= r * \" + stride0 + \";\\n\\n      int c = index / \" + stride1 + \";\\n      index -= c * \" + stride1 + \";\\n\\n      int d = index / \" + stride2 + \";\\n      index -= d * \" + stride2 + \";\\n\\n      int d2 = index  / \" + stride3 + \";\\n      int d3 = index - d2 * \" + stride3 + \";\\n\\n      ivec5 outShape = ivec5(r, c, d, d2, d3);\\n      return outShape;\\n    }\\n  \";\n}\nfunction getOutput6DCoords(shape, texShape) {\n    var stride4 = shape[5];\n    var stride3 = shape[4] * stride4;\n    var stride2 = shape[3] * stride3;\n    var stride1 = shape[2] * stride2;\n    var stride0 = shape[1] * stride1;\n    return \"\\n    ivec6 getOutputCoords() {\\n      ivec2 resTexRC = ivec2(resultUV.yx *\\n        vec2(\" + texShape[0] + \", \" + texShape[1] + \"));\\n      int index = resTexRC.x * \" + texShape[1] + \" + resTexRC.y;\\n\\n      int r = index / \" + stride0 + \";\\n      index -= r * \" + stride0 + \";\\n\\n      int c = index / \" + stride1 + \";\\n      index -= c * \" + stride1 + \";\\n\\n      int d = index / \" + stride2 + \";\\n      index -= d * \" + stride2 + \";\\n\\n      int d2 = index / \" + stride3 + \";\\n      index -= d2 * \" + stride3 + \";\\n\\n      int d3 = index / \" + stride4 + \";\\n      int d4 = index - d3 * \" + stride4 + \";\\n\\n      ivec6 result = ivec6(r, c, d, d2, d3, d4);\\n      return result;\\n    }\\n  \";\n}\nfunction getOutput2DCoords(shape, texShape) {\n    if (util.arraysEqual(shape, texShape)) {\n        return \"\\n      ivec2 getOutputCoords() {\\n        return ivec2(resultUV.yx * vec2(\" + texShape[0] + \", \" + texShape[1] + \"));\\n      }\\n    \";\n    }\n    if (shape[1] === 1) {\n        return \"\\n      ivec2 getOutputCoords() {\\n        ivec2 resTexRC = ivec2(resultUV.yx *\\n                               vec2(\" + texShape[0] + \", \" + texShape[1] + \"));\\n        int index = resTexRC.x * \" + texShape[1] + \" + resTexRC.y;\\n        return ivec2(index, 0);\\n      }\\n    \";\n    }\n    if (shape[0] === 1) {\n        return \"\\n      ivec2 getOutputCoords() {\\n        ivec2 resTexRC = ivec2(resultUV.yx *\\n                               vec2(\" + texShape[0] + \", \" + texShape[1] + \"));\\n        int index = resTexRC.x * \" + texShape[1] + \" + resTexRC.y;\\n        return ivec2(0, index);\\n      }\\n    \";\n    }\n    return \"\\n    ivec2 getOutputCoords() {\\n      ivec2 resTexRC = ivec2(resultUV.yx *\\n                             vec2(\" + texShape[0] + \", \" + texShape[1] + \"));\\n      int index = resTexRC.x * \" + texShape[1] + \" + resTexRC.y;\\n      int r = index / \" + shape[1] + \";\\n      int c = index - r * \" + shape[1] + \";\\n      return ivec2(r, c);\\n    }\\n  \";\n}\nfunction getSamplerScalar(inputInfo) {\n    var texName = inputInfo.name;\n    var funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1);\n    if (inputInfo.shapeInfo.isUniform) {\n        return \"float \" + funcName + \"() {return \" + texName + \";}\";\n    }\n    return \"\\n    float \" + funcName + \"() {\\n      return sampleTexture(\" + texName + \", halfCR);\\n    }\\n  \";\n}\nfunction getSampler1D(inputInfo) {\n    var texName = inputInfo.name;\n    var funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1);\n    return \"\\n    float \" + funcName + \"(int index) {\\n      return \" + funcName + \"Flat(index);\\n    }\\n  \";\n}\nfunction getSampler2D(inputInfo) {\n    var shape = inputInfo.shapeInfo.logicalShape;\n    var texName = inputInfo.name;\n    var funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1);\n    var texShape = inputInfo.shapeInfo.texShape;\n    if (texShape != null && util.arraysEqual(shape, texShape)) {\n        var texNumR_1 = texShape[0];\n        var texNumC_1 = texShape[1];\n        return \"\\n    float \" + funcName + \"(int row, int col) {\\n      vec2 uv = (vec2(col, row) + halfCR) / vec2(\" + texNumC_1 + \".0, \" + texNumR_1 + \".0);\\n      return sampleTexture(\" + texName + \", uv);\\n    }\\n  \";\n    }\n    var _a = util.squeezeShape(shape), newShape = _a.newShape, keptDims = _a.keptDims;\n    var squeezedShape = newShape;\n    if (squeezedShape.length < shape.length) {\n        var newInputInfo = squeezeInputInfo(inputInfo, squeezedShape);\n        var params = ['row', 'col'];\n        return \"\\n      \" + getSamplerFromInInfo(newInputInfo) + \"\\n      float \" + funcName + \"(int row, int col) {\\n        return \" + funcName + \"(\" + getSqueezedParams(params, keptDims) + \");\\n      }\\n    \";\n    }\n    if (inputInfo.shapeInfo.isUniform) {\n        return \"\\n      float \" + funcName + \"(int row, int col) {\\n        int index = row * \" + shape[1] + \" + col;\\n        return \" + funcName + \"Flat(index);\\n      }\\n    \";\n    }\n    var texNumR = texShape[0];\n    var texNumC = texShape[1];\n    if (texNumC === 1) {\n        return \"\\n    float \" + funcName + \"(int row, int col) {\\n      int index = row * \" + shape[1] + \" + col;\\n      vec2 uv = vec2(0.5, (float(index) + 0.5) / \" + texNumR + \".0);\\n      return sampleTexture(\" + texName + \", uv);\\n    }\\n  \";\n    }\n    if (texNumR === 1) {\n        return \"\\n    float \" + funcName + \"(int row, int col) {\\n      int index = row * \" + shape[1] + \" + col;\\n      vec2 uv = vec2((float(index) + 0.5) / \" + texNumC + \".0, 0.5);\\n      return sampleTexture(\" + texName + \", uv);\\n    }\\n  \";\n    }\n    return \"\\n  float \" + funcName + \"(int row, int col) {\\n    vec2 uv = UVfrom2D(\" + texNumR + \", \" + texNumC + \", \" + shape[1] + \", row, col);\\n    return sampleTexture(\" + texName + \", uv);\\n  }\\n\";\n}\nfunction getSampler3D(inputInfo) {\n    var shape = inputInfo.shapeInfo.logicalShape;\n    var texName = inputInfo.name;\n    var funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1);\n    var stride0 = shape[1] * shape[2];\n    var stride1 = shape[2];\n    var _a = util.squeezeShape(shape), newShape = _a.newShape, keptDims = _a.keptDims;\n    var squeezedShape = newShape;\n    if (squeezedShape.length < shape.length) {\n        var newInputInfo = squeezeInputInfo(inputInfo, squeezedShape);\n        var params = ['row', 'col', 'depth'];\n        return \"\\n        \" + getSamplerFromInInfo(newInputInfo) + \"\\n        float \" + funcName + \"(int row, int col, int depth) {\\n          return \" + funcName + \"(\" + getSqueezedParams(params, keptDims) + \");\\n        }\\n      \";\n    }\n    if (inputInfo.shapeInfo.isUniform) {\n        return \"\\n      float \" + funcName + \"(int row, int col, int depth) {\\n        int index = row * \" + stride0 + \" + col * \" + stride1 + \" + depth;\\n        return \" + funcName + \"Flat(index);\\n      }\\n    \";\n    }\n    var texShape = inputInfo.shapeInfo.texShape;\n    var texNumR = texShape[0];\n    var texNumC = texShape[1];\n    if (texNumC === stride0) {\n        return \"\\n        float \" + funcName + \"(int row, int col, int depth) {\\n          int texR = row;\\n          int texC = col * \" + stride1 + \" + depth;\\n          vec2 uv = (vec2(texC, texR) + halfCR) /\\n                     vec2(\" + texNumC + \".0, \" + texNumR + \".0);\\n          return sampleTexture(\" + texName + \", uv);\\n        }\\n      \";\n    }\n    if (texNumC === stride1) {\n        return \"\\n    float \" + funcName + \"(int row, int col, int depth) {\\n      int texR = row * \" + shape[1] + \" + col;\\n      int texC = depth;\\n      vec2 uv = (vec2(texC, texR) + halfCR) / vec2(\" + texNumC + \".0, \" + texNumR + \".0);\\n      return sampleTexture(\" + texName + \", uv);\\n    }\\n  \";\n    }\n    return \"\\n      float \" + funcName + \"(int row, int col, int depth) {\\n        vec2 uv = UVfrom3D(\\n            \" + texNumR + \", \" + texNumC + \", \" + stride0 + \", \" + stride1 + \", row, col, depth);\\n        return sampleTexture(\" + texName + \", uv);\\n      }\\n  \";\n}\nfunction getSampler4D(inputInfo) {\n    var shape = inputInfo.shapeInfo.logicalShape;\n    var texName = inputInfo.name;\n    var funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1);\n    var stride2 = shape[3];\n    var stride1 = shape[2] * stride2;\n    var stride0 = shape[1] * stride1;\n    var _a = util.squeezeShape(shape), newShape = _a.newShape, keptDims = _a.keptDims;\n    if (newShape.length < shape.length) {\n        var newInputInfo = squeezeInputInfo(inputInfo, newShape);\n        var params = ['row', 'col', 'depth', 'depth2'];\n        return \"\\n      \" + getSamplerFromInInfo(newInputInfo) + \"\\n      float \" + funcName + \"(int row, int col, int depth, int depth2) {\\n        return \" + funcName + \"(\" + getSqueezedParams(params, keptDims) + \");\\n      }\\n    \";\n    }\n    if (inputInfo.shapeInfo.isUniform) {\n        return \"\\n      float \" + funcName + \"(int row, int col, int depth, int depth2) {\\n        int index = row * \" + stride0 + \" + col * \" + stride1 + \" +\\n            depth * \" + stride2 + \" + depth2;\\n        return \" + funcName + \"Flat(index);\\n      }\\n    \";\n    }\n    var texShape = inputInfo.shapeInfo.texShape;\n    var texNumR = texShape[0];\n    var texNumC = texShape[1];\n    if (texNumC === stride0) {\n        return \"\\n      float \" + funcName + \"(int row, int col, int depth, int depth2) {\\n        int texR = row;\\n        int texC = col * \" + stride1 + \" + depth * \" + stride2 + \" + depth2;\\n        vec2 uv = (vec2(texC, texR) + halfCR) /\\n                   vec2(\" + texNumC + \".0, \" + texNumR + \".0);\\n        return sampleTexture(\" + texName + \", uv);\\n      }\\n    \";\n    }\n    if (texNumC === stride2) {\n        return \"\\n      float \" + funcName + \"(int row, int col, int depth, int depth2) {\\n        int texR = row * \" + shape[1] * shape[2] + \" + col * \" + shape[2] + \" + depth;\\n        int texC = depth2;\\n        vec2 uv = (vec2(texC, texR) + halfCR) /\\n                  vec2(\" + texNumC + \".0, \" + texNumR + \".0);\\n        return sampleTexture(\" + texName + \", uv);\\n      }\\n    \";\n    }\n    return \"\\n    float \" + funcName + \"(int row, int col, int depth, int depth2) {\\n      vec2 uv = UVfrom4D(\" + texNumR + \", \" + texNumC + \", \" + stride0 + \", \" + stride1 + \",\\n          \" + stride2 + \", row, col, depth, depth2);\\n      return sampleTexture(\" + texName + \", uv);\\n    }\\n  \";\n}\nfunction getSampler5D(inputInfo) {\n    var shape = inputInfo.shapeInfo.logicalShape;\n    var texName = inputInfo.name;\n    var funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1);\n    var stride3 = shape[4];\n    var stride2 = shape[3] * stride3;\n    var stride1 = shape[2] * stride2;\n    var stride0 = shape[1] * stride1;\n    var _a = util.squeezeShape(shape), newShape = _a.newShape, keptDims = _a.keptDims;\n    if (newShape.length < shape.length) {\n        var newInputInfo = squeezeInputInfo(inputInfo, newShape);\n        var params = ['row', 'col', 'depth', 'depth2', 'depth3'];\n        return \"\\n      \" + getSamplerFromInInfo(newInputInfo) + \"\\n      float \" + funcName + \"(int row, int col, int depth, int depth2, int depth3) {\\n        return \" + funcName + \"(\" + getSqueezedParams(params, keptDims) + \");\\n      }\\n    \";\n    }\n    if (inputInfo.shapeInfo.isUniform) {\n        return \"\\n      float \" + funcName + \"(int row, int col, int depth, int depth2, int depth3) {\\n        int index = row * \" + stride0 + \" + col * \" + stride1 + \" +\\n            depth * \" + stride2 + \" + depth2 * \" + stride3 + \" + depth3;\\n        return \" + funcName + \"Flat(index);\\n      }\\n    \";\n    }\n    var texShape = inputInfo.shapeInfo.texShape;\n    var texNumR = texShape[0];\n    var texNumC = texShape[1];\n    if (texNumC === stride0) {\n        return \"\\n      float \" + funcName + \"(int row, int col, int depth, int depth2, int depth3) {\\n        int texR = row;\\n        int texC = col * \" + stride1 + \" + depth * \" + stride2 + \" +\\n                   depth2 * \" + stride3 + \" + depth3;\\n        vec2 uv = (vec2(texC, texR) + halfCR) /\\n                   vec2(\" + texNumC + \".0, \" + texNumR + \".0);\\n        return sampleTexture(\" + texName + \", uv);\\n      }\\n    \";\n    }\n    if (texNumC === stride3) {\n        return \"\\n      float \" + funcName + \"(int row, int col, int depth, int depth2, int depth3) {\\n        int texR = row * \" + shape[1] * shape[2] + \" + col * \" + shape[2] + \" +\\n                   depth * \" + shape[3] + \" + depth2;\\n        int texC = depth3;\\n        vec2 uv = (vec2(texC, texR) + halfCR) /\\n                  vec2(\" + texNumC + \".0, \" + texNumR + \".0);\\n        return sampleTexture(\" + texName + \", uv);\\n      }\\n    \";\n    }\n    return \"\\n    float \" + funcName + \"(int row, int col, int depth, int depth2, int depth3) {\\n      vec2 uv = UVfrom5D(\" + texNumR + \", \" + texNumC + \", \" + stride0 + \", \" + stride1 + \",\\n          \" + stride2 + \", \" + stride3 + \", row, col, depth, depth2, depth3);\\n      return sampleTexture(\" + texName + \", uv);\\n    }\\n  \";\n}\nfunction getSampler6D(inputInfo) {\n    var shape = inputInfo.shapeInfo.logicalShape;\n    var texName = inputInfo.name;\n    var funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1);\n    var stride4 = shape[5];\n    var stride3 = shape[4] * stride4;\n    var stride2 = shape[3] * stride3;\n    var stride1 = shape[2] * stride2;\n    var stride0 = shape[1] * stride1;\n    var _a = util.squeezeShape(shape), newShape = _a.newShape, keptDims = _a.keptDims;\n    if (newShape.length < shape.length) {\n        var newInputInfo = squeezeInputInfo(inputInfo, newShape);\n        var params = ['row', 'col', 'depth', 'depth2', 'depth3', 'depth4'];\n        return \"\\n      \" + getSamplerFromInInfo(newInputInfo) + \"\\n      float \" + funcName + \"(int row, int col, int depth,\\n                    int depth2, int depth3, int depth4) {\\n        return \" + funcName + \"(\" + getSqueezedParams(params, keptDims) + \");\\n      }\\n    \";\n    }\n    if (inputInfo.shapeInfo.isUniform) {\n        return \"\\n      float \" + funcName + \"(int row, int col, int depth,\\n                  int depth2, int depth3, int depth4) {\\n        int index = row * \" + stride0 + \" + col * \" + stride1 + \" +\\n            depth * \" + stride2 + \" + depth2 * \" + stride3 + \" + depth3 * \" + stride3 + \"\\n            + depth4\\n        return \" + funcName + \"Flat(index);\\n      }\\n    \";\n    }\n    var texShape = inputInfo.shapeInfo.texShape;\n    var texNumR = texShape[0];\n    var texNumC = texShape[1];\n    if (texNumC === stride0) {\n        return \"\\n      float \" + funcName + \"(int row, int col, int depth,\\n                    int depth2, int depth3, int depth4) {\\n        int texR = row;\\n        int texC = col * \" + stride1 + \" + depth * \" + stride2 + \" + depth2;\\n        vec2 uv = (vec2(texC, texR) + halfCR) /\\n                   vec2(\" + texNumC + \".0, \" + texNumR + \".0);\\n        return sampleTexture(\" + texName + \", uv);\\n      }\\n    \";\n    }\n    if (texNumC === stride4) {\n        return \"\\n      float \" + funcName + \"(int row, int col, int depth,\\n                    int depth2, int depth3, int depth4) {\\n        int texR = row * \" + shape[1] * shape[2] + \" + col * \" + shape[2] + \" + depth;\\n        int texC = depth4;\\n        vec2 uv = (vec2(texC, texR) + halfCR) /\\n                  vec2(\" + texNumC + \".0, \" + texNumR + \".0);\\n        return sampleTexture(\" + texName + \", uv);\\n      }\\n    \";\n    }\n    return \"\\n    float \" + funcName + \"(int row, int col, int depth,\\n                  int depth2, int depth3, int depth4) {\\n      vec2 uv = UVfrom6D(\" + texNumR + \", \" + texNumC + \", \" + stride0 + \", \" + stride1 + \",\\n          \" + stride2 + \", \" + stride3 + \", \" + stride4 + \"\\n          ,row, col, depth, depth2, depth3, depth4);\\n      return sampleTexture(\" + texName + \", uv);\\n    }\\n  \";\n}\nfunction getSamplerFlat(inputInfo) {\n    var texName = inputInfo.name;\n    var funcName = 'get' + texName.charAt(0).toUpperCase() + texName.slice(1) + 'Flat';\n    var inSize = util.sizeFromShape(inputInfo.shapeInfo.logicalShape);\n    if (inputInfo.shapeInfo.isUniform) {\n        if (inSize === 1) {\n            return \"float \" + funcName + \"(int index) {return \" + texName + \";}\";\n        }\n        return \"\\n      float \" + funcName + \"(int index) {\\n        for (int i = 0; i < \" + inSize + \"; i++) {\\n          if (i == index) {\\n            return \" + texName + \"[i];\\n          }\\n        }\\n      }\\n    \";\n    }\n    var texShape = inputInfo.shapeInfo.texShape;\n    var tNumR = texShape[0];\n    var tNumC = texShape[1];\n    if (tNumC === 1 && tNumR === 1) {\n        return \"\\n      float \" + funcName + \"(int index) {\\n        return sampleTexture(\" + texName + \", halfCR);\\n      }\\n    \";\n    }\n    if (tNumC === 1) {\n        return \"\\n      float \" + funcName + \"(int index) {\\n        vec2 uv = vec2(0.5, (float(index) + 0.5) / \" + tNumR + \".0);\\n        return sampleTexture(\" + texName + \", uv);\\n      }\\n    \";\n    }\n    if (tNumR === 1) {\n        return \"\\n      float \" + funcName + \"(int index) {\\n        vec2 uv = vec2((float(index) + 0.5) / \" + tNumC + \".0, 0.5);\\n        return sampleTexture(\" + texName + \", uv);\\n      }\\n    \";\n    }\n    return \"\\n    float \" + funcName + \"(int index) {\\n      vec2 uv = UVfrom1D(\" + tNumR + \", \" + tNumC + \", index);\\n      return sampleTexture(\" + texName + \", uv);\\n    }\\n  \";\n}\nfunction getBroadcastOutputCoordsSampler(inputInfo, outShapeInfo, texFuncSnippet, funcName) {\n    var inRank = inputInfo.shapeInfo.logicalShape.length;\n    var outRank = outShapeInfo.logicalShape.length;\n    var type = 'int';\n    if (outRank === 2) {\n        type = 'ivec2';\n    }\n    else if (outRank === 3) {\n        type = 'ivec3';\n    }\n    else if (outRank === 4) {\n        type = 'ivec4';\n    }\n    var broadcastDims = broadcast_util.getBroadcastDims(inputInfo.shapeInfo.logicalShape, outShapeInfo.logicalShape);\n    var rankDiff = outRank - inRank;\n    var coordsSnippet;\n    if (inRank === 0) {\n        coordsSnippet = '';\n    }\n    else if (outRank < 2 && broadcastDims.length >= 1) {\n        coordsSnippet = 'coords = 0;';\n    }\n    else {\n        coordsSnippet =\n            broadcastDims.map(function (d) { return \"coords[\" + (d + rankDiff) + \"] = 0;\"; }).join('\\n');\n    }\n    var unpackedCoordsSnippet = '';\n    if (outRank < 2 && inRank > 0) {\n        unpackedCoordsSnippet = 'coords';\n    }\n    else {\n        unpackedCoordsSnippet = inputInfo.shapeInfo.logicalShape\n            .map(function (s, i) { return \"coords[\" + (i + rankDiff) + \"]\"; })\n            .join(', ');\n    }\n    return \"\\n    float \" + funcName + \"() {\\n      \" + type + \" coords = getOutputCoords();\\n      \" + coordsSnippet + \"\\n      return get\" + texFuncSnippet + \"(\" + unpackedCoordsSnippet + \");\\n    }\\n  \";\n}\nfunction getSamplerAtOutputCoords(inputInfo, outShapeInfo, supportsBroadcasting) {\n    var texName = inputInfo.name;\n    var texFuncSnippet = texName.charAt(0).toUpperCase() + texName.slice(1);\n    var funcName = 'get' + texFuncSnippet + 'AtOutCoords';\n    var broadcastDims = broadcast_util.getBroadcastDims(inputInfo.shapeInfo.logicalShape, outShapeInfo.logicalShape);\n    var inRank = inputInfo.shapeInfo.logicalShape.length;\n    var outRank = outShapeInfo.logicalShape.length;\n    var doBroadcast = supportsBroadcasting && ((outRank > inRank) || broadcastDims.length > 0);\n    var broadcastOverOuter = broadcast_util.broadcastDimsAreOuter(broadcastDims);\n    var isUniform = inputInfo.shapeInfo.isUniform;\n    if (doBroadcast && !broadcastOverOuter) {\n        return getBroadcastOutputCoordsSampler(inputInfo, outShapeInfo, texFuncSnippet, funcName);\n    }\n    var inSize = util.sizeFromShape(inputInfo.shapeInfo.logicalShape);\n    var broadcastSnippet = '';\n    if (doBroadcast && broadcastOverOuter) {\n        broadcastSnippet = \"\\n        int mainPart = index / \" + inSize + \";\\n        index -= mainPart * \" + inSize + \";\\n      \";\n    }\n    var outTexShape = outShapeInfo.texShape;\n    if (isUniform) {\n        if (inSize === 1) {\n            return \"float \" + funcName + \"() {return \" + texName + \";}\";\n        }\n        return \"\\n      float \" + funcName + \"() {\\n        ivec2 resTexRC = ivec2(resultUV.yx *\\n                              vec2(\" + outTexShape[0] + \", \" + outTexShape[1] + \"));\\n        int index = resTexRC.x * \" + outTexShape[1] + \" + resTexRC.y;\\n        \" + broadcastSnippet + \"\\n        return get\" + texFuncSnippet + \"Flat(index);\\n      }\\n    \";\n    }\n    var inTexShape = inputInfo.shapeInfo.texShape;\n    if (util.arraysEqual(inTexShape, outTexShape)) {\n        return \"\\n      float \" + funcName + \"() {\\n        return sampleTexture(\" + texName + \", resultUV);\\n      }\\n    \";\n    }\n    return \"\\n    float \" + funcName + \"() {\\n      ivec2 resTexRC = ivec2(resultUV.yx *\\n                             vec2(\" + outTexShape[0] + \", \" + outTexShape[1] + \"));\\n      int index = resTexRC.x * \" + outTexShape[1] + \" + resTexRC.y;\\n      \" + broadcastSnippet + \"\\n      int texR = index / \" + inTexShape[1] + \";\\n      int texC = index - texR * \" + inTexShape[1] + \";\\n      vec2 uv = (vec2(texC, texR) + halfCR) /\\n                 vec2(\" + inTexShape[1] + \".0, \" + inTexShape[0] + \".0);\\n\\n      return sampleTexture(\" + texName + \", uv);\\n    }\\n  \";\n}\nfunction getCoordsDataType(rank) {\n    if (rank <= 1) {\n        return 'int';\n    }\n    else if (rank === 2) {\n        return 'ivec2';\n    }\n    else if (rank === 3) {\n        return 'ivec3';\n    }\n    else if (rank === 4) {\n        return 'ivec4';\n    }\n    else if (rank === 5) {\n        return 'ivec5';\n    }\n    else if (rank === 6) {\n        return 'ivec6';\n    }\n    else {\n        throw Error(\"GPU for rank \" + rank + \" is not yet supported\");\n    }\n}\nexports.getCoordsDataType = getCoordsDataType;\nfunction squeezeInputInfo(inInfo, squeezedShape) {\n    var newInputInfo = JSON.parse(JSON.stringify(inInfo));\n    newInputInfo.shapeInfo.logicalShape = squeezedShape;\n    return newInputInfo;\n}\nfunction getSqueezedParams(params, keptDims) {\n    return keptDims.map(function (d) { return params[d]; }).join(', ');\n}\n\n},{\"../../ops/broadcast_util\":125,\"../../util\":180}],110:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shader_compiler_1 = require(\"./shader_compiler\");\nvar SliceProgram = (function () {\n    function SliceProgram(destSize) {\n        this.variableNames = ['source'];\n        this.outputShape = destSize;\n        this.rank = destSize.length;\n        var dtype = shader_compiler_1.getCoordsDataType(this.rank);\n        var sourceCoords = getCoords(this.rank);\n        this.userCode = \"\\n      uniform \" + dtype + \" start;\\n\\n      void main() {\\n        \" + dtype + \" sourceLoc = start + getOutputCoords();\\n        setOutput(getSource(\" + sourceCoords + \"));\\n      }\\n    \";\n    }\n    SliceProgram.prototype.getCustomSetupFunc = function (start) {\n        var _this = this;\n        if (start.length !== this.rank) {\n            throw Error(\"The rank (\" + this.rank + \") of the program must match the \" +\n                (\"length of start (\" + start.length + \")\"));\n        }\n        return function (gpgpu, webGLProgram) {\n            if (_this.startLoc == null) {\n                _this.startLoc = gpgpu.getUniformLocationNoThrow(webGLProgram, 'start');\n                if (_this.startLoc == null) {\n                    return;\n                }\n            }\n            if (_this.rank === 1) {\n                gpgpu.gl.uniform1i(_this.startLoc, start[0]);\n            }\n            else if (_this.rank === 2) {\n                gpgpu.gl.uniform2i(_this.startLoc, start[0], start[1]);\n            }\n            else if (_this.rank === 3) {\n                gpgpu.gl.uniform3i(_this.startLoc, start[0], start[1], start[2]);\n            }\n            else if (_this.rank === 4) {\n                gpgpu.gl.uniform4i(_this.startLoc, start[0], start[1], start[2], start[3]);\n            }\n            else {\n                throw Error(\"Slicing for rank \" + _this.rank + \" is not yet supported\");\n            }\n        };\n    };\n    return SliceProgram;\n}());\nexports.SliceProgram = SliceProgram;\nfunction getCoords(rank) {\n    if (rank === 1) {\n        return 'sourceLoc';\n    }\n    else if (rank === 2) {\n        return 'sourceLoc.x, sourceLoc.y';\n    }\n    else if (rank === 3) {\n        return 'sourceLoc.x, sourceLoc.y, sourceLoc.z';\n    }\n    else if (rank === 4) {\n        return 'sourceLoc.x, sourceLoc.y, sourceLoc.z, sourceLoc.w';\n    }\n    else {\n        throw Error(\"Slicing for rank \" + rank + \" is not yet supported\");\n    }\n}\n\n},{\"./shader_compiler\":109}],111:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shader_compiler_1 = require(\"./shader_compiler\");\nvar StridedSliceProgram = (function () {\n    function StridedSliceProgram(begin, strides, shape) {\n        this.variableNames = ['x'];\n        this.outputShape = shape;\n        this.rank = shape.length;\n        var dtype = shader_compiler_1.getCoordsDataType(this.rank);\n        var newCoords = '';\n        if (this.rank === 1) {\n            newCoords = 'coords * strides + begin';\n        }\n        else {\n            newCoords =\n                shape.map(function (_, i) { return \"coords[\" + i + \"] * strides[\" + i + \"] + begin[\" + i + \"]\"; })\n                    .join(',');\n        }\n        this.userCode = \"\\n      \" + dtype + \" begin = \" + dtype + \"(\" + begin + \");\\n      \" + dtype + \" strides = \" + dtype + \"(\" + strides + \");\\n\\n      void main() {\\n        \" + dtype + \" coords = getOutputCoords();\\n        setOutput(getX(\" + newCoords + \"));\\n      }\\n    \";\n    }\n    return StridedSliceProgram;\n}());\nexports.StridedSliceProgram = StridedSliceProgram;\n\n},{\"./shader_compiler\":109}],112:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar TextureUsage;\n(function (TextureUsage) {\n    TextureUsage[TextureUsage[\"RENDER\"] = 0] = \"RENDER\";\n    TextureUsage[TextureUsage[\"UPLOAD\"] = 1] = \"UPLOAD\";\n    TextureUsage[TextureUsage[\"PIXELS\"] = 2] = \"PIXELS\";\n    TextureUsage[TextureUsage[\"DOWNLOAD\"] = 3] = \"DOWNLOAD\";\n})(TextureUsage = exports.TextureUsage || (exports.TextureUsage = {}));\nvar PhysicalTextureType;\n(function (PhysicalTextureType) {\n    PhysicalTextureType[PhysicalTextureType[\"FLOAT16\"] = 0] = \"FLOAT16\";\n    PhysicalTextureType[PhysicalTextureType[\"FLOAT32\"] = 1] = \"FLOAT32\";\n    PhysicalTextureType[PhysicalTextureType[\"UNSIGNED_BYTE\"] = 2] = \"UNSIGNED_BYTE\";\n})(PhysicalTextureType = exports.PhysicalTextureType || (exports.PhysicalTextureType = {}));\nfunction getUnpackedMatrixTextureShapeWidthHeight(rows, columns) {\n    return [columns, rows];\n}\nexports.getUnpackedMatrixTextureShapeWidthHeight = getUnpackedMatrixTextureShapeWidthHeight;\nfunction getUnpackedArraySizeFromMatrixSize(matrixSize, channelsPerTexture) {\n    return matrixSize * channelsPerTexture;\n}\nexports.getUnpackedArraySizeFromMatrixSize = getUnpackedArraySizeFromMatrixSize;\nfunction getColorMatrixTextureShapeWidthHeight(rows, columns) {\n    return [columns * 4, rows];\n}\nexports.getColorMatrixTextureShapeWidthHeight = getColorMatrixTextureShapeWidthHeight;\nfunction getMatrixSizeFromUnpackedArraySize(unpackedSize, channelsPerTexture) {\n    if (unpackedSize % channelsPerTexture !== 0) {\n        throw new Error(\"unpackedSize (\" + unpackedSize + \") must be a multiple of \" +\n            (\"\" + channelsPerTexture));\n    }\n    return unpackedSize / channelsPerTexture;\n}\nexports.getMatrixSizeFromUnpackedArraySize = getMatrixSizeFromUnpackedArraySize;\nfunction encodeMatrixToUnpackedArray(matrix, unpackedArray, channelsPerTexture) {\n    var requiredSize = getUnpackedArraySizeFromMatrixSize(matrix.length, channelsPerTexture);\n    if (unpackedArray.length < requiredSize) {\n        throw new Error(\"unpackedArray length (\" + unpackedArray.length + \") must be >= \" +\n            (\"\" + requiredSize));\n    }\n    var dst = 0;\n    for (var src = 0; src < matrix.length; ++src) {\n        unpackedArray[dst] = matrix[src];\n        dst += channelsPerTexture;\n    }\n}\nexports.encodeMatrixToUnpackedArray = encodeMatrixToUnpackedArray;\nfunction decodeMatrixFromUnpackedArray(unpackedArray, matrix, channelsPerTexture) {\n    var requiredSize = getMatrixSizeFromUnpackedArraySize(unpackedArray.length, channelsPerTexture);\n    if (matrix.length < requiredSize) {\n        throw new Error(\"matrix length (\" + matrix.length + \") must be >= \" + requiredSize);\n    }\n    var dst = 0;\n    for (var src = 0; src < unpackedArray.length; src += channelsPerTexture) {\n        matrix[dst++] = unpackedArray[src];\n    }\n}\nexports.decodeMatrixFromUnpackedArray = decodeMatrixFromUnpackedArray;\nfunction decodeMatrixFromUnpackedColorRGBAArray(unpackedArray, matrix, channels) {\n    var requiredSize = unpackedArray.length * channels / 4;\n    if (matrix.length < requiredSize) {\n        throw new Error(\"matrix length (\" + matrix.length + \") must be >= \" + requiredSize);\n    }\n    var dst = 0;\n    for (var src = 0; src < unpackedArray.length; src += 4) {\n        for (var c = 0; c < channels; c++) {\n            matrix[dst++] = unpackedArray[src + c];\n        }\n    }\n}\nexports.decodeMatrixFromUnpackedColorRGBAArray = decodeMatrixFromUnpackedColorRGBAArray;\nfunction getPackedMatrixTextureShapeWidthHeight(rows, columns) {\n    return [Math.ceil(columns / 2), Math.ceil(rows / 2)];\n}\nexports.getPackedMatrixTextureShapeWidthHeight = getPackedMatrixTextureShapeWidthHeight;\nfunction getPackedRGBAArraySizeFromMatrixShape(rows, columns) {\n    var _a = getPackedMatrixTextureShapeWidthHeight(rows, columns), w = _a[0], h = _a[1];\n    return w * h * 4;\n}\nexports.getPackedRGBAArraySizeFromMatrixShape = getPackedRGBAArraySizeFromMatrixShape;\nfunction encodeMatrixToPackedRGBA(matrix, rows, columns, packedRGBA) {\n    var requiredSize = getPackedRGBAArraySizeFromMatrixShape(rows, columns);\n    if (packedRGBA.length < requiredSize) {\n        throw new Error(\"packedRGBA length (\" + packedRGBA.length + \") must be >= \" + requiredSize);\n    }\n    var _a = getPackedMatrixTextureShapeWidthHeight(rows, columns), textureWidth = _a[0], textureHeight = _a[1];\n    var oddWidth = (columns % 2) === 1;\n    var oddHeight = (rows % 2) === 1;\n    var widthInFullBlocks = Math.floor(columns / 2);\n    var heightInFullBlocks = Math.floor(rows / 2);\n    {\n        var dstStride = (oddWidth ? 4 : 0);\n        var oneRow = columns;\n        var dst = 0;\n        for (var blockY = 0; blockY < heightInFullBlocks; ++blockY) {\n            var matrixSrcRow = (blockY * 2 * columns);\n            for (var blockX = 0; blockX < widthInFullBlocks; ++blockX) {\n                var matrixSrcCol = blockX * 2;\n                var src = matrixSrcRow + matrixSrcCol;\n                packedRGBA[dst] = matrix[src];\n                packedRGBA[dst + 1] = matrix[src + 1];\n                packedRGBA[dst + 2] = matrix[src + oneRow];\n                packedRGBA[dst + 3] = matrix[src + oneRow + 1];\n                dst += 4;\n            }\n            dst += dstStride;\n        }\n    }\n    if (oddWidth) {\n        var src = columns - 1;\n        var dst = (textureWidth - 1) * 4;\n        var srcStride = 2 * columns;\n        var dstStride = textureWidth * 4;\n        for (var blockY = 0; blockY < heightInFullBlocks; ++blockY) {\n            packedRGBA[dst] = matrix[src];\n            packedRGBA[dst + 2] = matrix[src + columns];\n            src += srcStride;\n            dst += dstStride;\n        }\n    }\n    if (oddHeight) {\n        var src = (rows - 1) * columns;\n        var dst = (textureHeight - 1) * textureWidth * 4;\n        for (var blockX = 0; blockX < widthInFullBlocks; ++blockX) {\n            packedRGBA[dst++] = matrix[src++];\n            packedRGBA[dst++] = matrix[src++];\n            dst += 2;\n        }\n    }\n    if (oddWidth && oddHeight) {\n        packedRGBA[packedRGBA.length - 4] = matrix[matrix.length - 1];\n    }\n    return packedRGBA;\n}\nexports.encodeMatrixToPackedRGBA = encodeMatrixToPackedRGBA;\nfunction decodeMatrixFromPackedRGBA(packedRGBA, rows, columns, matrix) {\n    var requiredSize = rows * columns;\n    if (requiredSize < matrix.length) {\n        throw new Error(\"matrix length (\" + matrix.length + \") must be >= \" + requiredSize);\n    }\n    var oddWidth = (columns % 2) === 1;\n    var oddHeight = (rows % 2) === 1;\n    var widthInFullBlocks = Math.floor(columns / 2);\n    var heightInFullBlocks = Math.floor(rows / 2);\n    var _a = getPackedMatrixTextureShapeWidthHeight(rows, columns), textureWidth = _a[0], textureHeight = _a[1];\n    {\n        var srcStride = oddWidth ? 4 : 0;\n        var dstStride = columns + (oddWidth ? 1 : 0);\n        var src = 0;\n        var dstRow1 = 0;\n        var dstRow2 = columns;\n        for (var blockY = 0; blockY < heightInFullBlocks; ++blockY) {\n            for (var blockX = 0; blockX < widthInFullBlocks; ++blockX) {\n                matrix[dstRow1++] = packedRGBA[src++];\n                matrix[dstRow1++] = packedRGBA[src++];\n                matrix[dstRow2++] = packedRGBA[src++];\n                matrix[dstRow2++] = packedRGBA[src++];\n            }\n            src += srcStride;\n            dstRow1 += dstStride;\n            dstRow2 += dstStride;\n        }\n    }\n    if (oddWidth) {\n        var src = (textureWidth - 1) * 4;\n        var dst = columns - 1;\n        var srcStride = textureWidth * 4;\n        var dstStride = 2 * columns;\n        for (var blockY = 0; blockY < heightInFullBlocks; ++blockY) {\n            matrix[dst] = packedRGBA[src];\n            matrix[dst + columns] = packedRGBA[src + 2];\n            src += srcStride;\n            dst += dstStride;\n        }\n    }\n    if (oddHeight) {\n        var src = (textureHeight - 1) * textureWidth * 4;\n        var dst = (rows - 1) * columns;\n        for (var blockX = 0; blockX < widthInFullBlocks; ++blockX) {\n            matrix[dst++] = packedRGBA[src++];\n            matrix[dst++] = packedRGBA[src++];\n            src += 2;\n        }\n    }\n    if (oddWidth && oddHeight) {\n        matrix[matrix.length - 1] = packedRGBA[packedRGBA.length - 4];\n    }\n    return matrix;\n}\nexports.decodeMatrixFromPackedRGBA = decodeMatrixFromPackedRGBA;\n\n},{}],113:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"../../environment\");\nvar tex_util_1 = require(\"./tex_util\");\nvar TextureManager = (function () {\n    function TextureManager(gpgpu) {\n        this.gpgpu = gpgpu;\n        this.numUsedTextures = 0;\n        this.numFreeTextures = 0;\n        this.freeTextures = {};\n        this.logEnabled = false;\n        this.usedTextures = {};\n    }\n    TextureManager.prototype.acquireTexture = function (shapeRC, usage) {\n        var physicalTexType = getPhysicalFromLogicalTextureType(usage);\n        var shapeKey = getKeyFromTextureShape(shapeRC, physicalTexType);\n        if (!(shapeKey in this.freeTextures)) {\n            this.freeTextures[shapeKey] = [];\n        }\n        if (!(shapeKey in this.usedTextures)) {\n            this.usedTextures[shapeKey] = [];\n        }\n        if (this.freeTextures[shapeKey].length > 0) {\n            this.numFreeTextures--;\n            this.numUsedTextures++;\n            this.log();\n            var newTexture_1 = this.freeTextures[shapeKey].shift();\n            this.usedTextures[shapeKey].push(newTexture_1);\n            return newTexture_1;\n        }\n        this.numUsedTextures++;\n        this.log();\n        var newTexture;\n        if (physicalTexType === tex_util_1.PhysicalTextureType.FLOAT32) {\n            newTexture =\n                this.gpgpu.createFloat32MatrixTexture(shapeRC[0], shapeRC[1]);\n        }\n        else if (physicalTexType === tex_util_1.PhysicalTextureType.FLOAT16) {\n            newTexture =\n                this.gpgpu.createFloat16MatrixTexture(shapeRC[0], shapeRC[1]);\n        }\n        else if (physicalTexType === tex_util_1.PhysicalTextureType.UNSIGNED_BYTE) {\n            newTexture =\n                this.gpgpu.createUnsignedBytesMatrixTexture(shapeRC[0], shapeRC[1]);\n        }\n        this.usedTextures[shapeKey].push(newTexture);\n        return newTexture;\n    };\n    TextureManager.prototype.releaseTexture = function (texture, shape, logicalTexType) {\n        var physicalTexType = getPhysicalFromLogicalTextureType(logicalTexType);\n        var shapeKey = getKeyFromTextureShape(shape, physicalTexType);\n        if (!(shapeKey in this.freeTextures)) {\n            this.freeTextures[shapeKey] = [];\n        }\n        this.freeTextures[shapeKey].push(texture);\n        this.numFreeTextures++;\n        this.numUsedTextures--;\n        var texList = this.usedTextures[shapeKey];\n        var texIndex = texList.indexOf(texture);\n        if (texIndex < 0) {\n            throw new Error('Cannot release a texture that was never provided by this ' +\n                'texture manager');\n        }\n        texList.splice(texIndex, 1);\n        this.log();\n    };\n    TextureManager.prototype.log = function () {\n        if (!this.logEnabled) {\n            return;\n        }\n        var total = this.numFreeTextures + this.numUsedTextures;\n        console.log('Free/Used', this.numFreeTextures + \" / \" + this.numUsedTextures, \"(\" + total + \")\");\n    };\n    TextureManager.prototype.getNumUsedTextures = function () {\n        return this.numUsedTextures;\n    };\n    TextureManager.prototype.getNumFreeTextures = function () {\n        return this.numFreeTextures;\n    };\n    TextureManager.prototype.dispose = function () {\n        var _this = this;\n        if (this.freeTextures == null) {\n            return;\n        }\n        for (var texShape in this.freeTextures) {\n            this.freeTextures[texShape].forEach(function (tex) {\n                _this.gpgpu.deleteMatrixTexture(tex);\n            });\n        }\n        for (var texShape in this.usedTextures) {\n            this.usedTextures[texShape].forEach(function (tex) {\n                _this.gpgpu.deleteMatrixTexture(tex);\n            });\n        }\n        this.freeTextures = null;\n        this.usedTextures = null;\n        this.numUsedTextures = 0;\n        this.numFreeTextures = 0;\n    };\n    return TextureManager;\n}());\nexports.TextureManager = TextureManager;\nfunction getPhysicalFromLogicalTextureType(logicalTexType) {\n    if (logicalTexType === tex_util_1.TextureUsage.DOWNLOAD ||\n        logicalTexType === tex_util_1.TextureUsage.PIXELS) {\n        return tex_util_1.PhysicalTextureType.UNSIGNED_BYTE;\n    }\n    else if (logicalTexType === tex_util_1.TextureUsage.UPLOAD) {\n        return tex_util_1.PhysicalTextureType.FLOAT32;\n    }\n    else if (logicalTexType === tex_util_1.TextureUsage.RENDER) {\n        return environment_1.ENV.get('WEBGL_RENDER_FLOAT32_ENABLED') ?\n            tex_util_1.PhysicalTextureType.FLOAT32 :\n            tex_util_1.PhysicalTextureType.FLOAT16;\n    }\n    throw new Error(\"Unknown logical texture type \" + logicalTexType);\n}\nfunction getKeyFromTextureShape(shapeRowsCol, physicalTexType) {\n    return shapeRowsCol[0] + \"_\" + shapeRowsCol[1] + \"_\" + physicalTexType;\n}\n\n},{\"../../environment\":55,\"./tex_util\":112}],114:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shader_compiler_1 = require(\"./shader_compiler\");\nvar TileProgram = (function () {\n    function TileProgram(aShape, reps) {\n        this.variableNames = ['A'];\n        var outputShape = new Array(aShape.length);\n        for (var i = 0; i < outputShape.length; i++) {\n            outputShape[i] = aShape[i] * reps[i];\n        }\n        this.outputShape = outputShape;\n        this.rank = outputShape.length;\n        var dtype = shader_compiler_1.getCoordsDataType(this.rank);\n        var sourceCoords = getSourceCoords(aShape);\n        this.userCode = \"\\n      void main() {\\n        \" + dtype + \" resRC = getOutputCoords();\\n        setOutput(getA(\" + sourceCoords + \"));\\n      }\\n    \";\n    }\n    return TileProgram;\n}());\nexports.TileProgram = TileProgram;\nfunction getSourceCoords(aShape) {\n    var rank = aShape.length;\n    if (rank > 5) {\n        throw Error(\"Tile for rank \" + rank + \" is not yet supported\");\n    }\n    if (rank === 1) {\n        return \"imod(resRC, \" + aShape[0] + \")\";\n    }\n    var currentCoords = ['resRC.x', 'resRC.y', 'resRC.z', 'resRC.w', 'resRC.u'];\n    var sourceCoords = [];\n    for (var i = 0; i < aShape.length; i++) {\n        sourceCoords.push(\"imod(\" + currentCoords[i] + \", \" + aShape[i] + \")\");\n    }\n    return sourceCoords.join();\n}\n\n},{\"./shader_compiler\":109}],115:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shader_compiler_1 = require(\"./shader_compiler\");\nvar TransposeProgram = (function () {\n    function TransposeProgram(aShape, newDim) {\n        this.variableNames = ['A'];\n        var outputShape = new Array(aShape.length);\n        for (var i = 0; i < outputShape.length; i++) {\n            outputShape[i] = aShape[newDim[i]];\n        }\n        this.outputShape = outputShape;\n        this.rank = outputShape.length;\n        var dtype = shader_compiler_1.getCoordsDataType(this.rank);\n        var switched = getSwitchedCoords(newDim);\n        this.userCode = \"\\n    void main() {\\n      \" + dtype + \" resRC = getOutputCoords();\\n      setOutput(getA(\" + switched + \"));\\n    }\\n    \";\n    }\n    return TransposeProgram;\n}());\nexports.TransposeProgram = TransposeProgram;\nfunction getSwitchedCoords(newDim) {\n    var rank = newDim.length;\n    if (rank > 6) {\n        throw Error(\"Transpose for rank \" + rank + \" is not yet supported\");\n    }\n    var originalOrder = ['resRC.x', 'resRC.y', 'resRC.z', 'resRC.w', 'resRC.u', 'resRC.v'];\n    var switchedCoords = new Array(rank);\n    for (var i = 0; i < newDim.length; i++) {\n        switchedCoords[newDim[i]] = originalOrder[i];\n    }\n    return switchedCoords.join();\n}\n\n},{\"./shader_compiler\":109}],116:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar erf_util = require(\"../../ops/erf_util\");\nvar selu_util = require(\"../../ops/selu_util\");\nvar UnaryOpProgram = (function () {\n    function UnaryOpProgram(aShape, opSnippet) {\n        this.variableNames = ['A'];\n        this.outputShape = aShape;\n        this.userCode = \"\\n      uniform float NAN;\\n      float unaryOperation(float x) {\\n        \" + opSnippet + \"\\n      }\\n\\n      void main() {\\n        float x = getAAtOutCoords();\\n        float y = unaryOperation(x);\\n\\n        setOutput(y);\\n      }\\n    \";\n    }\n    UnaryOpProgram.prototype.getCustomSetupFunc = function () {\n        var _this = this;\n        return function (gpgpu, webGLProgram) {\n            if (_this.startLoc == null) {\n                _this.startLoc = gpgpu.getUniformLocationNoThrow(webGLProgram, 'NAN');\n                if (_this.startLoc == null) {\n                    return;\n                }\n            }\n            gpgpu.gl.uniform1f(_this.startLoc, NaN);\n        };\n    };\n    return UnaryOpProgram;\n}());\nexports.UnaryOpProgram = UnaryOpProgram;\nvar CHECK_NAN_SNIPPET = \"if (isNaN(x)) return x;\";\nexports.ABS = \"return abs(x);\";\nexports.RELU = CHECK_NAN_SNIPPET + \"\\n  return (x < 0.0) ? 0.0 : x;\\n\";\nexports.ELU = \"return (x >= 0.0) ? x : (exp(x) - 1.0);\";\nexports.SELU = \"\\n  // Stable and Attracting Fixed Point (0, 1) for Normalized Weights.\\n  // see: https://arxiv.org/abs/1706.02515\\n  float scaleAlpha = \" + selu_util.SELU_SCALEALPHA + \";\\n  float scale = \" + selu_util.SELU_SCALE + \";\\n  return (x >= 0.0) ? scale * x : scaleAlpha * (exp(x) - 1.0);\\n\";\nfunction STEP(alpha) {\n    if (alpha === void 0) { alpha = 0.0; }\n    return CHECK_NAN_SNIPPET + (\"\\n    return x > 0.0 ? 1.0 : float(\" + alpha + \");\\n  \");\n}\nexports.STEP = STEP;\nexports.NEG = \"return -x;\";\nexports.CEIL = \"return ceil(x);\";\nexports.FLOOR = \"return floor(x);\";\nexports.SIGN = \"\\n  if (isNaN(x)) { return 0.0; }\\n  return sign(x);\\n\";\nexports.ROUND = \"\\n  // OpenGL ES does not support round function.\\n  // The algorithm is based on banker's rounding.\\n  float base = floor(x);\\n  if ((x - base) < 0.5) {\\n    return floor(x);\\n  } else if ((x - base) > 0.5) {\\n    return ceil(x);\\n  } else {\\n    if (mod(base, 2.0) == 0.0) {\\n      return base;\\n    } else {\\n      return base + 1.0;\\n    }\\n  }\\n\";\nexports.EXP = \"return exp(x);\";\nexports.EXPM1 = \"return exp(x) - 1.0;\";\nexports.LOG = \"if (x < 0.0) return NAN;\\n  return log(x);\";\nexports.LOG1P = \"return log(1.0 + x);\";\nexports.SQRT = \"return sqrt(x);\";\nexports.RSQRT = \"return inversesqrt(x);\";\nexports.SIGMOID = \"return 1.0 / (1.0 + exp(-1.0 * x));\";\nexports.SOFTPLUS = \"\\n  float epsilon = 1.1920928955078125e-7;\\n  float threshold = log(epsilon) + 2.0;\\n\\n  bool too_large = x > -threshold;\\n  bool too_small = x < threshold;\\n\\n  float result;\\n  float exp_x = exp(x);\\n\\n  if (too_large){\\n    result = x;\\n  }\\n  else if (too_small){\\n    result = exp_x;\\n  }\\n  else{\\n    result = log(exp_x + 1.0);\\n  }\\n  return result;\\n\";\nexports.SIN = CHECK_NAN_SNIPPET + \"\\n  return sin(x);\\n\";\nexports.COS = CHECK_NAN_SNIPPET + \"\\n  return cos(x);\\n\";\nexports.TAN = \"return tan(x);\";\nexports.ASIN = \"return asin(x);\";\nexports.ACOS = \"return acos(x);\";\nexports.ATAN = CHECK_NAN_SNIPPET + \"\\n  return atan(x);\\n\";\nexports.SINH = \"\\n  float e2x = exp(x);\\n  return (e2x - 1.0 / e2x) / 2.0;\\n\";\nexports.COSH = \"\\n  float e2x = exp(-x);\\n  return (e2x + 1.0 / e2x) / 2.0;\\n\";\nexports.TANH = \"\\n  float e2x = exp(-2.0 * abs(x));\\n  return sign(x) * (1.0 - e2x) / (1.0 + e2x);\\n\";\nexports.ASINH = \"return log(x + sqrt(x * x + 1.0));\";\nexports.ACOSH = CHECK_NAN_SNIPPET + \"\\n  if (x < 1.0) return NAN;\\n  return log(x + sqrt(x * x - 1.0));\";\nexports.ATANH = CHECK_NAN_SNIPPET + \"\\n  if ((x < -1.0) || (x > 1.0)) return NAN;\\n  return (log(1.0 + x) - log(1.0 - x)) / 2.0;\";\nexports.ERF = \"\\n  // Error function is calculated approximately with elementary function.\\n  // See \\\"Handbook of Mathematical Functions with Formulas,\\n  // Graphs, and Mathematical Tables\\\", Abramowitz and Stegun.\\n  float p = \" + erf_util.ERF_P + \";\\n  float a1 = \" + erf_util.ERF_A1 + \";\\n  float a2 = \" + erf_util.ERF_A2 + \";\\n  float a3 = \" + erf_util.ERF_A3 + \";\\n  float a4 = \" + erf_util.ERF_A4 + \";\\n  float a5 = \" + erf_util.ERF_A5 + \";\\n\\n  float t = 1.0 / (1.0 + p * x);\\n  return 1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x);\\n\";\nexports.SQUARE = \"return x * x;\";\nexports.RECIPROCAL = \"return 1.0 / x;\";\nexports.LOGICAL_NOT = \"return float(!(x >= 1.0));\";\nexports.TO_INT = \"return float(int(x));\";\n\n},{\"../../ops/erf_util\":131,\"../../ops/selu_util\":151}],117:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar MAX_TEXTURE_SIZE = null;\nvar util = require(\"../../util\");\nvar environment_1 = require(\"../../environment\");\nfunction createWebGLRenderingContext(attributes) {\n    var canvas = document.createElement('canvas');\n    canvas.width = 1;\n    canvas.height = 1;\n    return createWebGLRenderingContextFromCanvas(canvas, attributes);\n}\nexports.createWebGLRenderingContext = createWebGLRenderingContext;\nfunction createWebGLRenderingContextFromCanvas(canvas, attributes) {\n    var gl;\n    var webglVersion = environment_1.ENV.get('WEBGL_VERSION');\n    if (webglVersion === 2) {\n        gl = canvas.getContext('webgl2', attributes);\n    }\n    else if (webglVersion === 1) {\n        gl = (canvas.getContext('webgl', attributes) ||\n            canvas.getContext('experimental-webgl', attributes));\n    }\n    if (webglVersion === 0 || gl == null) {\n        throw new Error('This browser does not support WebGL.');\n    }\n    return gl;\n}\nexports.createWebGLRenderingContextFromCanvas = createWebGLRenderingContextFromCanvas;\nfunction callAndCheck(gl, func) {\n    var returnValue = func();\n    checkWebGLError(gl);\n    return returnValue;\n}\nexports.callAndCheck = callAndCheck;\nvar webGLDebugErrorCheckingEnabled = false;\nfunction enableDebugWebGLErrorChecking(enabled) {\n    webGLDebugErrorCheckingEnabled = enabled;\n}\nexports.enableDebugWebGLErrorChecking = enableDebugWebGLErrorChecking;\nfunction checkWebGLError(gl) {\n    if (webGLDebugErrorCheckingEnabled) {\n        var error = gl.getError();\n        if (error !== gl.NO_ERROR) {\n            throw new Error('WebGL Error: ' + getWebGLErrorMessage(gl, error));\n        }\n    }\n}\nexports.checkWebGLError = checkWebGLError;\nfunction getWebGLErrorMessage(gl, status) {\n    switch (status) {\n        case gl.NO_ERROR:\n            return 'NO_ERROR';\n        case gl.INVALID_ENUM:\n            return 'INVALID_ENUM';\n        case gl.INVALID_VALUE:\n            return 'INVALID_VALUE';\n        case gl.INVALID_OPERATION:\n            return 'INVALID_OPERATION';\n        case gl.INVALID_FRAMEBUFFER_OPERATION:\n            return 'INVALID_FRAMEBUFFER_OPERATION';\n        case gl.OUT_OF_MEMORY:\n            return 'OUT_OF_MEMORY';\n        case gl.CONTEXT_LOST_WEBGL:\n            return 'CONTEXT_LOST_WEBGL';\n        default:\n            return \"Unknown error code \" + status;\n    }\n}\nexports.getWebGLErrorMessage = getWebGLErrorMessage;\nfunction getExtensionOrThrow(gl, extensionName) {\n    return throwIfNull(gl, function () { return gl.getExtension(extensionName); }, 'Extension \"' + extensionName + '\" not supported on this browser.');\n}\nexports.getExtensionOrThrow = getExtensionOrThrow;\nfunction createVertexShader(gl, vertexShaderSource) {\n    var vertexShader = throwIfNull(gl, function () { return gl.createShader(gl.VERTEX_SHADER); }, 'Unable to create vertex WebGLShader.');\n    callAndCheck(gl, function () { return gl.shaderSource(vertexShader, vertexShaderSource); });\n    callAndCheck(gl, function () { return gl.compileShader(vertexShader); });\n    if (gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS) === false) {\n        console.log(gl.getShaderInfoLog(vertexShader));\n        throw new Error('Failed to compile vertex shader.');\n    }\n    return vertexShader;\n}\nexports.createVertexShader = createVertexShader;\nfunction createFragmentShader(gl, fragmentShaderSource) {\n    var fragmentShader = throwIfNull(gl, function () { return gl.createShader(gl.FRAGMENT_SHADER); }, 'Unable to create fragment WebGLShader.');\n    callAndCheck(gl, function () { return gl.shaderSource(fragmentShader, fragmentShaderSource); });\n    callAndCheck(gl, function () { return gl.compileShader(fragmentShader); });\n    if (gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS) === false) {\n        logShaderSourceAndInfoLog(fragmentShaderSource, gl.getShaderInfoLog(fragmentShader));\n        throw new Error('Failed to compile fragment shader.');\n    }\n    return fragmentShader;\n}\nexports.createFragmentShader = createFragmentShader;\nvar lineNumberRegex = /ERROR: [0-9]+:([0-9]+):/g;\nfunction logShaderSourceAndInfoLog(shaderSource, shaderInfoLog) {\n    var lineNumberRegexResult = lineNumberRegex.exec(shaderInfoLog);\n    if (lineNumberRegexResult == null) {\n        console.log(\"Couldn't parse line number in error: \" + shaderInfoLog);\n        console.log(shaderSource);\n        return;\n    }\n    var lineNumber = +lineNumberRegexResult[1];\n    var shaderLines = shaderSource.split('\\n');\n    var pad = shaderLines.length.toString().length + 2;\n    var linesWithLineNumbers = shaderLines.map(function (line, lineNumber) {\n        return util.rightPad((lineNumber + 1).toString(), pad) + line;\n    });\n    var maxLineLength = 0;\n    for (var i = 0; i < linesWithLineNumbers.length; i++) {\n        maxLineLength = Math.max(linesWithLineNumbers[i].length, maxLineLength);\n    }\n    var beforeErrorLines = linesWithLineNumbers.slice(0, lineNumber - 1);\n    var errorLine = linesWithLineNumbers.slice(lineNumber - 1, lineNumber);\n    var afterErrorLines = linesWithLineNumbers.slice(lineNumber);\n    console.log(beforeErrorLines.join('\\n'));\n    console.log(shaderInfoLog.split('\\n')[0]);\n    console.log(\"%c \" + util.rightPad(errorLine[0], maxLineLength), 'border:1px solid red; background-color:#e3d2d2; color:#a61717');\n    console.log(afterErrorLines.join('\\n'));\n}\nfunction createProgram(gl) {\n    return throwIfNull(gl, function () { return gl.createProgram(); }, 'Unable to create WebGLProgram.');\n}\nexports.createProgram = createProgram;\nfunction linkProgram(gl, program) {\n    callAndCheck(gl, function () { return gl.linkProgram(program); });\n    if (gl.getProgramParameter(program, gl.LINK_STATUS) === false) {\n        console.log(gl.getProgramInfoLog(program));\n        throw new Error('Failed to link vertex and fragment shaders.');\n    }\n}\nexports.linkProgram = linkProgram;\nfunction validateProgram(gl, program) {\n    callAndCheck(gl, function () { return gl.validateProgram(program); });\n    if (gl.getProgramParameter(program, gl.VALIDATE_STATUS) === false) {\n        console.log(gl.getProgramInfoLog(program));\n        throw new Error('Shader program validation failed.');\n    }\n}\nexports.validateProgram = validateProgram;\nfunction createStaticVertexBuffer(gl, data) {\n    var buffer = throwIfNull(gl, function () { return gl.createBuffer(); }, 'Unable to create WebGLBuffer');\n    callAndCheck(gl, function () { return gl.bindBuffer(gl.ARRAY_BUFFER, buffer); });\n    callAndCheck(gl, function () { return gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW); });\n    return buffer;\n}\nexports.createStaticVertexBuffer = createStaticVertexBuffer;\nfunction createStaticIndexBuffer(gl, data) {\n    var buffer = throwIfNull(gl, function () { return gl.createBuffer(); }, 'Unable to create WebGLBuffer');\n    callAndCheck(gl, function () { return gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer); });\n    callAndCheck(gl, function () { return gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, data, gl.STATIC_DRAW); });\n    return buffer;\n}\nexports.createStaticIndexBuffer = createStaticIndexBuffer;\nfunction queryMaxTextureSize(gl) {\n    if (MAX_TEXTURE_SIZE != null) {\n        return MAX_TEXTURE_SIZE;\n    }\n    MAX_TEXTURE_SIZE =\n        callAndCheck(gl, function () { return gl.getParameter(gl.MAX_TEXTURE_SIZE); });\n    return MAX_TEXTURE_SIZE;\n}\nexports.queryMaxTextureSize = queryMaxTextureSize;\nfunction getNumChannels() {\n    if (environment_1.ENV.get('WEBGL_VERSION') === 2) {\n        return 1;\n    }\n    return 4;\n}\nexports.getNumChannels = getNumChannels;\nfunction createTexture(gl) {\n    return throwIfNull(gl, function () { return gl.createTexture(); }, 'Unable to create WebGLTexture.');\n}\nexports.createTexture = createTexture;\nfunction validateTextureSize(gl, width, height) {\n    var maxTextureSize = queryMaxTextureSize(gl);\n    if ((width <= 0) || (height <= 0)) {\n        var requested = \"[\" + width + \"x\" + height + \"]\";\n        throw new Error('Requested texture size ' + requested + ' is invalid.');\n    }\n    if ((width > maxTextureSize) || (height > maxTextureSize)) {\n        var requested = \"[\" + width + \"x\" + height + \"]\";\n        var max = \"[\" + maxTextureSize + \"x\" + maxTextureSize + \"]\";\n        throw new Error('Requested texture size ' + requested +\n            ' greater than WebGL maximum on this browser / GPU ' + max + '.');\n    }\n}\nexports.validateTextureSize = validateTextureSize;\nfunction createFramebuffer(gl) {\n    return throwIfNull(gl, function () { return gl.createFramebuffer(); }, 'Unable to create WebGLFramebuffer.');\n}\nexports.createFramebuffer = createFramebuffer;\nfunction bindVertexBufferToProgramAttribute(gl, program, attribute, buffer, arrayEntriesPerItem, itemStrideInBytes, itemOffsetInBytes) {\n    var loc = gl.getAttribLocation(program, attribute);\n    if (loc === -1) {\n        return false;\n    }\n    callAndCheck(gl, function () { return gl.bindBuffer(gl.ARRAY_BUFFER, buffer); });\n    callAndCheck(gl, function () { return gl.vertexAttribPointer(loc, arrayEntriesPerItem, gl.FLOAT, false, itemStrideInBytes, itemOffsetInBytes); });\n    callAndCheck(gl, function () { return gl.enableVertexAttribArray(loc); });\n    return true;\n}\nexports.bindVertexBufferToProgramAttribute = bindVertexBufferToProgramAttribute;\nfunction bindTextureUnit(gl, texture, textureUnit) {\n    validateTextureUnit(gl, textureUnit);\n    callAndCheck(gl, function () { return gl.activeTexture(gl.TEXTURE0 + textureUnit); });\n    callAndCheck(gl, function () { return gl.bindTexture(gl.TEXTURE_2D, texture); });\n}\nexports.bindTextureUnit = bindTextureUnit;\nfunction unbindTextureUnit(gl, textureUnit) {\n    validateTextureUnit(gl, textureUnit);\n    callAndCheck(gl, function () { return gl.activeTexture(gl.TEXTURE0 + textureUnit); });\n    callAndCheck(gl, function () { return gl.bindTexture(gl.TEXTURE_2D, null); });\n}\nexports.unbindTextureUnit = unbindTextureUnit;\nfunction getProgramUniformLocationOrThrow(gl, program, uniformName) {\n    return throwIfNull(gl, function () { return gl.getUniformLocation(program, uniformName); }, 'uniform \"' + uniformName + '\" not present in program.');\n}\nexports.getProgramUniformLocationOrThrow = getProgramUniformLocationOrThrow;\nfunction getProgramUniformLocation(gl, program, uniformName) {\n    return gl.getUniformLocation(program, uniformName);\n}\nexports.getProgramUniformLocation = getProgramUniformLocation;\nfunction bindTextureToProgramUniformSampler(gl, program, texture, uniformSamplerLocation, textureUnit) {\n    callAndCheck(gl, function () { return bindTextureUnit(gl, texture, textureUnit); });\n    callAndCheck(gl, function () { return gl.uniform1i(uniformSamplerLocation, textureUnit); });\n}\nexports.bindTextureToProgramUniformSampler = bindTextureToProgramUniformSampler;\nfunction bindCanvasToFramebuffer(gl) {\n    callAndCheck(gl, function () { return gl.bindFramebuffer(gl.FRAMEBUFFER, null); });\n    callAndCheck(gl, function () { return gl.viewport(0, 0, gl.canvas.width, gl.canvas.height); });\n    callAndCheck(gl, function () { return gl.scissor(0, 0, gl.canvas.width, gl.canvas.height); });\n}\nexports.bindCanvasToFramebuffer = bindCanvasToFramebuffer;\nfunction bindColorTextureToFramebuffer(gl, texture, framebuffer) {\n    callAndCheck(gl, function () { return gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer); });\n    callAndCheck(gl, function () { return gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0); });\n}\nexports.bindColorTextureToFramebuffer = bindColorTextureToFramebuffer;\nfunction unbindColorTextureFromFramebuffer(gl, framebuffer) {\n    callAndCheck(gl, function () { return gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer); });\n    callAndCheck(gl, function () { return gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, null, 0); });\n}\nexports.unbindColorTextureFromFramebuffer = unbindColorTextureFromFramebuffer;\nfunction validateFramebuffer(gl) {\n    var status = gl.checkFramebufferStatus(gl.FRAMEBUFFER);\n    if (status !== gl.FRAMEBUFFER_COMPLETE) {\n        throw new Error('Error binding framebuffer: ' + getFramebufferErrorMessage(gl, status));\n    }\n}\nexports.validateFramebuffer = validateFramebuffer;\nfunction getFramebufferErrorMessage(gl, status) {\n    switch (status) {\n        case gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:\n            return 'FRAMEBUFFER_INCOMPLETE_ATTACHMENT';\n        case gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:\n            return 'FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT';\n        case gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:\n            return 'FRAMEBUFFER_INCOMPLETE_DIMENSIONS';\n        case gl.FRAMEBUFFER_UNSUPPORTED:\n            return 'FRAMEBUFFER_UNSUPPORTED';\n        default:\n            return \"unknown error \" + status;\n    }\n}\nexports.getFramebufferErrorMessage = getFramebufferErrorMessage;\nfunction throwIfNull(gl, returnTOrNull, failureMessage) {\n    var tOrNull = callAndCheck(gl, function () { return returnTOrNull(); });\n    if (tOrNull == null) {\n        throw new Error(failureMessage);\n    }\n    return tOrNull;\n}\nfunction validateTextureUnit(gl, textureUnit) {\n    var maxTextureUnit = gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS - 1;\n    var glTextureUnit = textureUnit + gl.TEXTURE0;\n    if (glTextureUnit < gl.TEXTURE0 || glTextureUnit > maxTextureUnit) {\n        var textureUnitRange = \"[gl.TEXTURE0, gl.TEXTURE\" + maxTextureUnit + \"]\";\n        throw new Error(\"textureUnit must be in \" + textureUnitRange + \".\");\n    }\n}\nfunction getTextureShapeFromLogicalShape(gl, logShape) {\n    if (logShape.length !== 2) {\n        var squeezeResult = util.squeezeShape(logShape);\n        logShape = squeezeResult.newShape;\n    }\n    var maxTexSize = queryMaxTextureSize(gl);\n    var size = util.sizeFromShape(logShape);\n    if (logShape.length <= 1 && size <= maxTexSize) {\n        return [size, 1];\n    }\n    else if (logShape.length === 2 && logShape[0] <= maxTexSize &&\n        logShape[1] <= maxTexSize) {\n        return logShape;\n    }\n    else if (logShape.length === 3 && logShape[0] <= maxTexSize &&\n        logShape[1] * logShape[2] <= maxTexSize) {\n        return [logShape[0], logShape[1] * logShape[2]];\n    }\n    else if (logShape.length === 4 && logShape[0] <= maxTexSize &&\n        logShape[1] * logShape[2] * logShape[3] <= maxTexSize) {\n        return [logShape[0], logShape[1] * logShape[2] * logShape[3]];\n    }\n    else {\n        return util.sizeToSquarishShape(size);\n    }\n}\nexports.getTextureShapeFromLogicalShape = getTextureShapeFromLogicalShape;\n\n},{\"../../environment\":55,\"../../util\":180}],118:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar array_ops_1 = require(\"../ops/array_ops\");\nfunction whereImpl(condShape, condVals) {\n    var indices = [];\n    for (var i = 0; i < condVals.length; i++) {\n        if (condVals[i]) {\n            indices.push(i);\n        }\n    }\n    var inBuffer = array_ops_1.buffer(condShape, 'int32');\n    var out = array_ops_1.buffer([indices.length, condShape.length], 'int32');\n    for (var i = 0; i < indices.length; i++) {\n        var loc = inBuffer.indexToLoc(indices[i]);\n        var offset = i * condShape.length;\n        out.values.set(loc, offset);\n    }\n    return out.toTensor();\n}\nexports.whereImpl = whereImpl;\n\n},{\"../ops/array_ops\":120}],119:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"./environment\");\nfunction warn() {\n    var msg = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        msg[_i] = arguments[_i];\n    }\n    if (!environment_1.ENV.get('IS_TEST')) {\n        console.warn.apply(console, msg);\n    }\n}\nexports.warn = warn;\nfunction log() {\n    var msg = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        msg[_i] = arguments[_i];\n    }\n    if (!environment_1.ENV.get('IS_TEST')) {\n        console.log.apply(console, msg);\n    }\n}\nexports.log = log;\n\n},{\"./environment\":55}],120:[function(require,module,exports){\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 = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, 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 environment_1 = require(\"../environment\");\nvar tensor_1 = require(\"../tensor\");\nvar tensor_util_env_1 = require(\"../tensor_util_env\");\nvar util = require(\"../util\");\nvar axis_util_1 = require(\"./axis_util\");\nvar concat_1 = require(\"./concat\");\nvar operation_1 = require(\"./operation\");\nvar rand_1 = require(\"./rand\");\nvar tensor_ops_1 = require(\"./tensor_ops\");\nfunction clone_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'clone');\n    var der = function (dy) {\n        return { $x: function () { return dy.toFloat(); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) {\n        return tensor_1.Tensor.make($x.shape, { dataId: $x.dataId }, $x.dtype);\n    }, { $x: $x }, der);\n}\nfunction eye_(numRows, numColumns, batchShape, dtype) {\n    if (dtype === void 0) { dtype = 'float32'; }\n    if (numColumns == null) {\n        numColumns = numRows;\n    }\n    var buff = buffer([numRows, numColumns], dtype);\n    var n = numRows <= numColumns ? numRows : numColumns;\n    for (var i = 0; i < n; ++i) {\n        buff.set(1, i, i);\n    }\n    var out = buff.toTensor().as2D(numRows, numColumns);\n    if (batchShape == null) {\n        return out;\n    }\n    else {\n        if (batchShape.length === 1) {\n            return exports.tile(exports.expandDims(out, 0), [batchShape[0], 1, 1]);\n        }\n        else if (batchShape.length === 2) {\n            return exports.tile(exports.expandDims(exports.expandDims(out, 0), 0), [batchShape[0], batchShape[1], 1, 1]);\n        }\n        else if (batchShape.length === 3) {\n            return exports.tile(exports.expandDims(exports.expandDims(exports.expandDims(out, 0), 0), 0), [batchShape[0], batchShape[1], batchShape[2], 1, 1]);\n        }\n        else {\n            throw new Error(\"eye() currently supports only 1D and 2D \" +\n                (\"batchShapes, but received \" + batchShape.length + \"D.\"));\n        }\n    }\n}\nfunction randomNormal_(shape, mean, stdDev, dtype, seed) {\n    if (mean === void 0) { mean = 0; }\n    if (stdDev === void 0) { stdDev = 1; }\n    if (dtype != null && dtype === 'bool') {\n        throw new Error(\"Unsupported data type \" + dtype);\n    }\n    var randGauss = new rand_1.MPRandGauss(mean, stdDev, dtype, false, seed);\n    var res = buffer(shape, dtype);\n    for (var i = 0; i < res.values.length; i++) {\n        res.values[i] = randGauss.nextValue();\n    }\n    return res.toTensor();\n}\nfunction truncatedNormal_(shape, mean, stdDev, dtype, seed) {\n    if (mean === void 0) { mean = 0; }\n    if (stdDev === void 0) { stdDev = 1; }\n    if (dtype != null && dtype === 'bool') {\n        throw new Error(\"Unsupported data type \" + dtype);\n    }\n    var randGauss = new rand_1.MPRandGauss(mean, stdDev, dtype, true, seed);\n    var res = buffer(shape, dtype);\n    for (var i = 0; i < res.values.length; i++) {\n        res.values[i] = randGauss.nextValue();\n    }\n    return res.toTensor();\n}\nfunction randomUniform_(shape, minval, maxval, dtype) {\n    if (minval === void 0) { minval = 0; }\n    if (maxval === void 0) { maxval = 1; }\n    if (dtype === void 0) { dtype = 'float32'; }\n    var res = buffer(shape, dtype);\n    for (var i = 0; i < res.values.length; i++) {\n        res.values[i] = util.randUniform(minval, maxval);\n    }\n    return res.toTensor();\n}\nfunction rand_(shape, randFunction, dtype) {\n    var size = util.sizeFromShape(shape);\n    var values = null;\n    if (dtype == null || dtype === 'float32') {\n        values = new Float32Array(size);\n    }\n    else if (dtype === 'int32') {\n        values = new Int32Array(size);\n    }\n    else if (dtype === 'bool') {\n        values = new Uint8Array(size);\n    }\n    else {\n        throw new Error(\"Unknown data type \" + dtype);\n    }\n    for (var i = 0; i < size; i++) {\n        values[i] = randFunction();\n    }\n    return tensor_1.Tensor.make(shape, { values: values }, dtype);\n}\nfunction multinomial_(logits, numSamples, seed, normalized) {\n    if (normalized === void 0) { normalized = false; }\n    var $logits = tensor_util_env_1.convertToTensor(logits, 'logits', 'multinomial');\n    var numOutcomes = $logits.size;\n    var origRank = $logits.rank;\n    if (numOutcomes < 2) {\n        throw new Error(\"Error in multinomial: you need at least 2 outcomes, but got \" +\n            (numOutcomes + \".\"));\n    }\n    if (origRank > 2) {\n        throw new Error(\"Rank of probabilities must be 1 or 2, but is \" + origRank);\n    }\n    seed = seed || Math.random();\n    var logits2D = origRank === 1 ? $logits.as2D(1, -1) : $logits;\n    var res = environment_1.ENV.engine.runKernel(function (backend) { return backend.multinomial(logits2D, normalized, numSamples, seed); }, { logits2D: logits2D });\n    return origRank === 1 ? res.as1D() : res;\n}\nfunction oneHot_(indices, depth, onValue, offValue) {\n    if (onValue === void 0) { onValue = 1; }\n    if (offValue === void 0) { offValue = 0; }\n    var $indices = tensor_util_env_1.convertToTensor(indices, 'indices', 'oneHot', 'int32');\n    util.assert($indices.dtype === 'int32', 'Indices must be of dtype `int32`');\n    if (depth < 2) {\n        throw new Error(\"Error in oneHot: depth must be >=2, but it is \" + depth);\n    }\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.oneHot($indices, depth, onValue, offValue); }, { $indices: $indices });\n}\nfunction fromPixels_(pixels, numChannels) {\n    if (numChannels === void 0) { numChannels = 3; }\n    if (numChannels > 4) {\n        throw new Error('Cannot construct Tensor with more than 4 channels from pixels.');\n    }\n    return environment_1.ENV.engine.fromPixels(pixels, numChannels);\n}\nfunction toPixels(img, canvas) {\n    return __awaiter(this, void 0, void 0, function () {\n        var $img, _a, height, width, depth, minTensor, maxTensor, min, max, data, multiplier, bytes, i, r, g, b, a, j, ctx, imageData;\n        return __generator(this, function (_b) {\n            switch (_b.label) {\n                case 0:\n                    $img = tensor_util_env_1.convertToTensor(img, 'img', 'toPixels', 'int32');\n                    if ($img.rank !== 2 && $img.rank !== 3) {\n                        throw new Error(\"toPixels only supports rank 2 or 3 tensors, got rank \" + $img.rank + \".\");\n                    }\n                    _a = $img.shape.slice(0, 2), height = _a[0], width = _a[1];\n                    depth = $img.rank === 2 ? 1 : $img.shape[2];\n                    if (depth > 4 || depth === 2) {\n                        throw new Error(\"toPixels only supports depth of size \" +\n                            (\"1, 3 or 4 but got \" + depth));\n                    }\n                    minTensor = $img.min();\n                    maxTensor = $img.max();\n                    return [4, minTensor.data()];\n                case 1:\n                    min = (_b.sent())[0];\n                    return [4, maxTensor.data()];\n                case 2:\n                    max = (_b.sent())[0];\n                    minTensor.dispose();\n                    maxTensor.dispose();\n                    if ($img.dtype === 'float32') {\n                        if (min < 0 || max > 1) {\n                            throw new Error(\"Tensor values for a float32 Tensor must be in the \" +\n                                (\"range [0 - 1] but got range [\" + min + \" - \" + max + \"].\"));\n                        }\n                    }\n                    else if ($img.dtype === 'int32') {\n                        if (min < 0 || max > 255) {\n                            throw new Error(\"Tensor values for a int32 Tensor must be in the \" +\n                                (\"range [0 - 255] but got range [\" + min + \" - \" + max + \"].\"));\n                        }\n                    }\n                    else {\n                        throw new Error(\"Unsupported type for toPixels: \" + $img.dtype + \".\" +\n                            \" Please use float32 or int32 tensors.\");\n                    }\n                    return [4, $img.data()];\n                case 3:\n                    data = _b.sent();\n                    multiplier = $img.dtype === 'float32' ? 255 : 1;\n                    bytes = new Uint8ClampedArray(width * height * 4);\n                    for (i = 0; i < height * width; ++i) {\n                        r = void 0, g = void 0, b = void 0, a = void 0;\n                        if (depth === 1) {\n                            r = data[i] * multiplier;\n                            g = data[i] * multiplier;\n                            b = data[i] * multiplier;\n                            a = 255;\n                        }\n                        else if (depth === 3) {\n                            r = data[i * 3] * multiplier;\n                            g = data[i * 3 + 1] * multiplier;\n                            b = data[i * 3 + 2] * multiplier;\n                            a = 255;\n                        }\n                        else if (depth === 4) {\n                            r = data[i * 4] * multiplier;\n                            g = data[i * 4 + 1] * multiplier;\n                            b = data[i * 4 + 2] * multiplier;\n                            a = data[i * 4 + 3] * multiplier;\n                        }\n                        j = i * 4;\n                        bytes[j + 0] = Math.round(r);\n                        bytes[j + 1] = Math.round(g);\n                        bytes[j + 2] = Math.round(b);\n                        bytes[j + 3] = Math.round(a);\n                    }\n                    if (canvas != null) {\n                        canvas.width = width;\n                        canvas.height = height;\n                        ctx = canvas.getContext('2d');\n                        imageData = new ImageData(bytes, width, height);\n                        ctx.putImageData(imageData, 0, 0);\n                    }\n                    if ($img !== img) {\n                        $img.dispose();\n                    }\n                    return [2, bytes];\n            }\n        });\n    });\n}\nexports.toPixels = toPixels;\nfunction reshape_(x, shape) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'reshape');\n    shape = util.inferFromImplicitShape(shape, $x.size);\n    util.assert($x.size === util.sizeFromShape(shape), 'new shape and old shape must have the same number of elements.');\n    var grad = function (dy) {\n        return { $x: function () { return dy.reshape($x.shape); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.reshape($x, shape); }, { $x: $x }, grad);\n}\nfunction squeeze_(x, axis) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'squeeze');\n    return exports.reshape($x, util.squeezeShape($x.shape, axis).newShape);\n}\nfunction cast_(x, dtype) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'cast');\n    var grad = function (dy) {\n        return { $x: function () { return dy.clone(); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.cast($x, dtype); }, { $x: $x }, grad);\n}\nfunction tile_(x, reps) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'tile');\n    util.assert($x.rank === reps.length, \"Error in transpose: rank of input \" + $x.rank + \" \" +\n        (\"must match length of reps \" + reps + \".\"));\n    var grad = function (dy) {\n        var derX = function () {\n            var xGrad = tensor_ops_1.zerosLike($x);\n            if ($x.rank === 1) {\n                for (var i = 0; i < reps[0]; ++i) {\n                    xGrad = xGrad.add(dy.slice([i * $x.shape[0]], [$x.shape[0]]));\n                }\n            }\n            else if ($x.rank === 2) {\n                for (var i = 0; i < reps[0]; ++i) {\n                    for (var j = 0; j < reps[1]; ++j) {\n                        xGrad = xGrad.add(dy.slice([i * $x.shape[0], j * $x.shape[1]], [$x.shape[0], $x.shape[1]]));\n                    }\n                }\n            }\n            else if ($x.rank === 3) {\n                for (var i = 0; i < reps[0]; ++i) {\n                    for (var j = 0; j < reps[1]; ++j) {\n                        for (var k = 0; k < reps[2]; ++k) {\n                            xGrad = xGrad.add(dy.slice([i * $x.shape[0], j * $x.shape[1], k * $x.shape[2]], [$x.shape[0], $x.shape[1], $x.shape[2]]));\n                        }\n                    }\n                }\n            }\n            else if ($x.rank === 4) {\n                for (var i = 0; i < reps[0]; ++i) {\n                    for (var j = 0; j < reps[1]; ++j) {\n                        for (var k = 0; k < reps[2]; ++k) {\n                            for (var l = 0; l < reps[3]; ++l) {\n                                xGrad = xGrad.add(dy.slice([\n                                    i * $x.shape[0], j * $x.shape[1], k * $x.shape[2],\n                                    l * $x.shape[3]\n                                ], [$x.shape[0], $x.shape[1], $x.shape[2], $x.shape[3]]));\n                            }\n                        }\n                    }\n                }\n            }\n            else {\n                throw new Error(\"Gradient for tile operation is not implemented for rank-\" +\n                    ($x.rank + \" tensors yet.\"));\n            }\n            return xGrad;\n        };\n        return { $x: derX };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.tile($x, reps); }, { $x: $x }, grad);\n}\nfunction pad1d_(x, paddings, constantValue) {\n    if (constantValue === void 0) { constantValue = 0; }\n    util.assert(paddings.length === 2, 'Invalid number of paddings. Must be length of 2.');\n    return exports.pad(x, [paddings], constantValue);\n}\nfunction pad2d_(x, paddings, constantValue) {\n    if (constantValue === void 0) { constantValue = 0; }\n    util.assert(paddings.length === 2 && paddings[0].length === 2 &&\n        paddings[1].length === 2, 'Invalid number of paddings. Must be length of 2 each.');\n    return exports.pad(x, paddings, constantValue);\n}\nfunction pad3d_(x, paddings, constantValue) {\n    if (constantValue === void 0) { constantValue = 0; }\n    util.assert(paddings.length === 3 && paddings[0].length === 2 &&\n        paddings[1].length === 2 && paddings[2].length === 2, 'Invalid number of paddings. Must be length of 2 each.');\n    return exports.pad(x, paddings, constantValue);\n}\nfunction pad4d_(x, paddings, constantValue) {\n    if (constantValue === void 0) { constantValue = 0; }\n    util.assert(paddings.length === 4 && paddings[0].length === 2 &&\n        paddings[1].length === 2 && paddings[2].length === 2 &&\n        paddings[3].length === 2, 'Invalid number of paddings. Must be length of 2 each.');\n    return exports.pad(x, paddings, constantValue);\n}\nfunction pad_(x, paddings, constantValue) {\n    if (constantValue === void 0) { constantValue = 0; }\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'pad');\n    if ($x.rank === 0) {\n        throw new Error('pad(scalar) is not defined. Pass non-scalar to pad');\n    }\n    var begin = paddings.map(function (p) { return p[0]; });\n    var grad = function (dy) {\n        return { $x: function () { return dy.slice(begin, $x.shape); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.pad($x, paddings, constantValue); }, { $x: $x }, grad);\n}\nfunction stack_(tensors, axis) {\n    if (axis === void 0) { axis = 0; }\n    var $tensors = tensor_util_env_1.convertToTensorArray(tensors, 'tensors', 'stack');\n    util.assert($tensors.length >= 1, 'Pass at least one tensor to tf.stack');\n    if ($tensors.length === 1) {\n        return $tensors[0].expandDims(axis);\n    }\n    var rank = $tensors[0].rank;\n    var shape = $tensors[0].shape;\n    var dtype = $tensors[0].dtype;\n    util.assert(axis <= rank, 'Axis must be <= rank of the tensor');\n    $tensors.forEach(function (t) {\n        util.assertShapesMatch(shape, t.shape, 'All tensors passed to stack must have matching shapes');\n    });\n    $tensors.forEach(function (t) {\n        util.assert(dtype === t.dtype, 'All tensors passed to stack must have matching dtypes');\n    });\n    var expandedTensors = $tensors.map(function (t) { return t.expandDims(axis); });\n    return concat_1.concat(expandedTensors, axis);\n}\nfunction batchToSpaceND_(x, blockShape, crops) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'batchToSpaceND');\n    var prod = blockShape.reduce(function (a, b) { return a * b; });\n    util.assert($x.rank >= 1 + blockShape.length, \"input rank should be > than [blockShape] but got \" + $x.rank);\n    util.assert(crops.length === blockShape.length, \"crops.shape[0] must be equal to [blockShape] but got \" + crops.length);\n    util.assert($x.shape[0] % prod === 0, \"input tensor batch must be divisible by prod( blockShape )\");\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.batchToSpaceND($x, blockShape, crops); }, {});\n}\nfunction spaceToBatchND_(x, blockShape, paddings) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'spaceToBatchND');\n    util.assert($x.rank >= 1 + blockShape.length, \"input rank should be > than [blockShape] but got \" + $x.rank);\n    util.assert(paddings.length === blockShape.length, \"paddings.shape[0] must be equal to [blockShape], got \" + paddings.length);\n    util.assert($x.shape.reduce(function (a, b, i) {\n        if (i > 0 && i <= blockShape.length) {\n            return a && (b % blockShape[i - 1] === 0);\n        }\n        return a;\n    }, true), \"input spatial dimensions must be divisible by blockShapes\");\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.spaceToBatchND($x, blockShape, paddings); }, {});\n}\nfunction unstack_(x, axis) {\n    if (axis === void 0) { axis = 0; }\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'unstack');\n    var num = $x.shape[axis];\n    var outputShape = Array($x.rank - 1).fill(0);\n    var outIndex = 0;\n    for (var i = 0; i < $x.rank; i++) {\n        if (i !== axis) {\n            outputShape[outIndex] = $x.shape[i];\n            outIndex++;\n        }\n    }\n    var splitSizes;\n    splitSizes = Array(num).fill(1);\n    var begin = Array($x.rank).fill(0);\n    var size = $x.shape.slice();\n    return splitSizes.map(function (s) {\n        size[axis] = s;\n        var slice = $x.slice(begin, size);\n        begin[axis] += s;\n        return slice.reshape(outputShape);\n    });\n}\nfunction split_(x, numOrSizeSplits, axis) {\n    if (axis === void 0) { axis = 0; }\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'split');\n    axis = axis_util_1.parseAxisParam(axis, $x.shape)[0];\n    var splitSizes;\n    if (typeof (numOrSizeSplits) === 'number') {\n        util.assert($x.shape[axis] % numOrSizeSplits === 0, 'Number of splits must evenly divide the axis.');\n        splitSizes = Array(numOrSizeSplits).fill($x.shape[axis] / numOrSizeSplits);\n    }\n    else {\n        util.assert($x.shape[axis] === numOrSizeSplits.reduce(function (a, b) { return a + b; }), 'The sum of sizes must match the size of the axis dimension.');\n        splitSizes = numOrSizeSplits;\n    }\n    var begin = Array($x.rank).fill(0);\n    var size = $x.shape.slice();\n    return splitSizes.map(function (s) {\n        size[axis] = s;\n        var slice = $x.slice(begin, size);\n        begin[axis] += s;\n        return slice;\n    });\n}\nfunction cumsum_(x, axis, exclusive, reverse) {\n    if (axis === void 0) { axis = 0; }\n    if (exclusive === void 0) { exclusive = false; }\n    if (reverse === void 0) { reverse = false; }\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'cumsum');\n    axis = axis | 0;\n    var permutation = axis_util_1.getAxesPermutation([axis], $x.rank);\n    var permutedX = $x;\n    if (permutation != null) {\n        permutedX = $x.transpose(permutation);\n    }\n    var permutedAxis = axis_util_1.getInnerMostAxes(1, $x.rank)[0];\n    var grad = function (dy) {\n        return { permutedX: function () { return dy.cumsum(axis, exclusive, !reverse); } };\n    };\n    var value = environment_1.ENV.engine.runKernel(function (backend) { return backend.cumsum(permutedX, permutedAxis, exclusive, reverse); }, { permutedX: permutedX }, grad);\n    if (permutation != null) {\n        value = value.transpose(permutation);\n    }\n    return value;\n}\nfunction expandDims_(x, axis) {\n    if (axis === void 0) { axis = 0; }\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'expandDims');\n    util.assert(axis <= $x.rank, 'Axis must be <= rank of the tensor');\n    var newShape = $x.shape.slice();\n    if (axis < 0) {\n        util.assert(-($x.rank + 1) <= axis, \"Axis must be in the interval [\" + -($x.rank + 1) + \", \" + $x.rank + \"]\");\n        axis = $x.rank + axis + 1;\n    }\n    newShape.splice(axis, 0, 1);\n    return exports.reshape($x, newShape);\n}\nfunction buffer(shape, dtype, values) {\n    if (dtype === void 0) { dtype = 'float32'; }\n    return new tensor_1.TensorBuffer(shape, dtype, values);\n}\nexports.buffer = buffer;\nfunction print(x, verbose) {\n    if (verbose === void 0) { verbose = false; }\n    console.log(x.toString(verbose));\n}\nexports.print = print;\nexports.cast = operation_1.op({ cast_: cast_ });\nexports.clone = operation_1.op({ clone_: clone_ });\nexports.cumsum = operation_1.op({ cumsum_: cumsum_ });\nexports.expandDims = operation_1.op({ expandDims_: expandDims_ });\nexports.eye = operation_1.op({ eye_: eye_ });\nexports.fromPixels = operation_1.op({ fromPixels_: fromPixels_ });\nexports.multinomial = operation_1.op({ multinomial_: multinomial_ });\nexports.oneHot = operation_1.op({ oneHot_: oneHot_ });\nexports.pad = operation_1.op({ pad_: pad_ });\nexports.pad1d = operation_1.op({ pad1d_: pad1d_ });\nexports.pad2d = operation_1.op({ pad2d_: pad2d_ });\nexports.pad3d = operation_1.op({ pad3d_: pad3d_ });\nexports.pad4d = operation_1.op({ pad4d_: pad4d_ });\nexports.rand = operation_1.op({ rand_: rand_ });\nexports.randomNormal = operation_1.op({ randomNormal_: randomNormal_ });\nexports.randomUniform = operation_1.op({ randomUniform_: randomUniform_ });\nexports.reshape = operation_1.op({ reshape_: reshape_ });\nexports.split = operation_1.op({ split_: split_ });\nexports.squeeze = operation_1.op({ squeeze_: squeeze_ });\nexports.stack = operation_1.op({ stack_: stack_ });\nexports.tile = operation_1.op({ tile_: tile_ });\nexports.truncatedNormal = operation_1.op({ truncatedNormal_: truncatedNormal_ });\nexports.unstack = operation_1.op({ unstack_: unstack_ });\nexports.batchToSpaceND = operation_1.op({ batchToSpaceND_: batchToSpaceND_ });\nexports.spaceToBatchND = operation_1.op({ spaceToBatchND_: spaceToBatchND_ });\n\n},{\"../environment\":55,\"../tensor\":173,\"../tensor_util_env\":176,\"../util\":180,\"./axis_util\":122,\"./concat\":127,\"./operation\":141,\"./rand\":144,\"./tensor_ops\":156}],121:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction getReshaped(inputShape, blockShape, prod, batchToSpace) {\n    if (batchToSpace === void 0) { batchToSpace = true; }\n    var reshaped = [];\n    if (batchToSpace) {\n        reshaped = reshaped.concat(blockShape.slice(0));\n        reshaped.push(inputShape[0] / prod);\n        reshaped = reshaped.concat(inputShape.slice(1));\n    }\n    else {\n        reshaped = reshaped.concat(inputShape[0]);\n        var spatialLength = blockShape.length;\n        for (var i = 0; i < spatialLength; ++i) {\n            reshaped =\n                reshaped.concat([inputShape[i + 1] / blockShape[i], blockShape[i]]);\n        }\n        reshaped = reshaped.concat(inputShape.slice(spatialLength + 1));\n    }\n    return reshaped;\n}\nexports.getReshaped = getReshaped;\nfunction getPermuted(reshapedRank, blockShapeRank, batchToSpace) {\n    if (batchToSpace === void 0) { batchToSpace = true; }\n    var permuted = [];\n    if (batchToSpace) {\n        permuted.push(blockShapeRank);\n        for (var i = blockShapeRank + 1; i < reshapedRank; ++i) {\n            if (i <= 2 * blockShapeRank) {\n                permuted.push(i);\n                permuted.push(i - (blockShapeRank + 1));\n            }\n            else {\n                permuted.push(i);\n            }\n        }\n    }\n    else {\n        var permutedBeforeBatch = [];\n        var permutedAfterBatch = [];\n        for (var i = 1; i < reshapedRank; ++i) {\n            if (i >= blockShapeRank * 2 + 1 || i % 2 === 1) {\n                permutedAfterBatch.push(i);\n            }\n            else {\n                permutedBeforeBatch.push(i);\n            }\n        }\n        permuted.push.apply(permuted, permutedBeforeBatch);\n        permuted.push(0);\n        permuted.push.apply(permuted, permutedAfterBatch);\n    }\n    return permuted;\n}\nexports.getPermuted = getPermuted;\nfunction getReshapedPermuted(inputShape, blockShape, prod, batchToSpace) {\n    if (batchToSpace === void 0) { batchToSpace = true; }\n    var reshapedPermuted = [];\n    if (batchToSpace) {\n        reshapedPermuted.push(inputShape[0] / prod);\n    }\n    else {\n        reshapedPermuted.push(inputShape[0] * prod);\n    }\n    for (var i = 1; i < inputShape.length; ++i) {\n        if (i <= blockShape.length) {\n            if (batchToSpace) {\n                reshapedPermuted.push(blockShape[i - 1] * inputShape[i]);\n            }\n            else {\n                reshapedPermuted.push(inputShape[i] / blockShape[i - 1]);\n            }\n        }\n        else {\n            reshapedPermuted.push(inputShape[i]);\n        }\n    }\n    return reshapedPermuted;\n}\nexports.getReshapedPermuted = getReshapedPermuted;\nfunction getSliceBeginCoords(crops, blockShape) {\n    var sliceBeginCoords = [0];\n    for (var i = 0; i < blockShape; ++i) {\n        sliceBeginCoords.push(crops[i][0]);\n    }\n    return sliceBeginCoords;\n}\nexports.getSliceBeginCoords = getSliceBeginCoords;\nfunction getSliceSize(uncroppedShape, crops, blockShape) {\n    var sliceSize = uncroppedShape.slice(0, 1);\n    for (var i = 0; i < blockShape; ++i) {\n        sliceSize.push(uncroppedShape[i + 1] - crops[i][0] - crops[i][1]);\n    }\n    return sliceSize;\n}\nexports.getSliceSize = getSliceSize;\n\n},{}],122:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util = require(\"../util\");\nfunction axesAreInnerMostDims(axes, rank) {\n    for (var i = 0; i < axes.length; ++i) {\n        if (axes[axes.length - i - 1] !== rank - 1 - i) {\n            return false;\n        }\n    }\n    return true;\n}\nexports.axesAreInnerMostDims = axesAreInnerMostDims;\nfunction combineLocations(outputLoc, reduceLoc, axes) {\n    var rank = outputLoc.length + reduceLoc.length;\n    var loc = [];\n    var outIdx = 0;\n    var reduceIdx = 0;\n    for (var dim = 0; dim < rank; dim++) {\n        if (axes.indexOf(dim) === -1) {\n            loc.push(outputLoc[outIdx++]);\n        }\n        else {\n            loc.push(reduceLoc[reduceIdx++]);\n        }\n    }\n    return loc;\n}\nexports.combineLocations = combineLocations;\nfunction computeOutAndReduceShapes(aShape, axes) {\n    var outShape = [];\n    var rank = aShape.length;\n    for (var dim = 0; dim < rank; dim++) {\n        if (axes.indexOf(dim) === -1) {\n            outShape.push(aShape[dim]);\n        }\n    }\n    var reduceShape = axes.map(function (dim) { return aShape[dim]; });\n    return [outShape, reduceShape];\n}\nexports.computeOutAndReduceShapes = computeOutAndReduceShapes;\nfunction expandShapeToKeepDim(shape, axes) {\n    var reduceSubShape = axes.map(function (x) { return 1; });\n    return combineLocations(shape, reduceSubShape, axes);\n}\nexports.expandShapeToKeepDim = expandShapeToKeepDim;\nfunction parseAxisParam(axis, shape) {\n    var rank = shape.length;\n    axis = axis == null ? shape.map(function (s, i) { return i; }) : [].concat(axis);\n    util.assert(axis.every(function (ax) { return ax >= -rank && ax < rank; }), \"All values in axis param must be in range [-\" + rank + \", \" + rank + \") but \" +\n        (\"got axis \" + axis));\n    util.assert(axis.every(function (ax) { return util.isInt(ax); }), \"All values in axis param must be integers but \" +\n        (\"got axis \" + axis));\n    return axis.map(function (a) { return a < 0 ? rank + a : a; });\n}\nexports.parseAxisParam = parseAxisParam;\nfunction assertAxesAreInnerMostDims(msg, axes, rank) {\n    util.assert(axesAreInnerMostDims(axes, rank), msg + \" supports only inner-most axes for now. \" +\n        (\"Got axes \" + axes + \" and rank-\" + rank + \" input.\"));\n}\nexports.assertAxesAreInnerMostDims = assertAxesAreInnerMostDims;\nfunction getAxesPermutation(axes, rank) {\n    if (axesAreInnerMostDims(axes, rank)) {\n        return null;\n    }\n    var result = [];\n    for (var i = 0; i < rank; ++i) {\n        if (axes.indexOf(i) === -1) {\n            result.push(i);\n        }\n    }\n    axes.forEach(function (axis) { return result.push(axis); });\n    return result;\n}\nexports.getAxesPermutation = getAxesPermutation;\nfunction getUndoAxesPermutation(axes) {\n    return axes.map(function (axis, i) { return [i, axis]; })\n        .sort(function (a, b) { return a[1] - b[1]; })\n        .map(function (x) { return x[0]; });\n}\nexports.getUndoAxesPermutation = getUndoAxesPermutation;\nfunction getInnerMostAxes(numAxes, rank) {\n    var res = [];\n    for (var i = rank - numAxes; i < rank; ++i) {\n        res.push(i);\n    }\n    return res;\n}\nexports.getInnerMostAxes = getInnerMostAxes;\n\n},{\"../util\":180}],123:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"../environment\");\nvar tensor_util_env_1 = require(\"../tensor_util_env\");\nvar util = require(\"../util\");\nvar array_ops_1 = require(\"./array_ops\");\nvar broadcast_util_1 = require(\"./broadcast_util\");\nvar operation_1 = require(\"./operation\");\nvar tensor_ops_1 = require(\"./tensor_ops\");\nvar unary_ops_1 = require(\"./unary_ops\");\nfunction batchNormalization2d_(x, mean, variance, varianceEpsilon, scale, offset) {\n    if (varianceEpsilon === void 0) { varianceEpsilon = .001; }\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'batchNormalization');\n    var $mean = tensor_util_env_1.convertToTensor(mean, 'mean', 'batchNormalization');\n    var $variance = tensor_util_env_1.convertToTensor(variance, 'variance', 'batchNormalization');\n    var $scale;\n    if (scale != null) {\n        $scale = tensor_util_env_1.convertToTensor(scale, 'scale', 'batchNormalization');\n    }\n    var $offset;\n    if (offset != null) {\n        $offset = tensor_util_env_1.convertToTensor(offset, 'offset', 'batchNormalization');\n    }\n    util.assert($x.rank === 2, \"Error in batchNormalization3D: x must be rank 3 but got rank \" +\n        ($x.rank + \".\"));\n    util.assert($mean.rank === 2 || $mean.rank === 1, \"Error in batchNormalization2D: mean must be rank 2 or rank 1 but \" +\n        (\"got rank \" + $mean.rank + \".\"));\n    util.assert($variance.rank === 2 || $variance.rank === 1, \"Error in batchNormalization2D: variance must be rank 2 or rank 1 \" +\n        (\"but got rank \" + $variance.rank + \".\"));\n    if ($scale != null) {\n        util.assert($scale.rank === 2 || $scale.rank === 1, \"Error in batchNormalization2D: scale must be rank 2 or rank 1 \" +\n            (\"but got rank \" + $scale.rank + \".\"));\n    }\n    if ($offset != null) {\n        util.assert($offset.rank === 2 || $offset.rank === 1, \"Error in batchNormalization2D: offset must be rank 2 or rank 1 \" +\n            (\"but got rank \" + $offset.rank + \".\"));\n    }\n    return exports.batchNormalization($x, $mean, $variance, varianceEpsilon, $scale, $offset);\n}\nfunction batchNormalization3d_(x, mean, variance, varianceEpsilon, scale, offset) {\n    if (varianceEpsilon === void 0) { varianceEpsilon = .001; }\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'batchNormalization');\n    var $mean = tensor_util_env_1.convertToTensor(mean, 'mean', 'batchNormalization');\n    var $variance = tensor_util_env_1.convertToTensor(variance, 'variance', 'batchNormalization');\n    var $scale;\n    if (scale != null) {\n        $scale = tensor_util_env_1.convertToTensor(scale, 'scale', 'batchNormalization');\n    }\n    var $offset;\n    if (offset != null) {\n        $offset = tensor_util_env_1.convertToTensor(offset, 'offset', 'batchNormalization');\n    }\n    util.assert($x.rank === 3, \"Error in batchNormalization3D: x must be rank 3 but got rank \" +\n        ($x.rank + \".\"));\n    util.assert($mean.rank === 3 || $mean.rank === 1, \"Error in batchNormalization3D: mean must be rank 3 or rank 1 but \" +\n        (\"got rank \" + $mean.rank + \".\"));\n    util.assert($variance.rank === 3 || $variance.rank === 1, \"Error in batchNormalization3D: variance must be rank 3 or rank 1 \" +\n        (\"but got rank \" + $variance.rank + \".\"));\n    if ($scale != null) {\n        util.assert($scale.rank === 3 || $scale.rank === 1, \"Error in batchNormalization3D: scale must be rank 3 or rank 1 \" +\n            (\"but got rank \" + $scale.rank + \".\"));\n    }\n    if ($offset != null) {\n        util.assert($offset.rank === 3 || $offset.rank === 1, \"Error in batchNormalization3D: offset must be rank 3 or rank 1 \" +\n            (\"but got rank \" + $offset.rank + \".\"));\n    }\n    return exports.batchNormalization($x, $mean, $variance, varianceEpsilon, $scale, $offset);\n}\nfunction batchNormalization4d_(x, mean, variance, varianceEpsilon, scale, offset) {\n    if (varianceEpsilon === void 0) { varianceEpsilon = .001; }\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'batchNormalization');\n    var $mean = tensor_util_env_1.convertToTensor(mean, 'mean', 'batchNormalization');\n    var $variance = tensor_util_env_1.convertToTensor(variance, 'variance', 'batchNormalization');\n    var $scale;\n    if (scale != null) {\n        $scale = tensor_util_env_1.convertToTensor(scale, 'scale', 'batchNormalization');\n    }\n    var $offset;\n    if (offset != null) {\n        $offset = tensor_util_env_1.convertToTensor(offset, 'offset', 'batchNormalization');\n    }\n    util.assert($x.rank === 4, \"Error in batchNormalization4D: x must be rank 4 but got rank \" +\n        ($x.rank + \".\"));\n    util.assert($mean.rank === 4 || $mean.rank === 1, \"Error in batchNormalization4D: mean must be rank 4 or rank 1 but \" +\n        (\"got rank \" + $mean.rank + \".\"));\n    util.assert($variance.rank === 4 || $variance.rank === 1, \"Error in batchNormalization4D: variance must be rank 4 or rank 1 \" +\n        (\"but got rank \" + $variance.rank + \".\"));\n    if ($scale != null) {\n        util.assert($scale.rank === 4 || $scale.rank === 1, \"Error in batchNormalization4D: scale must be rank 4 or rank 1 \" +\n            (\"but got rank \" + $scale.rank + \".\"));\n    }\n    if ($offset != null) {\n        util.assert($offset.rank === 4 || $offset.rank === 1, \"Error in batchNormalization4D: offset must be rank 4 or rank 1 \" +\n            (\"but got rank \" + $offset.rank + \".\"));\n    }\n    return exports.batchNormalization($x, $mean, $variance, varianceEpsilon, $scale, $offset);\n}\nfunction batchNormalization_(x, mean, variance, varianceEpsilon, scale, offset) {\n    if (varianceEpsilon === void 0) { varianceEpsilon = .001; }\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'batchNormalization');\n    var $mean = tensor_util_env_1.convertToTensor(mean, 'mean', 'batchNormalization');\n    var $variance = tensor_util_env_1.convertToTensor(variance, 'variance', 'batchNormalization');\n    var $scale;\n    if (scale != null) {\n        $scale = tensor_util_env_1.convertToTensor(scale, 'scale', 'batchNormalization');\n    }\n    var $offset;\n    if (offset != null) {\n        $offset = tensor_util_env_1.convertToTensor(offset, 'offset', 'batchNormalization');\n    }\n    util.assert($mean.rank === $variance.rank, 'Batch normalization gradient requires mean and variance to have ' +\n        'equal ranks.');\n    util.assert($offset == null || $mean.rank === $offset.rank, 'Batch normalization gradient requires mean and offset to have ' +\n        'equal ranks.');\n    util.assert($scale == null || $mean.rank === $scale.rank, 'Batch normalization gradient requires mean and scale to have ' +\n        'equal ranks.');\n    var x4D;\n    if ($x.rank === 0 || $x.rank === 1) {\n        x4D = $x.as4D(1, 1, 1, $x.size);\n    }\n    else if ($x.rank === 2) {\n        x4D = $x.as4D(1, 1, $x.shape[0], $x.shape[1]);\n    }\n    else if ($x.rank === 3) {\n        x4D = $x.as4D(1, $x.shape[0], $x.shape[1], $x.shape[2]);\n    }\n    else {\n        x4D = $x;\n    }\n    var der = function (dy) {\n        var scaleValue = $scale == null ? tensor_ops_1.scalar(1) : $scale;\n        var reductionAxes = broadcast_util_1.getReductionAxes($mean.shape, x4D.shape);\n        var tileShape = [];\n        if ($mean.rank === 1) {\n            for (var i = 0; i < x4D.shape.length - 1; ++i) {\n                tileShape.push(x4D.shape[i]);\n            }\n            tileShape.push(1);\n        }\n        var xMinusMean = $x.sub($mean);\n        var dyTimesScaleValue = dy.mul(scaleValue);\n        var oneOverSqrtVariance = unary_ops_1.rsqrt($variance.add(tensor_ops_1.scalar(varianceEpsilon)));\n        var minusHalfRCube = oneOverSqrtVariance.mul(oneOverSqrtVariance)\n            .mul(oneOverSqrtVariance)\n            .mul(tensor_ops_1.scalar(-0.5));\n        var derX = function () {\n            if ($mean.rank === 1) {\n                return dy\n                    .mul(array_ops_1.tile(oneOverSqrtVariance.as4D(1, 1, 1, $mean.shape[0]), tileShape))\n                    .mul(scaleValue)\n                    .reshape($x.shape);\n            }\n            else {\n                return dy.mul(oneOverSqrtVariance).mul(scaleValue).reshape($x.shape);\n            }\n        };\n        var derMean = function () {\n            var meanDer = oneOverSqrtVariance.mul(tensor_ops_1.scalar(-1)).mul(dyTimesScaleValue);\n            if ($mean.rank === 1) {\n                meanDer = meanDer.sum(reductionAxes);\n            }\n            return meanDer.reshape($mean.shape);\n        };\n        var derVariance = function () {\n            var varianceDer = minusHalfRCube.mul(xMinusMean).mul(dyTimesScaleValue);\n            if ($mean.rank === 1) {\n                varianceDer = varianceDer.sum(reductionAxes);\n            }\n            return varianceDer.reshape($mean.shape);\n        };\n        var derScale = function () {\n            var xMinusMean2TimesRsqrt = xMinusMean.mul(oneOverSqrtVariance);\n            var scaleDer = dy.mul(xMinusMean2TimesRsqrt);\n            if ($mean.rank === 1) {\n                scaleDer = scaleDer.sum(reductionAxes);\n            }\n            return scaleDer.reshape($mean.shape);\n        };\n        var derOffset = function () {\n            var offsetDer = dy;\n            if ($mean.rank === 1) {\n                offsetDer = offsetDer.sum(reductionAxes);\n            }\n            return offsetDer.reshape($mean.shape);\n        };\n        return {\n            $x: derX,\n            $mean: derMean,\n            $variance: derVariance,\n            $scale: derScale,\n            $offset: derOffset\n        };\n    };\n    var res = environment_1.ENV.engine.runKernel(function (backend) { return backend.batchNormalization(x4D, batchnormReshape4D($mean), batchnormReshape4D($variance), varianceEpsilon, batchnormReshape4D($scale), batchnormReshape4D($offset)); }, { $x: $x, $mean: $mean, $variance: $variance, $scale: $scale, $offset: $offset }, der);\n    return res.reshape($x.shape);\n}\nfunction batchnormReshape4D(x) {\n    if (x == null) {\n        return null;\n    }\n    if (x.rank === 0) {\n        return x.as1D();\n    }\n    else if (x.rank === 1) {\n        return x;\n    }\n    else if (x.rank === 2) {\n        return x.as4D(1, 1, x.shape[0], x.shape[1]);\n    }\n    else if (x.rank === 3) {\n        return x.as4D(1, x.shape[0], x.shape[1], x.shape[2]);\n    }\n    return x;\n}\nexports.batchNormalization2d = operation_1.op({ batchNormalization2d_: batchNormalization2d_ });\nexports.batchNormalization3d = operation_1.op({ batchNormalization3d_: batchNormalization3d_ });\nexports.batchNormalization4d = operation_1.op({ batchNormalization4d_: batchNormalization4d_ });\nexports.batchNormalization = operation_1.op({ batchNormalization_: batchNormalization_ });\n\n},{\"../environment\":55,\"../tensor_util_env\":176,\"../util\":180,\"./array_ops\":120,\"./broadcast_util\":125,\"./operation\":141,\"./tensor_ops\":156,\"./unary_ops\":159}],124:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"../environment\");\nvar tensor_util_1 = require(\"../tensor_util\");\nvar tensor_util_env_1 = require(\"../tensor_util_env\");\nvar types_1 = require(\"../types\");\nvar util = require(\"../util\");\nvar broadcast_util = require(\"./broadcast_util\");\nvar operation_1 = require(\"./operation\");\nvar tensor_ops_1 = require(\"./tensor_ops\");\nvar unary_ops_1 = require(\"./unary_ops\");\nfunction add_(a, b) {\n    var $a = tensor_util_env_1.convertToTensor(a, 'a', 'add');\n    var $b = tensor_util_env_1.convertToTensor(b, 'b', 'add');\n    tensor_util_1.assertTypesMatch($a, $b);\n    var outShape = broadcast_util.assertAndGetBroadcastShape($a.shape, $b.shape);\n    var der = function (dy) {\n        var derA = function () {\n            var res = dy;\n            var reduceAxes = broadcast_util.getReductionAxes($a.shape, outShape);\n            if (reduceAxes.length > 0) {\n                res = res.sum(reduceAxes);\n            }\n            return res.reshape($a.shape);\n        };\n        var derB = function () {\n            var res = dy;\n            var reduceAxes = broadcast_util.getReductionAxes($b.shape, outShape);\n            if (reduceAxes.length > 0) {\n                res = res.sum(reduceAxes);\n            }\n            return res.reshape($b.shape);\n        };\n        return { $a: derA, $b: derB };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.add($a, $b); }, { $a: $a, $b: $b }, der);\n}\nfunction addN_(tensors) {\n    util.assert(Array.isArray(tensors), function () { return 'The param passed to tf.addN() must be a list of tensors'; });\n    util.assert(tensors.length >= 1, function () { return \"Must pass at least one tensor to tf.addN(), but got \" +\n        (\"\" + tensors.length); });\n    var $tensors = tensors.map(function (t, i) { return tensor_util_env_1.convertToTensor(t, \"tensors\" + i, 'addN'); });\n    var firstTensor = $tensors[0];\n    $tensors.forEach(function (t) {\n        if (t.dtype !== firstTensor.dtype) {\n            throw new Error('All tensors passed to tf.addN() must have the same dtype');\n        }\n    });\n    $tensors.forEach(function (t) {\n        if (!util.arraysEqual(t.shape, firstTensor.shape)) {\n            throw new Error('All tensors passed to tf.addN() must have the same shape');\n        }\n    });\n    var der = function (dy) {\n        var ders = {};\n        $tensors.forEach(function (t, i) {\n            ders[i] = function () { return dy.clone(); };\n        });\n        return ders;\n    };\n    var inputs = $tensors;\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.addN($tensors); }, inputs, der);\n}\nfunction addStrict_(a, b) {\n    util.assertShapesMatch(a.shape, b.shape, 'Error in addStrict: ');\n    return a.add(b);\n}\nfunction sub_(a, b) {\n    var $a = tensor_util_env_1.convertToTensor(a, 'a', 'sub');\n    var $b = tensor_util_env_1.convertToTensor(b, 'b', 'sub');\n    tensor_util_1.assertTypesMatch($a, $b);\n    var outShape = broadcast_util.assertAndGetBroadcastShape($a.shape, $b.shape);\n    var der = function (dy) {\n        var derA = function () {\n            var res = dy;\n            var reduceAxes = broadcast_util.getReductionAxes($a.shape, outShape);\n            if (reduceAxes.length > 0) {\n                res = res.sum(reduceAxes);\n            }\n            return res.reshape($a.shape);\n        };\n        var derB = function () {\n            var res = dy;\n            var reduceAxes = broadcast_util.getReductionAxes($b.shape, outShape);\n            if (reduceAxes.length > 0) {\n                res = res.sum(reduceAxes);\n            }\n            return res.neg().reshape($b.shape);\n        };\n        return { $a: derA, $b: derB };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.subtract($a, $b); }, { $a: $a, $b: $b }, der);\n}\nfunction subStrict_(a, b) {\n    util.assertShapesMatch(a.shape, b.shape, 'Error in subStrict: ');\n    return a.sub(b);\n}\nfunction pow_(base, exp) {\n    var $base = tensor_util_env_1.convertToTensor(base, 'base', 'pow');\n    var $exp = tensor_util_env_1.convertToTensor(exp, 'exp', 'pow');\n    var outShape = broadcast_util.assertAndGetBroadcastShape($base.shape, $exp.shape);\n    base = $base.cast(types_1.upcastType($base.dtype, $exp.dtype));\n    exp = $exp.cast(types_1.upcastType($base.dtype, $exp.dtype));\n    var grad = function (dy, saved) {\n        var y = saved[0];\n        var derBase = function () {\n            var res = dy.mul($exp.toFloat().mul(y.div($base)));\n            var reduceAxes = broadcast_util.getReductionAxes($base.shape, outShape);\n            if (reduceAxes.length > 0) {\n                res = res.sum(reduceAxes);\n            }\n            return res.reshape($base.shape);\n        };\n        var derExp = function () {\n            var res = dy.mul(y.mul($base.log()).toFloat());\n            var reduceAxes = broadcast_util.getReductionAxes($exp.shape, outShape);\n            if (reduceAxes.length > 0) {\n                res = res.sum(reduceAxes);\n            }\n            return res.reshape($exp.shape);\n        };\n        return { $base: derBase, $exp: derExp };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend, save) { return save(backend.pow($base, $exp)); }, { $base: $base, $exp: $exp }, grad);\n}\nfunction powStrict_(base, exp) {\n    util.assertShapesMatch(base.shape, exp.shape, 'Error in powStrict: ');\n    return base.pow(exp);\n}\nfunction mul_(a, b) {\n    var $a = tensor_util_env_1.convertToTensor(a, 'a', 'mul');\n    var $b = tensor_util_env_1.convertToTensor(b, 'b', 'mul');\n    tensor_util_1.assertTypesMatch($a, $b);\n    var outShape = broadcast_util.assertAndGetBroadcastShape($a.shape, $b.shape);\n    var der = function (dy) {\n        var derA = function () {\n            var res = dy.mul($b.toFloat());\n            var reduceAxes = broadcast_util.getReductionAxes($a.shape, outShape);\n            if (reduceAxes.length > 0) {\n                return res.sum(reduceAxes).reshape($a.shape);\n            }\n            return res;\n        };\n        var derB = function () {\n            var res = dy.mul($a.toFloat());\n            var reduceAxes = broadcast_util.getReductionAxes($b.shape, outShape);\n            if (reduceAxes.length > 0) {\n                return res.sum(reduceAxes).reshape($b.shape);\n            }\n            return res;\n        };\n        return { $a: derA, $b: derB };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.multiply($a, $b); }, { $a: $a, $b: $b }, der);\n}\nfunction mulStrict_(a, b) {\n    util.assertShapesMatch(a.shape, b.shape, 'Error in multiplyStrict: ');\n    return a.mul(b);\n}\nfunction div_(a, b) {\n    var $a = tensor_util_env_1.convertToTensor(a, 'a', 'div');\n    var $b = tensor_util_env_1.convertToTensor(b, 'b', 'div');\n    tensor_util_1.assertTypesMatch($a, $b);\n    var forwardFunc;\n    if ($a.dtype === 'int32' && $b.dtype === 'int32') {\n        return exports.floorDiv($a, $b);\n    }\n    else {\n        forwardFunc = function (backend) { return backend.realDivide($a, $b); };\n    }\n    var outShape = broadcast_util.assertAndGetBroadcastShape($a.shape, $b.shape);\n    var der = function (dy) {\n        var derA = function () {\n            var res = dy.div($b.toFloat());\n            var reduceAxes = broadcast_util.getReductionAxes($a.shape, outShape);\n            if (reduceAxes.length > 0) {\n                return res.sum(reduceAxes).reshape($a.shape);\n            }\n            return res;\n        };\n        var derB = function () {\n            var res = dy.mul($a.toFloat());\n            var reduceAxes = broadcast_util.getReductionAxes($b.shape, outShape);\n            if (reduceAxes.length > 0) {\n                res = res.sum(reduceAxes).reshape($b.shape);\n            }\n            var tmp = $b.square();\n            return res.div(tmp.toFloat()).neg();\n        };\n        return { $a: derA, $b: derB };\n    };\n    return environment_1.ENV.engine.runKernel(forwardFunc, { $a: $a, $b: $b }, der);\n}\nfunction floorDiv_(a, b) {\n    var $a = tensor_util_env_1.convertToTensor(a, 'a', 'floorDiv');\n    var $b = tensor_util_env_1.convertToTensor(b, 'b', 'floorDiv');\n    tensor_util_1.assertTypesMatch($a, $b);\n    var forwardFunc = function (backend) { return backend.floorDiv($a, $b); };\n    var outShape = broadcast_util.assertAndGetBroadcastShape($a.shape, $b.shape);\n    var der = function (dy) {\n        var derA = function () {\n            var res = dy.div($b.toFloat());\n            var reduceAxes = broadcast_util.getReductionAxes($a.shape, outShape);\n            if (reduceAxes.length > 0) {\n                return res.sum(reduceAxes).reshape($a.shape);\n            }\n            return res;\n        };\n        var derB = function () {\n            var res = dy.mul($a.toFloat());\n            var reduceAxes = broadcast_util.getReductionAxes($b.shape, outShape);\n            if (reduceAxes.length > 0) {\n                res = res.sum(reduceAxes).reshape($b.shape);\n            }\n            var tmp = $b.square();\n            return res.div(tmp.toFloat()).neg();\n        };\n        return { $a: derA, $b: derB };\n    };\n    return environment_1.ENV.engine.runKernel(forwardFunc, { $a: $a, $b: $b }, der);\n}\nfunction divStrict_(a, b) {\n    util.assertShapesMatch(a.shape, b.shape, 'Error in divideStrict: ');\n    return a.div(b);\n}\nfunction mod_(a, b) {\n    var $a = tensor_util_env_1.convertToTensor(a, 'a', 'mod');\n    var $b = tensor_util_env_1.convertToTensor(b, 'b', 'mod');\n    tensor_util_1.assertTypesMatch($a, $b);\n    var outShape = broadcast_util.assertAndGetBroadcastShape($a.shape, $b.shape);\n    var der = function (dy) {\n        var derA = function () {\n            var reduceAxes = broadcast_util.getReductionAxes($a.shape, outShape);\n            if (reduceAxes.length > 0) {\n                return dy.sum(reduceAxes).reshape($a.shape);\n            }\n            return dy;\n        };\n        var derB = function () {\n            var res = dy.mul($a.div($b).floor().neg());\n            var reduceAxes = broadcast_util.getReductionAxes($b.shape, outShape);\n            if (reduceAxes.length > 0) {\n                return res.sum(reduceAxes).reshape($b.shape);\n            }\n            return res;\n        };\n        return { $a: derA, $b: derB };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.mod($a, $b); }, { $a: $a, $b: $b }, der);\n}\nfunction modStrict_(a, b) {\n    util.assertShapesMatch(a.shape, b.shape, 'Error in modStrict: ');\n    return a.mod(b);\n}\nfunction minimum_(a, b) {\n    var $a = tensor_util_env_1.convertToTensor(a, 'a', 'minimum');\n    var $b = tensor_util_env_1.convertToTensor(b, 'b', 'minimum');\n    tensor_util_1.assertTypesMatch($a, $b);\n    if ($a.dtype === 'bool') {\n        $a = $a.toInt();\n    }\n    if ($b.dtype === 'bool') {\n        $b = $b.toInt();\n    }\n    broadcast_util.assertAndGetBroadcastShape($a.shape, $b.shape);\n    var der = function (dy) {\n        var derA = function () { return dy.mul($a.lessEqual($b).toFloat()); };\n        var derB = function () { return dy.mul($a.greater($b).toFloat()); };\n        return { $a: derA, $b: derB };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.minimum($a, $b); }, { $a: $a, $b: $b }, der);\n}\nfunction minimumStrict_(a, b) {\n    util.assertShapesMatch(a.shape, b.shape, 'Error in minimumStrict: ');\n    return a.minimum(b);\n}\nfunction maximum_(a, b) {\n    var $a = tensor_util_env_1.convertToTensor(a, 'a', 'maximum');\n    var $b = tensor_util_env_1.convertToTensor(b, 'b', 'maximum');\n    tensor_util_1.assertTypesMatch($a, $b);\n    if ($a.dtype === 'bool') {\n        $a = $a.toInt();\n    }\n    if ($b.dtype === 'bool') {\n        $b = $b.toInt();\n    }\n    broadcast_util.assertAndGetBroadcastShape($a.shape, $b.shape);\n    var der = function (dy) {\n        var derA = function () { return dy.mul($a.greaterEqual($b).toFloat()); };\n        var derB = function () { return dy.mul($a.less($b).toFloat()); };\n        return { $a: derA, $b: derB };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.maximum($a, $b); }, { $a: $a, $b: $b }, der);\n}\nfunction maximumStrict_(a, b) {\n    util.assertShapesMatch(a.shape, b.shape, 'Error in minimumStrict: ');\n    return a.maximum(b);\n}\nfunction squaredDifference_(a, b) {\n    var $a = tensor_util_env_1.convertToTensor(a, 'a', 'squaredDifference');\n    var $b = tensor_util_env_1.convertToTensor(b, 'b', 'squaredDifference');\n    tensor_util_1.assertTypesMatch($a, $b);\n    broadcast_util.assertAndGetBroadcastShape($a.shape, $b.shape);\n    var der = function (dy) {\n        var two = tensor_ops_1.scalar(2);\n        var derA = function () { return dy.mul($a.sub($b).mul(two)); };\n        var derB = function () { return dy.mul($b.sub($a).mul(two)); };\n        return { $a: derA, $b: derB };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.squaredDifference($a, $b); }, { $a: $a, $b: $b }, der);\n}\nfunction squaredDifferenceStrict_(a, b) {\n    util.assertShapesMatch(a.shape, b.shape, 'Error in squaredDifferenceStrict: ');\n    return a.squaredDifference(b);\n}\nfunction atan2_(a, b) {\n    var $a = tensor_util_env_1.convertToTensor(a, 'a', 'atan2');\n    var $b = tensor_util_env_1.convertToTensor(b, 'b', 'atan2');\n    tensor_util_1.assertTypesMatch($a, $b);\n    var outShape = broadcast_util.assertAndGetBroadcastShape($a.shape, $b.shape);\n    var der = function (dy) {\n        var derA = function () {\n            var d = exports.add($a.square(), $b.square());\n            var res = dy.mul($b.div(d));\n            var reduceAxes = broadcast_util.getReductionAxes($a.shape, outShape);\n            if (reduceAxes.length > 0) {\n                res = res.sum(reduceAxes);\n            }\n            return res.reshape($a.shape);\n        };\n        var derB = function () {\n            var d = exports.add($a.square(), $b.square());\n            var res = unary_ops_1.neg(dy.mul($a.div(d)));\n            var reduceAxes = broadcast_util.getReductionAxes($b.shape, outShape);\n            if (reduceAxes.length > 0) {\n                res = res.sum(reduceAxes);\n            }\n            return res.reshape($b.shape);\n        };\n        return { $a: derA, $b: derB };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.atan2($a, $b); }, { $a: $a, $b: $b }, der);\n}\nexports.add = operation_1.op({ add_: add_ });\nexports.addN = operation_1.op({ addN_: addN_ });\nexports.addStrict = operation_1.op({ addStrict_: addStrict_ });\nexports.atan2 = operation_1.op({ atan2_: atan2_ });\nexports.div = operation_1.op({ div_: div_ });\nexports.divStrict = operation_1.op({ divStrict_: divStrict_ });\nexports.floorDiv = operation_1.op({ floorDiv_: floorDiv_ });\nexports.maximum = operation_1.op({ maximum_: maximum_ });\nexports.maximumStrict = operation_1.op({ maximumStrict_: maximumStrict_ });\nexports.minimum = operation_1.op({ minimum_: minimum_ });\nexports.minimumStrict = operation_1.op({ minimumStrict_: minimumStrict_ });\nexports.mod = operation_1.op({ mod_: mod_ });\nexports.modStrict = operation_1.op({ modStrict_: modStrict_ });\nexports.mul = operation_1.op({ mul_: mul_ });\nexports.mulStrict = operation_1.op({ mulStrict_: mulStrict_ });\nexports.pow = operation_1.op({ pow_: pow_ });\nexports.powStrict = operation_1.op({ powStrict_: powStrict_ });\nexports.squaredDifference = operation_1.op({ squaredDifference_: squaredDifference_ });\nexports.squaredDifferenceStrict = operation_1.op({ squaredDifferenceStrict_: squaredDifferenceStrict_ });\nexports.sub = operation_1.op({ sub_: sub_ });\nexports.subStrict = operation_1.op({ subStrict_: subStrict_ });\n\n},{\"../environment\":55,\"../tensor_util\":175,\"../tensor_util_env\":176,\"../types\":179,\"../util\":180,\"./broadcast_util\":125,\"./operation\":141,\"./tensor_ops\":156,\"./unary_ops\":159}],125:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction getBroadcastDims(inShape, outShape) {\n    var inRank = inShape.length;\n    var dims = [];\n    for (var i = 0; i < inRank; i++) {\n        var dim = inRank - 1 - i;\n        var a = inShape[dim] || 1;\n        var b = outShape[outShape.length - 1 - i] || 1;\n        if (b > 1 && a === 1) {\n            dims.unshift(dim);\n        }\n    }\n    return dims;\n}\nexports.getBroadcastDims = getBroadcastDims;\nfunction getReductionAxes(inShape, outShape) {\n    var result = [];\n    for (var i = 0; i < outShape.length; i++) {\n        var inDim = inShape[inShape.length - i - 1];\n        var outAxis = outShape.length - i - 1;\n        var outDim = outShape[outAxis];\n        if (inDim == null || (inDim === 1 && outDim > 1)) {\n            result.unshift(outAxis);\n        }\n    }\n    return result;\n}\nexports.getReductionAxes = getReductionAxes;\nfunction broadcastDimsAreOuter(dims) {\n    for (var i = 0; i < dims.length; i++) {\n        if (dims[i] !== i) {\n            return false;\n        }\n    }\n    return true;\n}\nexports.broadcastDimsAreOuter = broadcastDimsAreOuter;\nfunction assertAndGetBroadcastShape(shapeA, shapeB) {\n    var result = [];\n    var errMsg = \"Operands could not be broadcast together with shapes \" +\n        (shapeA + \" and \" + shapeB + \".\");\n    var l = Math.max(shapeA.length, shapeB.length);\n    for (var i = 0; i < l; i++) {\n        var a = shapeA[shapeA.length - i - 1] || 1;\n        var b = shapeB[shapeB.length - i - 1] || 1;\n        if (a > 1 && b > 1 && a !== b) {\n            throw Error(errMsg);\n        }\n        result.unshift(Math.max(a, b));\n    }\n    return result;\n}\nexports.assertAndGetBroadcastShape = assertAndGetBroadcastShape;\n\n},{}],126:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"../environment\");\nvar tensor_util_1 = require(\"../tensor_util\");\nvar tensor_util_env_1 = require(\"../tensor_util_env\");\nvar util_1 = require(\"../util\");\nvar broadcast_util_1 = require(\"./broadcast_util\");\nvar operation_1 = require(\"./operation\");\nfunction notEqual_(a, b) {\n    var $a = tensor_util_env_1.convertToTensor(a, 'a', 'notEqual');\n    var $b = tensor_util_env_1.convertToTensor(b, 'b', 'notEqual');\n    tensor_util_1.assertTypesMatch($a, $b);\n    broadcast_util_1.assertAndGetBroadcastShape($a.shape, $b.shape);\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.notEqual($a, $b); }, { $a: $a, $b: $b });\n}\nfunction notEqualStrict_(a, b) {\n    var $a = tensor_util_env_1.convertToTensor(a, 'a', 'notEqualStrict');\n    var $b = tensor_util_env_1.convertToTensor(b, 'b', 'notEqualStrict');\n    util_1.assertShapesMatch($a.shape, $b.shape, 'Error in notEqualStrict: ');\n    return $a.notEqual($b);\n}\nfunction less_(a, b) {\n    var $a = tensor_util_env_1.convertToTensor(a, 'a', 'less');\n    var $b = tensor_util_env_1.convertToTensor(b, 'b', 'less');\n    tensor_util_1.assertTypesMatch($a, $b);\n    broadcast_util_1.assertAndGetBroadcastShape($a.shape, $b.shape);\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.less($a, $b); }, { $a: $a, $b: $b });\n}\nfunction lessStrict_(a, b) {\n    var $a = tensor_util_env_1.convertToTensor(a, 'a', 'lessStrict');\n    var $b = tensor_util_env_1.convertToTensor(b, 'b', 'lessStrict');\n    util_1.assertShapesMatch($a.shape, $b.shape, 'Error in lessStrict: ');\n    return $a.less($b);\n}\nfunction equal_(a, b) {\n    var $a = tensor_util_env_1.convertToTensor(a, 'a', 'equal');\n    var $b = tensor_util_env_1.convertToTensor(b, 'b', 'equal');\n    tensor_util_1.assertTypesMatch($a, $b);\n    broadcast_util_1.assertAndGetBroadcastShape($a.shape, $b.shape);\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.equal($a, $b); }, { $a: $a, $b: $b });\n}\nfunction equalStrict_(a, b) {\n    var $a = tensor_util_env_1.convertToTensor(a, 'a', 'equalStrict');\n    var $b = tensor_util_env_1.convertToTensor(b, 'b', 'equalStrict');\n    util_1.assertShapesMatch($a.shape, $b.shape, 'Error in equalStrict: ');\n    return $a.equal($b);\n}\nfunction lessEqual_(a, b) {\n    var $a = tensor_util_env_1.convertToTensor(a, 'a', 'lessEqual');\n    var $b = tensor_util_env_1.convertToTensor(b, 'b', 'lessEqual');\n    tensor_util_1.assertTypesMatch($a, $b);\n    broadcast_util_1.assertAndGetBroadcastShape($a.shape, $b.shape);\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.lessEqual($a, $b); }, { $a: $a, $b: $b });\n}\nfunction lessEqualStrict_(a, b) {\n    var $a = tensor_util_env_1.convertToTensor(a, 'a', 'lessEqualStrict');\n    var $b = tensor_util_env_1.convertToTensor(b, 'b', 'lessEqualStrict');\n    util_1.assertShapesMatch($a.shape, $b.shape, 'Error in lessEqualStrict: ');\n    return $a.lessEqual($b);\n}\nfunction greater_(a, b) {\n    var $a = tensor_util_env_1.convertToTensor(a, 'a', 'greater');\n    var $b = tensor_util_env_1.convertToTensor(b, 'b', 'greater');\n    tensor_util_1.assertTypesMatch($a, $b);\n    broadcast_util_1.assertAndGetBroadcastShape($a.shape, $b.shape);\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.greater($a, $b); }, { $a: $a, $b: $b });\n}\nfunction greaterStrict_(a, b) {\n    var $a = tensor_util_env_1.convertToTensor(a, 'a', 'greaterStrict');\n    var $b = tensor_util_env_1.convertToTensor(b, 'b', 'greaterStrict');\n    util_1.assertShapesMatch($a.shape, $b.shape, 'Error in greaterStrict: ');\n    return $a.greater($b);\n}\nfunction greaterEqual_(a, b) {\n    var $a = tensor_util_env_1.convertToTensor(a, 'a', 'greaterEqual');\n    var $b = tensor_util_env_1.convertToTensor(b, 'b', 'greaterEqual');\n    tensor_util_1.assertTypesMatch($a, $b);\n    broadcast_util_1.assertAndGetBroadcastShape($a.shape, $b.shape);\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.greaterEqual($a, $b); }, { $a: $a, $b: $b });\n}\nfunction greaterEqualStrict_(a, b) {\n    var $a = tensor_util_env_1.convertToTensor(a, 'a', 'greaterEqualStrict');\n    var $b = tensor_util_env_1.convertToTensor(b, 'b', 'greaterEqualStrict');\n    util_1.assertShapesMatch($a.shape, $b.shape, 'Error in greaterEqualStrict: ');\n    return $a.greaterEqual($b);\n}\nexports.equal = operation_1.op({ equal_: equal_ });\nexports.equalStrict = operation_1.op({ equalStrict_: equalStrict_ });\nexports.greater = operation_1.op({ greater_: greater_ });\nexports.greaterEqual = operation_1.op({ greaterEqual_: greaterEqual_ });\nexports.greaterEqualStrict = operation_1.op({ greaterEqualStrict_: greaterEqualStrict_ });\nexports.greaterStrict = operation_1.op({ greaterStrict_: greaterStrict_ });\nexports.less = operation_1.op({ less_: less_ });\nexports.lessEqual = operation_1.op({ lessEqual_: lessEqual_ });\nexports.lessEqualStrict = operation_1.op({ lessEqualStrict_: lessEqualStrict_ });\nexports.lessStrict = operation_1.op({ lessStrict_: lessStrict_ });\nexports.notEqual = operation_1.op({ notEqual_: notEqual_ });\nexports.notEqualStrict = operation_1.op({ notEqualStrict_: notEqualStrict_ });\n\n},{\"../environment\":55,\"../tensor_util\":175,\"../tensor_util_env\":176,\"../util\":180,\"./broadcast_util\":125,\"./operation\":141}],127:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"../environment\");\nvar tensor_util_env_1 = require(\"../tensor_util_env\");\nvar util_1 = require(\"../util\");\nvar axis_util_1 = require(\"./axis_util\");\nvar concat_util = require(\"./concat_util\");\nvar operation_1 = require(\"./operation\");\nfunction concat1d_(tensors) {\n    return exports.concat(tensors, 0);\n}\nfunction concat2d_(tensors, axis) {\n    return exports.concat(tensors, axis);\n}\nfunction concat3d_(tensors, axis) {\n    return exports.concat(tensors, axis);\n}\nfunction concat4d_(tensors, axis) {\n    return exports.concat(tensors, axis);\n}\nfunction concat_(tensors, axis) {\n    if (axis === void 0) { axis = 0; }\n    util_1.assert(tensors.length >= 1, 'Pass at least one tensor to concat');\n    var $tensors = tensor_util_env_1.convertToTensorArray(tensors, 'tensors', 'concat');\n    var result = $tensors[0];\n    if ($tensors.length === 1) {\n        return result;\n    }\n    var axes = axis_util_1.parseAxisParam(axis, result.shape);\n    for (var i = 1; i < $tensors.length; ++i) {\n        result = concat2Tensors(result, $tensors[i], axes[0]);\n    }\n    return result;\n}\nfunction concat2Tensors(a, b, axis) {\n    concat_util.assertParams(a.shape, b.shape, axis);\n    var outShape = concat_util.computeOutShape(a.shape, b.shape, axis);\n    var a2D = a.as2D(-1, util_1.sizeFromShape(a.shape.slice(axis)));\n    var b2D = b.as2D(-1, util_1.sizeFromShape(b.shape.slice(axis)));\n    var _a = concat_util.computeGradientSliceShapes(a2D.shape, b2D.shape), aBegin = _a.aBegin, aSize = _a.aSize, bBegin = _a.bBegin, bSize = _a.bSize;\n    var der = function (dy) {\n        return { a: function () { return dy.slice(aBegin, aSize); }, b: function () { return dy.slice(bBegin, bSize); } };\n    };\n    var res = environment_1.ENV.engine.runKernel(function (backend) { return backend.concat(a2D, b2D); }, { a: a2D, b: b2D }, der);\n    return res.reshape(outShape);\n}\nexports.concat = operation_1.op({ concat_: concat_ });\nexports.concat1d = operation_1.op({ concat1d_: concat1d_ });\nexports.concat2d = operation_1.op({ concat2d_: concat2d_ });\nexports.concat3d = operation_1.op({ concat3d_: concat3d_ });\nexports.concat4d = operation_1.op({ concat4d_: concat4d_ });\n\n},{\"../environment\":55,\"../tensor_util_env\":176,\"../util\":180,\"./axis_util\":122,\"./concat_util\":128,\"./operation\":141}],128:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util = require(\"../util\");\nfunction assertParams(aShape, bShape, axis) {\n    var aRank = aShape.length;\n    var bRank = bShape.length;\n    util.assert(aShape.length === bShape.length, \"Error in concat\" + aRank + \"D: rank of x1 (\" + aRank + \") and x2 (\" + bRank + \") \" +\n        \"must be the same.\");\n    util.assert(axis >= 0 && axis < aRank, \"Error in concat\" + aRank + \"D: axis must be \" +\n        (\"between 0 and \" + (aRank - 1) + \".\"));\n    for (var i = 0; i < aRank; i++) {\n        util.assert((i === axis) || (aShape[i] === bShape[i]), \"Error in concat\" + aRank + \"D: Shape (\" + aShape + \") does not match \" +\n            (\"(\" + bShape + \") along the non-concatenated axis \" + i + \".\"));\n    }\n}\nexports.assertParams = assertParams;\nfunction computeOutShape(x1Shape, x2Shape, axis) {\n    util.assert(x1Shape.length === x2Shape.length, 'x1 and x2 should have the same rank.');\n    var outputShape = x1Shape.slice();\n    outputShape[axis] += x2Shape[axis];\n    return outputShape;\n}\nexports.computeOutShape = computeOutShape;\nfunction computeGradientSliceShapes(aShape, bShape) {\n    return {\n        aBegin: [0, 0],\n        aSize: aShape,\n        bBegin: [0, aShape[1]],\n        bSize: bShape\n    };\n}\nexports.computeGradientSliceShapes = computeGradientSliceShapes;\n\n},{\"../util\":180}],129:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"../environment\");\nvar tensor_util_env_1 = require(\"../tensor_util_env\");\nvar util = require(\"../util\");\nvar conv_util = require(\"./conv_util\");\nvar operation_1 = require(\"./operation\");\nfunction conv1d_(x, filter, stride, pad, dataFormat, dilation, dimRoundingMode) {\n    if (dataFormat === void 0) { dataFormat = 'NWC'; }\n    if (dilation === void 0) { dilation = 1; }\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'conv1d');\n    var $filter = tensor_util_env_1.convertToTensor(filter, 'filter', 'conv1d');\n    var x3D = $x;\n    var reshapedTo3D = false;\n    if ($x.rank === 2) {\n        reshapedTo3D = true;\n        x3D = $x.as3D(1, $x.shape[0], $x.shape[1]);\n    }\n    util.assert(x3D.rank === 3, \"Error in conv1d: input must be rank 3, but got rank \" + x3D.rank + \".\");\n    util.assert($filter.rank === 3, \"Error in conv1d: filter must be rank 3, but got rank \" +\n        ($filter.rank + \".\"));\n    if (dimRoundingMode != null) {\n        util.assert(util.isInt(pad), \"Error in conv1d: pad must be an integer when using, \" +\n            (\"dimRoundingMode \" + dimRoundingMode + \" but got pad \" + pad + \".\"));\n    }\n    util.assert(x3D.shape[2] === $filter.shape[1], \"Error in conv1d: depth of input (\" + x3D.shape[2] + \") must match \" +\n        (\"input depth for filter \" + $filter.shape[1] + \".\"));\n    util.assert(eitherStridesOrDilationsAreOne(stride, dilation), 'Error in conv1D: Either stride or dilation must be 1. ' +\n        (\"Got stride \" + stride + \" and dilation '\" + dilation + \"'\"));\n    util.assert(dataFormat === 'NWC', \"Error in conv1d: got dataFormat of \" + dataFormat + \" but only NWC is currently supported.\");\n    var filter4D = $filter.as4D(1, $filter.shape[0], $filter.shape[1], $filter.shape[2]);\n    var input4D = x3D.as4D(x3D.shape[0], 1, x3D.shape[1], x3D.shape[2]);\n    var strides = [1, stride];\n    var dilations = [1, dilation];\n    var conv2dDataFormat = 'NHWC';\n    var res = exports.conv2d(input4D, filter4D, strides, pad, conv2dDataFormat, dilations, dimRoundingMode);\n    if (reshapedTo3D) {\n        return res.as2D(res.shape[2], res.shape[3]);\n    }\n    return res.as3D(res.shape[0], res.shape[2], res.shape[3]);\n}\nfunction conv2d_(x, filter, strides, pad, dataFormat, dilations, dimRoundingMode) {\n    if (dataFormat === void 0) { dataFormat = 'NHWC'; }\n    if (dilations === void 0) { dilations = [1, 1]; }\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'conv2d');\n    var $filter = tensor_util_env_1.convertToTensor(filter, 'filter', 'conv2d');\n    var x4D = $x;\n    var reshapedTo4D = false;\n    if ($x.rank === 3) {\n        reshapedTo4D = true;\n        x4D = $x.as4D(1, $x.shape[0], $x.shape[1], $x.shape[2]);\n    }\n    util.assert(x4D.rank === 4, \"Error in conv2d: input must be rank 4, but got rank \" + x4D.rank + \".\");\n    util.assert($filter.rank === 4, \"Error in conv2d: filter must be rank 4, but got rank \" +\n        ($filter.rank + \".\"));\n    if (dimRoundingMode != null) {\n        util.assert(util.isInt(pad), \"Error in conv2d: pad must be an integer when using, \" +\n            (\"dimRoundingMode \" + dimRoundingMode + \" but got pad \" + pad + \".\"));\n    }\n    util.assert(x4D.shape[3] === $filter.shape[2], \"Error in conv2d: depth of input (\" + x4D.shape[3] + \") must match \" +\n        (\"input depth for filter \" + $filter.shape[2] + \".\"));\n    util.assert(eitherStridesOrDilationsAreOne(strides, dilations), 'Error in conv2D: Either strides or dilations must be 1. ' +\n        (\"Got strides \" + strides + \" and dilations '\" + dilations + \"'\"));\n    util.assert(dataFormat === 'NHWC', \"Error in conv2d: got dataFormat of \" + dataFormat + \" but only NHWC is currently supported.\");\n    var convInfo = conv_util.computeConv2DInfo(x4D.shape, $filter.shape, strides, dilations, pad, dimRoundingMode);\n    var grad = function (dy) {\n        util.assert(tupleValuesAreOne(dilations), 'Error in gradient of conv2D: dilation rates greater than 1 are not' +\n            (\"yet supported in gradients. Got dilations '\" + dilations + \"'\"));\n        return {\n            x: function () { return conv2dDerInput_(x4D.shape, dy, $filter, strides, pad); },\n            $filter: function () { return conv2dDerFilter_(x4D, dy, $filter.shape, strides, pad); }\n        };\n    };\n    var res = environment_1.ENV.engine.runKernel(function (backend) { return backend.conv2d(x4D, $filter, convInfo); }, { x: x4D, $filter: $filter }, grad);\n    if (reshapedTo4D) {\n        return res.as3D(res.shape[1], res.shape[2], res.shape[3]);\n    }\n    return res;\n}\nfunction conv2dDerInput_(xShape, dy, filter, strides, pad, dimRoundingMode) {\n    util.assert(xShape.length === dy.rank, \"Length of inShape \" +\n        (\"(\" + xShape.length + \") and rank of dy (\" + dy.rank + \") must match\"));\n    var xShape4D = xShape;\n    var dy4D = dy;\n    var reshapedTo4D = false;\n    if (dy.rank === 3) {\n        reshapedTo4D = true;\n        dy4D = dy.as4D(1, dy.shape[0], dy.shape[1], dy.shape[2]);\n        xShape4D = [1, xShape[0], xShape[1], xShape[2]];\n    }\n    var inDepth = xShape4D[3];\n    var outDepth = dy4D.shape[3];\n    util.assert(xShape4D.length === 4, \"Error in conv2dDerInput: inShape must be length 4, but got length \" +\n        (xShape4D.length + \".\"));\n    util.assert(dy4D.rank === 4, \"Error in conv2dDerInput: dy must be rank 4, but got \" +\n        (\"rank \" + dy4D.rank));\n    util.assert(filter.rank === 4, \"Error in conv2dDerInput: filter must be rank 4, but got \" +\n        (\"rank \" + filter.rank));\n    util.assert(inDepth === filter.shape[2], \"Error in conv2dDerInput: depth of input (\" + inDepth + \") must \" +\n        (\"match input depth for filter \" + filter.shape[2] + \".\"));\n    util.assert(outDepth === filter.shape[3], \"Error in conv2dDerInput: depth of output (\" + outDepth + \") must \" +\n        (\"match output depth for filter \" + filter.shape[3] + \".\"));\n    if (dimRoundingMode != null) {\n        util.assert(util.isInt(pad), \"Error in conv2dDerInput: pad must be an integer when using, \" +\n            (\"dimRoundingMode \" + dimRoundingMode + \" but got pad \" + pad + \".\"));\n    }\n    var dilations = 1;\n    var convInfo = conv_util.computeConv2DInfo(xShape4D, filter.shape, strides, dilations, pad, dimRoundingMode);\n    var res = environment_1.ENV.engine.runKernel(function (backend) { return backend.conv2dDerInput(dy4D, filter, convInfo); }, { dy4D: dy4D });\n    if (reshapedTo4D) {\n        return res.as3D(res.shape[1], res.shape[2], res.shape[3]);\n    }\n    return res;\n}\nfunction conv2dDerFilter_(x, dy, filterShape, strides, pad, dimRoundingMode) {\n    var x4D = x;\n    if (x.rank === 3) {\n        x4D = x.as4D(1, x.shape[0], x.shape[1], x.shape[2]);\n    }\n    var dy4D = dy;\n    if (dy4D.rank === 3) {\n        dy4D = dy.as4D(1, dy.shape[0], dy.shape[1], dy.shape[2]);\n    }\n    util.assert(x4D.rank === 4, \"Error in conv2dDerFilter: input must be rank 4, but got shape \" +\n        (x4D.shape + \".\"));\n    util.assert(dy4D.rank === 4, \"Error in conv2dDerFilter: dy must be rank 4, but got shape \" +\n        (dy4D.shape + \".\"));\n    util.assert(filterShape.length === 4, \"Error in conv2dDerFilter: filterShape must be length 4, but got \" +\n        (filterShape + \".\"));\n    util.assert(x4D.shape[3] === filterShape[2], \"Error in conv2dDerFilter: depth of input \" + x4D.shape[3] + \") must \" +\n        (\"match input depth in filter (\" + filterShape[2] + \".\"));\n    util.assert(dy4D.shape[3] === filterShape[3], \"Error in conv2dDerFilter: depth of dy (\" + dy4D.shape[3] + \") must \" +\n        (\"match output depth for filter (\" + filterShape[3] + \").\"));\n    if (dimRoundingMode != null) {\n        util.assert(util.isInt(pad), \"Error in conv2dDerFilter: pad must be an integer when using, \" +\n            (\"dimRoundingMode \" + dimRoundingMode + \" but got pad \" + pad + \".\"));\n    }\n    var dilations = 1;\n    var convInfo = conv_util.computeConv2DInfo(x4D.shape, filterShape, strides, dilations, pad, dimRoundingMode);\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.conv2dDerFilter(x4D, dy4D, convInfo); }, { x4D: x4D, dy4D: dy4D });\n}\nfunction conv2dTranspose_(x, filter, outputShape, strides, pad, dimRoundingMode) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'conv2dTranspose');\n    var $filter = tensor_util_env_1.convertToTensor(filter, 'filter', 'conv2dTranspose');\n    return conv2dDerInput_(outputShape, $x, $filter, strides, pad, dimRoundingMode);\n}\nfunction depthwiseConv2d_(x, filter, strides, pad, dataFormat, dilations, dimRoundingMode) {\n    if (dataFormat === void 0) { dataFormat = 'NHWC'; }\n    if (dilations === void 0) { dilations = [1, 1]; }\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'depthwiseConv2d');\n    var $filter = tensor_util_env_1.convertToTensor(filter, 'filter', 'depthwiseConv2d');\n    var x4D = $x;\n    var reshapedTo4D = false;\n    if ($x.rank === 3) {\n        reshapedTo4D = true;\n        x4D = $x.as4D(1, $x.shape[0], $x.shape[1], $x.shape[2]);\n    }\n    util.assert(x4D.rank === 4, \"Error in depthwiseConv2d: input must be rank 4, but got \" +\n        (\"rank \" + x4D.rank + \".\"));\n    util.assert($filter.rank === 4, \"Error in depthwiseConv2d: filter must be rank 4, but got rank \" +\n        ($filter.rank + \".\"));\n    util.assert(x4D.shape[3] === $filter.shape[2], \"Error in depthwiseConv2d: number of input channels \" +\n        (\"(\" + x4D.shape[3] + \") must match the inChannels dimension in \") +\n        (\"filter \" + $filter.shape[2] + \".\"));\n    if (dilations == null) {\n        dilations = [1, 1];\n    }\n    util.assert(eitherStridesOrDilationsAreOne(strides, dilations), 'Error in depthwiseConv2d: Either strides or dilations must be 1. ' +\n        (\"Got strides \" + strides + \" and dilations '\" + dilations + \"'\"));\n    if (dimRoundingMode != null) {\n        util.assert(util.isInt(pad), \"Error in depthwiseConv2d: pad must be an integer when using, \" +\n            (\"dimRoundingMode \" + dimRoundingMode + \" but got pad \" + pad + \".\"));\n    }\n    var convInfo = conv_util.computeConv2DInfo(x4D.shape, $filter.shape, strides, dilations, pad, dimRoundingMode, true);\n    var grad = function (dy) {\n        util.assert(tupleValuesAreOne(dilations), 'Error in gradient of depthwiseConv2d: dilation rates greater than ' +\n            (\"1 are not yet supported. Got dilations '\" + dilations + \"'\"));\n        return {\n            x: function () { return depthwiseConv2dDerInput(x4D.shape, dy, $filter, convInfo); },\n            $filter: function () { return depthwiseConv2dDerFilter(x4D, dy, $filter.shape, convInfo); },\n        };\n    };\n    var res = environment_1.ENV.engine.runKernel(function (backend) { return backend.depthwiseConv2D(x4D, $filter, convInfo); }, { x: x4D, $filter: $filter }, grad);\n    if (reshapedTo4D) {\n        return res.as3D(res.shape[1], res.shape[2], res.shape[3]);\n    }\n    return res;\n}\nfunction separableConv2d_(x, depthwiseFilter, pointwiseFilter, strides, pad, dilation, dataFormat) {\n    if (dilation === void 0) { dilation = [1, 1]; }\n    if (dataFormat === void 0) { dataFormat = 'NHWC'; }\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'separableConv2d');\n    var $depthwiseFilter = tensor_util_env_1.convertToTensor(depthwiseFilter, 'depthwiseFilter', 'separableConv2d');\n    var $pointwiseFilter = tensor_util_env_1.convertToTensor(pointwiseFilter, 'pointwiseFilter', 'separableConv2d');\n    var x4D = $x;\n    var reshapedTo4D = false;\n    if ($x.rank === 3) {\n        reshapedTo4D = true;\n        x4D = $x.as4D(1, $x.shape[0], $x.shape[1], $x.shape[2]);\n    }\n    if (dataFormat === 'NCHW') {\n        throw new Error('separableConv2d currently does not support dataFormat NCHW; only ' +\n            'NHWC is supported');\n    }\n    util.assert(x4D.rank === 4, \"Error in separableConv2d: input must be rank 4, but got \" +\n        (\"rank \" + x4D.rank + \".\"));\n    util.assert($depthwiseFilter.rank === 4, \"Error in separableConv2d: depthwise filter must be rank 4, but got \" +\n        (\"rank \" + $depthwiseFilter.rank + \".\"));\n    util.assert($pointwiseFilter.rank === 4, \"Error in separableConv2d: pointwise filter must be rank 4, but got \" +\n        (\"rank \" + $depthwiseFilter.rank + \".\"));\n    util.assert($pointwiseFilter.shape[0] === 1, \"Error in separableConv2d: the first dimension of pointwise filter \" +\n        (\" must be 1, but got \" + $pointwiseFilter.shape[0] + \".\"));\n    util.assert($pointwiseFilter.shape[1] === 1, \"Error in separableConv2d: the second dimension of pointwise filter \" +\n        (\" must be 1, but got \" + $pointwiseFilter.shape[1] + \".\"));\n    var inChannels = $depthwiseFilter.shape[2];\n    var channelMultiplier = $depthwiseFilter.shape[3];\n    util.assert($pointwiseFilter.shape[2] === inChannels * channelMultiplier, \"Error in separableConv2d: the third dimension of pointwise filter \" +\n        (\"must be \" + inChannels * channelMultiplier + \", \") +\n        (\"but got \" + $pointwiseFilter.shape[2] + \".\"));\n    var depthwise = exports.depthwiseConv2d(x4D, $depthwiseFilter, strides, pad, dataFormat, dilation);\n    var pointwiseStride = 1;\n    var res = exports.conv2d(depthwise, $pointwiseFilter, pointwiseStride, 'valid', dataFormat);\n    if (reshapedTo4D) {\n        return res.as3D(res.shape[1], res.shape[2], res.shape[3]);\n    }\n    return res;\n}\nfunction parseTupleParam(param) {\n    return typeof param === 'number' ? [param, param] : param;\n}\nfunction tupleValuesAreOne(param) {\n    var _a = parseTupleParam(param), dimA = _a[0], dimB = _a[1];\n    return dimA === 1 && dimB === 1;\n}\nfunction eitherStridesOrDilationsAreOne(strides, dilations) {\n    return tupleValuesAreOne(strides) || tupleValuesAreOne(dilations);\n}\nfunction depthwiseConv2dDerInput(xShape, dy, filter, convInfo) {\n    var dy4D = dy;\n    var reshapedTo4D = false;\n    if (dy.rank === 3) {\n        reshapedTo4D = true;\n        dy4D = dy.as4D(1, dy.shape[0], dy.shape[1], dy.shape[2]);\n    }\n    var res = environment_1.ENV.engine.runKernel(function (backend) { return backend.depthwiseConv2DDerInput(dy4D, filter, convInfo); }, { dy4D: dy4D });\n    if (reshapedTo4D) {\n        return res.as3D(res.shape[1], res.shape[2], res.shape[3]);\n    }\n    return res;\n}\nfunction depthwiseConv2dDerFilter(x, dy, filterShape, convInfo) {\n    var x4D = x;\n    if (x.rank === 3) {\n        x4D = x.as4D(1, x.shape[0], x.shape[1], x.shape[2]);\n    }\n    var dy4D = dy;\n    if (dy4D.rank === 3) {\n        dy4D = dy.as4D(1, dy.shape[0], dy.shape[1], dy.shape[2]);\n    }\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.depthwiseConv2DDerFilter(x4D, dy4D, convInfo); }, { x4D: x4D, dy4D: dy4D });\n}\nexports.conv1d = operation_1.op({ conv1d_: conv1d_ });\nexports.conv2d = operation_1.op({ conv2d_: conv2d_ });\nexports.depthwiseConv2d = operation_1.op({ depthwiseConv2d_: depthwiseConv2d_ });\nexports.separableConv2d = operation_1.op({ separableConv2d_: separableConv2d_ });\nexports.conv2dTranspose = operation_1.op({ conv2dTranspose_: conv2dTranspose_ });\n\n},{\"../environment\":55,\"../tensor_util_env\":176,\"../util\":180,\"./conv_util\":130,\"./operation\":141}],130:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util = require(\"../util\");\nfunction computePool2DInfo(inShape, filterSize, strides, pad, roundingMode, dataFormat) {\n    if (dataFormat === void 0) { dataFormat = 'channelsLast'; }\n    var _a = parseTupleParam(filterSize), filterHeight = _a[0], filterWidth = _a[1];\n    var filterShape;\n    if (dataFormat === 'channelsLast') {\n        filterShape = [filterHeight, filterWidth, inShape[3], inShape[3]];\n    }\n    else if (dataFormat === 'channelsFirst') {\n        filterShape = [filterHeight, filterWidth, inShape[1], inShape[1]];\n    }\n    else {\n        throw new Error(\"Unknown dataFormat \" + dataFormat);\n    }\n    var dilations = 1;\n    return computeConv2DInfo(inShape, filterShape, strides, dilations, pad, roundingMode, false, dataFormat);\n}\nexports.computePool2DInfo = computePool2DInfo;\nfunction computeConv2DInfo(inShape, filterShape, strides, dilations, pad, roundingMode, depthwise, dataFormat) {\n    if (depthwise === void 0) { depthwise = false; }\n    if (dataFormat === void 0) { dataFormat = 'channelsLast'; }\n    var _a = [-1, -1, -1, -1], batchSize = _a[0], inHeight = _a[1], inWidth = _a[2], inChannels = _a[3];\n    if (dataFormat === 'channelsLast') {\n        batchSize = inShape[0], inHeight = inShape[1], inWidth = inShape[2], inChannels = inShape[3];\n    }\n    else if (dataFormat === 'channelsFirst') {\n        batchSize = inShape[0], inChannels = inShape[1], inHeight = inShape[2], inWidth = inShape[3];\n    }\n    else {\n        throw new Error(\"Unknown dataFormat \" + dataFormat);\n    }\n    var filterHeight = filterShape[0], filterWidth = filterShape[1], filterChannels = filterShape[3];\n    var _b = parseTupleParam(strides), strideHeight = _b[0], strideWidth = _b[1];\n    var _c = parseTupleParam(dilations), dilationHeight = _c[0], dilationWidth = _c[1];\n    var effectiveFilterHeight = getEffectiveFilterSize(filterHeight, dilationHeight);\n    var effectiveFilterWidth = getEffectiveFilterSize(filterWidth, dilationWidth);\n    var _d = getPadAndOutInfo(pad, inHeight, inWidth, strideHeight, strideWidth, effectiveFilterHeight, effectiveFilterWidth, roundingMode), padInfo = _d.padInfo, outHeight = _d.outHeight, outWidth = _d.outWidth;\n    var outChannels = depthwise ? filterChannels * inChannels : filterChannels;\n    var outShape;\n    if (dataFormat === 'channelsFirst') {\n        outShape = [batchSize, outChannels, outHeight, outWidth];\n    }\n    else if (dataFormat === 'channelsLast') {\n        outShape = [batchSize, outHeight, outWidth, outChannels];\n    }\n    return {\n        batchSize: batchSize,\n        dataFormat: dataFormat,\n        inHeight: inHeight,\n        inWidth: inWidth,\n        inChannels: inChannels,\n        outHeight: outHeight,\n        outWidth: outWidth,\n        outChannels: outChannels,\n        padInfo: padInfo,\n        strideHeight: strideHeight,\n        strideWidth: strideWidth,\n        filterHeight: filterHeight,\n        filterWidth: filterWidth,\n        dilationHeight: dilationHeight,\n        dilationWidth: dilationWidth,\n        inShape: inShape,\n        outShape: outShape,\n        filterShape: filterShape\n    };\n}\nexports.computeConv2DInfo = computeConv2DInfo;\nfunction computeOutputShape3D(inShape, fieldSize, outDepth, stride, zeroPad, roundingMode) {\n    if (zeroPad == null) {\n        zeroPad = computeDefaultPad(inShape, fieldSize, stride);\n    }\n    var inputRows = inShape[0];\n    var inputCols = inShape[1];\n    var outputRows = conditionalRound((inputRows - fieldSize + 2 * zeroPad) / stride + 1, roundingMode);\n    util.assert(util.isInt(outputRows), \"The output # of rows (\" + outputRows + \") must be an integer. Change the \" +\n        \"stride and/or zero pad parameters\");\n    var outputCols = conditionalRound((inputCols - fieldSize + 2 * zeroPad) / stride + 1, roundingMode);\n    util.assert(util.isInt(outputCols), \"The output # of columns (\" + outputCols + \") must be an integer. Change \" +\n        \"the stride and/or zero pad parameters\");\n    return [outputRows, outputCols, outDepth];\n}\nfunction computeDefaultPad(inputShape, fieldSize, stride, dilation) {\n    if (dilation === void 0) { dilation = 1; }\n    var effectiveFieldSize = getEffectiveFilterSize(fieldSize, dilation);\n    return Math.floor((inputShape[0] * (stride - 1) - stride + effectiveFieldSize) / 2);\n}\nexports.computeDefaultPad = computeDefaultPad;\nfunction parseTupleParam(param) {\n    return typeof param === 'number' ? [param, param] : param;\n}\nfunction getEffectiveFilterSize(filterSize, dilation) {\n    if (dilation <= 1) {\n        return filterSize;\n    }\n    return filterSize + (filterSize - 1) * (dilation - 1);\n}\nfunction getPadAndOutInfo(pad, inHeight, inWidth, strideHeight, strideWidth, filterHeight, filterWidth, roundingMode) {\n    var padInfo;\n    var outHeight;\n    var outWidth;\n    if (typeof pad === 'number') {\n        var padType = (pad === 0) ? 'VALID' : 'NUMBER';\n        padInfo = { top: pad, bottom: pad, left: pad, right: pad, type: padType };\n        var outShape = computeOutputShape3D([inHeight, inWidth, 1], filterHeight, 1, strideHeight, pad, roundingMode);\n        outHeight = outShape[0];\n        outWidth = outShape[1];\n    }\n    else if (pad === 'same') {\n        outHeight = Math.ceil(inHeight / strideHeight);\n        outWidth = Math.ceil(inWidth / strideWidth);\n        var padAlongHeight = (outHeight - 1) * strideHeight + filterHeight - inHeight;\n        var padAlongWidth = (outWidth - 1) * strideWidth + filterWidth - inWidth;\n        var top_1 = Math.floor(padAlongHeight / 2);\n        var bottom = padAlongHeight - top_1;\n        var left = Math.floor(padAlongWidth / 2);\n        var right = padAlongWidth - left;\n        padInfo = { top: top_1, bottom: bottom, left: left, right: right, type: 'SAME' };\n    }\n    else if (pad === 'valid') {\n        padInfo = { top: 0, bottom: 0, left: 0, right: 0, type: 'VALID' };\n        outHeight = Math.ceil((inHeight - filterHeight + 1) / strideHeight);\n        outWidth = Math.ceil((inWidth - filterWidth + 1) / strideWidth);\n    }\n    else {\n        throw Error(\"Unknown padding parameter: \" + pad);\n    }\n    return { padInfo: padInfo, outHeight: outHeight, outWidth: outWidth };\n}\nfunction conditionalRound(value, roundingMode) {\n    if (!roundingMode) {\n        return value;\n    }\n    switch (roundingMode) {\n        case 'round':\n            return Math.round(value);\n        case 'ceil':\n            return Math.ceil(value);\n        case 'floor':\n            return Math.floor(value);\n        default:\n            throw new Error(\"Unknown roundingMode \" + roundingMode);\n    }\n}\n\n},{\"../util\":180}],131:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ERF_P = 0.3275911;\nexports.ERF_A1 = 0.254829592;\nexports.ERF_A2 = -0.284496736;\nexports.ERF_A3 = 1.421413741;\nexports.ERF_A4 = -1.453152027;\nexports.ERF_A5 = 1.061405429;\n\n},{}],132:[function(require,module,exports){\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 = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, 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 environment_1 = require(\"../environment\");\nvar non_max_suppression_impl_1 = require(\"../kernels/non_max_suppression_impl\");\nvar tensor_util_env_1 = require(\"../tensor_util_env\");\nvar util = require(\"../util\");\nvar operation_1 = require(\"./operation\");\nfunction resizeBilinear_(images, size, alignCorners) {\n    if (alignCorners === void 0) { alignCorners = false; }\n    var $images = tensor_util_env_1.convertToTensor(images, 'images', 'resizeBilinear');\n    util.assert($images.rank === 3 || $images.rank === 4, \"Error in resizeBilinear: x must be rank 3 or 4, but got \" +\n        (\"rank \" + $images.rank + \".\"));\n    util.assert(size.length === 2, \"Error in resizeBilinear: new shape must 2D, but got shape \" +\n        (size + \".\"));\n    var batchImages = $images;\n    var reshapedTo4D = false;\n    if ($images.rank === 3) {\n        reshapedTo4D = true;\n        batchImages =\n            $images.as4D(1, $images.shape[0], $images.shape[1], $images.shape[2]);\n    }\n    var newHeight = size[0], newWidth = size[1];\n    var forward = function (backend, save) {\n        return backend.resizeBilinear(batchImages, newHeight, newWidth, alignCorners);\n    };\n    var backward = function (dy, saved) {\n        return {\n            batchImages: function () { return environment_1.ENV.engine.runKernel(function (backend) {\n                return backend.resizeBilinearBackprop(dy, batchImages, alignCorners);\n            }, {}); }\n        };\n    };\n    var res = environment_1.ENV.engine.runKernel(forward, { batchImages: batchImages }, backward);\n    if (reshapedTo4D) {\n        return res.as3D(res.shape[1], res.shape[2], res.shape[3]);\n    }\n    return res;\n}\nfunction resizeNearestNeighbor_(images, size, alignCorners) {\n    if (alignCorners === void 0) { alignCorners = false; }\n    var $images = tensor_util_env_1.convertToTensor(images, 'images', 'resizeNearestNeighbor');\n    util.assert($images.rank === 3 || $images.rank === 4, \"Error in resizeNearestNeighbor: x must be rank 3 or 4, but got \" +\n        (\"rank \" + $images.rank + \".\"));\n    util.assert(size.length === 2, \"Error in resizeNearestNeighbor: new shape must 2D, but got shape \" +\n        (size + \".\"));\n    util.assert($images.dtype === 'float32' || $images.dtype === 'int32', '`images` must have `int32` or `float32` as dtype');\n    var batchImages = $images;\n    var reshapedTo4D = false;\n    if ($images.rank === 3) {\n        reshapedTo4D = true;\n        batchImages =\n            $images.as4D(1, $images.shape[0], $images.shape[1], $images.shape[2]);\n    }\n    var newHeight = size[0], newWidth = size[1];\n    var forward = function (backend, save) {\n        return backend.resizeNearestNeighbor(batchImages, newHeight, newWidth, alignCorners);\n    };\n    var backward = function (dy, saved) {\n        return {\n            batchImages: function () { return environment_1.ENV.engine.runKernel(function (backend) { return backend.resizeNearestNeighborBackprop(dy, batchImages, alignCorners); }, {}); }\n        };\n    };\n    var res = environment_1.ENV.engine.runKernel(forward, { batchImages: batchImages }, backward);\n    if (reshapedTo4D) {\n        return res.as3D(res.shape[1], res.shape[2], res.shape[3]);\n    }\n    return res;\n}\nfunction nonMaxSuppression_(boxes, scores, maxOutputSize, iouThreshold, scoreThreshold) {\n    if (iouThreshold === void 0) { iouThreshold = 0.5; }\n    if (scoreThreshold === void 0) { scoreThreshold = Number.NEGATIVE_INFINITY; }\n    var $boxes = tensor_util_env_1.convertToTensor(boxes, 'boxes', 'nonMaxSuppression');\n    var $scores = tensor_util_env_1.convertToTensor(scores, 'scores', 'nonMaxSuppression');\n    var inputs = nonMaxSuppSanityCheck($boxes, $scores, maxOutputSize, iouThreshold, scoreThreshold);\n    maxOutputSize = inputs.maxOutputSize;\n    iouThreshold = inputs.iouThreshold;\n    scoreThreshold = inputs.scoreThreshold;\n    return environment_1.ENV.engine.runKernel(function (b) { return b.nonMaxSuppression($boxes, $scores, maxOutputSize, iouThreshold, scoreThreshold); }, { $boxes: $boxes });\n}\nfunction nonMaxSuppressionAsync_(boxes, scores, maxOutputSize, iouThreshold, scoreThreshold) {\n    if (iouThreshold === void 0) { iouThreshold = 0.5; }\n    if (scoreThreshold === void 0) { scoreThreshold = Number.NEGATIVE_INFINITY; }\n    return __awaiter(this, void 0, void 0, function () {\n        var $boxes, $scores, inputs, boxesVals, scoresVals, res;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    $boxes = tensor_util_env_1.convertToTensor(boxes, 'boxes', 'nonMaxSuppressionAsync');\n                    $scores = tensor_util_env_1.convertToTensor(scores, 'scores', 'nonMaxSuppressionAsync');\n                    inputs = nonMaxSuppSanityCheck($boxes, $scores, maxOutputSize, iouThreshold, scoreThreshold);\n                    maxOutputSize = inputs.maxOutputSize;\n                    iouThreshold = inputs.iouThreshold;\n                    scoreThreshold = inputs.scoreThreshold;\n                    return [4, $boxes.data()];\n                case 1:\n                    boxesVals = _a.sent();\n                    return [4, $scores.data()];\n                case 2:\n                    scoresVals = _a.sent();\n                    res = non_max_suppression_impl_1.nonMaxSuppressionImpl(boxesVals, scoresVals, maxOutputSize, iouThreshold, scoreThreshold);\n                    if ($boxes !== boxes) {\n                        $boxes.dispose();\n                    }\n                    if ($scores !== scores) {\n                        $scores.dispose();\n                    }\n                    return [2, res];\n            }\n        });\n    });\n}\nfunction nonMaxSuppSanityCheck(boxes, scores, maxOutputSize, iouThreshold, scoreThreshold) {\n    if (iouThreshold == null) {\n        iouThreshold = 0.5;\n    }\n    if (scoreThreshold == null) {\n        scoreThreshold = Number.NEGATIVE_INFINITY;\n    }\n    var numBoxes = boxes.shape[0];\n    maxOutputSize = Math.min(maxOutputSize, numBoxes);\n    util.assert(0 <= iouThreshold && iouThreshold <= 1, \"iouThreshold must be in [0, 1], but was '\" + iouThreshold + \"'\");\n    util.assert(boxes.rank === 2, \"boxes must be a 2D tensor, but was of rank '\" + boxes.rank + \"'\");\n    util.assert(boxes.shape[1] === 4, \"boxes must have 4 columns, but 2nd dimension was \" + boxes.shape[1]);\n    util.assert(scores.rank === 1, 'scores must be a 1D tensor');\n    util.assert(scores.shape[0] === numBoxes, \"scores has incompatible shape with boxes. Expected \" + numBoxes + \", \" +\n        (\"but was \" + scores.shape[0]));\n    return { maxOutputSize: maxOutputSize, iouThreshold: iouThreshold, scoreThreshold: scoreThreshold };\n}\nexports.resizeBilinear = operation_1.op({ resizeBilinear_: resizeBilinear_ });\nexports.resizeNearestNeighbor = operation_1.op({ resizeNearestNeighbor_: resizeNearestNeighbor_ });\nexports.nonMaxSuppression = operation_1.op({ nonMaxSuppression_: nonMaxSuppression_ });\nexports.nonMaxSuppressionAsync = nonMaxSuppressionAsync_;\n\n},{\"../environment\":55,\"../kernels/non_max_suppression_impl\":74,\"../tensor_util_env\":176,\"../util\":180,\"./operation\":141}],133:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"../environment\");\nvar globals_1 = require(\"../globals\");\nvar util_1 = require(\"../util\");\nvar array_ops_1 = require(\"./array_ops\");\nvar norm_1 = require(\"./norm\");\nvar operation_1 = require(\"./operation\");\nvar reduction_ops_1 = require(\"./reduction_ops\");\nvar tensor_ops_1 = require(\"./tensor_ops\");\nfunction gramSchmidt_(xs) {\n    var inputIsTensor2D;\n    if (Array.isArray(xs)) {\n        inputIsTensor2D = false;\n        util_1.assert(xs != null && xs.length > 0, 'Gram-Schmidt process: input must not be null, undefined, or empty');\n        var dim = xs[0].shape[0];\n        for (var i = 1; i < xs.length; ++i) {\n            util_1.assert(xs[i].shape[0] === dim, 'Gram-Schmidt: Non-unique lengths found in the input vectors: ' +\n                (\"(\" + xs[i].shape[0] + \" vs. \" + dim + \")\"));\n        }\n    }\n    else {\n        inputIsTensor2D = true;\n        xs = array_ops_1.split(xs, xs.shape[0], 0).map(function (x) { return array_ops_1.squeeze(x, [0]); });\n    }\n    util_1.assert(xs.length <= xs[0].shape[0], \"Gram-Schmidt: Number of vectors (\" + xs.length + \") exceeds \" +\n        (\"number of dimensions (\" + xs[0].shape[0] + \").\"));\n    var ys = [];\n    var xs1d = xs;\n    var _loop_1 = function (i) {\n        ys.push(environment_1.ENV.engine.tidy(function () {\n            var x = xs1d[i];\n            if (i > 0) {\n                for (var j = 0; j < i; ++j) {\n                    var proj = reduction_ops_1.sum(ys[j].mulStrict(x)).mul(ys[j]);\n                    x = x.sub(proj);\n                }\n            }\n            return x.div(norm_1.norm(x, 'euclidean'));\n        }));\n    };\n    for (var i = 0; i < xs.length; ++i) {\n        _loop_1(i);\n    }\n    if (inputIsTensor2D) {\n        return array_ops_1.stack(ys, 0);\n    }\n    else {\n        return ys;\n    }\n}\nfunction qr_(x, fullMatrices) {\n    if (fullMatrices === void 0) { fullMatrices = false; }\n    if (x.rank < 2) {\n        throw new Error(\"qr() requires input tensor to have a rank >= 2, but got rank \" + x.rank);\n    }\n    else if (x.rank === 2) {\n        return qr2d(x, fullMatrices);\n    }\n    else {\n        var outerDimsProd = x.shape.slice(0, x.shape.length - 2)\n            .reduce(function (value, prev) { return value * prev; });\n        var x2ds = array_ops_1.unstack(x.reshape([\n            outerDimsProd, x.shape[x.shape.length - 2],\n            x.shape[x.shape.length - 1]\n        ]), 0);\n        var q2ds_1 = [];\n        var r2ds_1 = [];\n        x2ds.forEach(function (x2d) {\n            var _a = qr2d(x2d, fullMatrices), q2d = _a[0], r2d = _a[1];\n            q2ds_1.push(q2d);\n            r2ds_1.push(r2d);\n        });\n        var q = array_ops_1.stack(q2ds_1, 0).reshape(x.shape);\n        var r = array_ops_1.stack(r2ds_1, 0).reshape(x.shape);\n        return [q, r];\n    }\n}\nfunction qr2d(x, fullMatrices) {\n    if (fullMatrices === void 0) { fullMatrices = false; }\n    return environment_1.ENV.engine.tidy(function () {\n        if (x.shape.length !== 2) {\n            throw new Error(\"qr2d() requires a 2D Tensor, but got a \" + x.shape.length + \"D Tensor.\");\n        }\n        var m = x.shape[0];\n        var n = x.shape[1];\n        var q = array_ops_1.eye(m);\n        var r = x.clone();\n        var one2D = tensor_ops_1.tensor2d([[1]], [1, 1]);\n        var w = one2D.clone();\n        var iters = m >= n ? n : m;\n        var _loop_2 = function (j) {\n            var _a;\n            var rTemp = r;\n            var wTemp = w;\n            var qTemp = q;\n            _a = environment_1.ENV.engine.tidy(function () {\n                var rjEnd1 = r.slice([j, j], [m - j, 1]);\n                var normX = rjEnd1.norm();\n                var rjj = r.slice([j, j], [1, 1]);\n                var s = rjj.sign().neg();\n                var u1 = rjj.sub(s.mul(normX));\n                var wPre = rjEnd1.div(u1);\n                if (wPre.shape[0] === 1) {\n                    w = one2D.clone();\n                }\n                else {\n                    w = one2D.concat(wPre.slice([1, 0], [wPre.shape[0] - 1, wPre.shape[1]]), 0);\n                }\n                var tau = s.matMul(u1).div(normX).neg();\n                var rjEndAll = r.slice([j, 0], [m - j, n]);\n                var tauTimesW = tau.mul(w);\n                if (j === 0) {\n                    r = rjEndAll.sub(tauTimesW.matMul(w.transpose().matMul(rjEndAll)));\n                }\n                else {\n                    r = r.slice([0, 0], [j, n])\n                        .concat(rjEndAll.sub(tauTimesW.matMul(w.transpose().matMul(rjEndAll))), 0);\n                }\n                var qAllJEnd = q.slice([0, j], [m, q.shape[1] - j]);\n                if (j === 0) {\n                    q = qAllJEnd.sub(qAllJEnd.matMul(w).matMul(tauTimesW.transpose()));\n                }\n                else {\n                    q = q.slice([0, 0], [m, j])\n                        .concat(qAllJEnd.sub(qAllJEnd.matMul(w).matMul(tauTimesW.transpose())), 1);\n                }\n                return [w, r, q];\n            }), w = _a[0], r = _a[1], q = _a[2];\n            globals_1.dispose([rTemp, wTemp, qTemp]);\n        };\n        for (var j = 0; j < iters; ++j) {\n            _loop_2(j);\n        }\n        if (!fullMatrices && m > n) {\n            q = q.slice([0, 0], [m, n]);\n            r = r.slice([0, 0], [n, n]);\n        }\n        return [q, r];\n    });\n}\nexports.gramSchmidt = operation_1.op({ gramSchmidt_: gramSchmidt_ });\nexports.qr = operation_1.op({ qr_: qr_ });\n\n},{\"../environment\":55,\"../globals\":57,\"../util\":180,\"./array_ops\":120,\"./norm\":140,\"./operation\":141,\"./reduction_ops\":146,\"./tensor_ops\":156}],134:[function(require,module,exports){\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 = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, 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 environment_1 = require(\"../environment\");\nvar where_impl_1 = require(\"../kernels/where_impl\");\nvar tensor_util_env_1 = require(\"../tensor_util_env\");\nvar util_1 = require(\"../util\");\nvar broadcast_util_1 = require(\"./broadcast_util\");\nvar operation_1 = require(\"./operation\");\nvar tensor_ops_1 = require(\"./tensor_ops\");\nfunction logicalNot_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'logicalNot', 'bool');\n    util_1.assert($x.dtype === 'bool', 'Error Array must be of type bool.');\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.logicalNot($x); }, { $x: $x });\n}\nfunction logicalAnd_(a, b) {\n    var $a = tensor_util_env_1.convertToTensor(a, 'a', 'logicalAnd', 'bool');\n    var $b = tensor_util_env_1.convertToTensor(b, 'b', 'logicalAnd', 'bool');\n    util_1.assert($a.dtype === 'bool' && $b.dtype === 'bool', 'Error Array must be of type bool.');\n    broadcast_util_1.assertAndGetBroadcastShape($a.shape, $b.shape);\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.logicalAnd($a, $b); }, { $a: $a, $b: $b });\n}\nfunction logicalOr_(a, b) {\n    var $a = tensor_util_env_1.convertToTensor(a, 'a', 'logicalOr', 'bool');\n    var $b = tensor_util_env_1.convertToTensor(b, 'b', 'logicalOr', 'bool');\n    util_1.assert($a.dtype === 'bool' && $b.dtype === 'bool', 'Error Array must be of type bool.');\n    broadcast_util_1.assertAndGetBroadcastShape($a.shape, $b.shape);\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.logicalOr($a, $b); }, { $a: $a, $b: $b });\n}\nfunction logicalXor_(a, b) {\n    var $a = tensor_util_env_1.convertToTensor(a, 'a', 'logicalXor', 'bool');\n    var $b = tensor_util_env_1.convertToTensor(b, 'b', 'logicalXor', 'bool');\n    util_1.assert($a.dtype === 'bool' && $b.dtype === 'bool', 'Error Array must be of type bool.');\n    broadcast_util_1.assertAndGetBroadcastShape($a.shape, $b.shape);\n    return exports.logicalOr(a, b).logicalAnd(exports.logicalAnd(a, b).logicalNot());\n}\nfunction where_(condition, a, b) {\n    var $a = tensor_util_env_1.convertToTensor(a, 'a', 'where');\n    var $b = tensor_util_env_1.convertToTensor(b, 'b', 'where');\n    var $condition = tensor_util_env_1.convertToTensor(condition, 'condition', 'where', 'bool');\n    util_1.assert($condition.dtype === 'bool', 'Error Condition must be of type bool.');\n    util_1.assertShapesMatch($a.shape, $b.shape, 'Error in where: ');\n    if ($condition.rank === 1) {\n        util_1.assert($condition.shape[0] === $a.shape[0], 'The first dimension of `a` must match the size of `condition`.');\n    }\n    else {\n        util_1.assertShapesMatch($condition.shape, $b.shape, 'Error in where: ');\n    }\n    var grad = function (dy) { return ({\n        $condition: function () { return tensor_ops_1.zerosLike($condition); },\n        $a: function () { return dy.mul($condition.cast($a.dtype)); },\n        $b: function () { return dy.mul($condition.logicalNot().cast($b.dtype)); }\n    }); };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.select($condition, $a, $b); }, { $condition: $condition, $a: $a, $b: $b }, grad);\n}\nfunction whereAsync_(condition) {\n    return __awaiter(this, void 0, void 0, function () {\n        var $condition, vals, res;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    $condition = tensor_util_env_1.convertToTensor(condition, 'condition', 'where', 'bool');\n                    util_1.assert($condition.dtype === 'bool', 'Condition must be of type bool.');\n                    return [4, $condition.data()];\n                case 1:\n                    vals = _a.sent();\n                    res = where_impl_1.whereImpl($condition.shape, vals);\n                    if (condition !== $condition) {\n                        $condition.dispose();\n                    }\n                    return [2, res];\n            }\n        });\n    });\n}\nexports.logicalAnd = operation_1.op({ logicalAnd_: logicalAnd_ });\nexports.logicalNot = operation_1.op({ logicalNot_: logicalNot_ });\nexports.logicalOr = operation_1.op({ logicalOr_: logicalOr_ });\nexports.logicalXor = operation_1.op({ logicalXor_: logicalXor_ });\nexports.where = operation_1.op({ where_: where_ });\nexports.whereAsync = whereAsync_;\n\n},{\"../environment\":55,\"../kernels/where_impl\":118,\"../tensor_util_env\":176,\"../util\":180,\"./broadcast_util\":125,\"./operation\":141,\"./tensor_ops\":156}],135:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar globals_1 = require(\"../globals\");\nvar tensor_util_env_1 = require(\"../tensor_util_env\");\nvar util_1 = require(\"../util\");\nvar axis_util_1 = require(\"./axis_util\");\nvar binary_ops_1 = require(\"./binary_ops\");\nvar operation_1 = require(\"./operation\");\nvar tensor_ops_1 = require(\"./tensor_ops\");\nvar Reduction;\n(function (Reduction) {\n    Reduction[Reduction[\"NONE\"] = 0] = \"NONE\";\n    Reduction[Reduction[\"MEAN\"] = 1] = \"MEAN\";\n    Reduction[Reduction[\"SUM\"] = 2] = \"SUM\";\n    Reduction[Reduction[\"SUM_BY_NONZERO_WEIGHTS\"] = 3] = \"SUM_BY_NONZERO_WEIGHTS\";\n})(Reduction = exports.Reduction || (exports.Reduction = {}));\nfunction computeWeightedLoss_(losses, weights, reduction) {\n    if (reduction === void 0) { reduction = Reduction.SUM_BY_NONZERO_WEIGHTS; }\n    var $losses = tensor_util_env_1.convertToTensor(losses, 'losses', 'computeWeightedLoss');\n    var $weights = null;\n    if (weights != null) {\n        $weights = tensor_util_env_1.convertToTensor(weights, 'weights', 'computeWeightedLoss');\n    }\n    var weightedLoss = ($weights == null) ? $losses : $losses.mul($weights);\n    if (reduction === Reduction.NONE) {\n        return weightedLoss;\n    }\n    if (reduction === Reduction.SUM) {\n        return weightedLoss.sum();\n    }\n    if (reduction === Reduction.MEAN) {\n        if ($weights == null) {\n            return weightedLoss.mean();\n        }\n        else {\n            var broadcastFactor = util_1.sizeFromShape($losses.shape) / util_1.sizeFromShape($weights.shape);\n            var result = weightedLoss.sum().div($weights.sum());\n            return broadcastFactor > 1 ? result.div(tensor_ops_1.scalar(broadcastFactor)) :\n                result;\n        }\n    }\n    if (reduction === Reduction.SUM_BY_NONZERO_WEIGHTS) {\n        if ($weights == null) {\n            return weightedLoss.sum().div(tensor_ops_1.scalar($losses.size));\n        }\n        else {\n            var broadcastedWeights = $weights.mul(tensor_ops_1.ones($losses.shape));\n            var numNonZeros = broadcastedWeights.notEqual(tensor_ops_1.scalar(0)).sum().toFloat();\n            return weightedLoss.sum().div(numNonZeros);\n        }\n    }\n    throw Error(\"Unknown reduction: \" + reduction);\n}\nfunction absoluteDifference_(labels, predictions, weights, reduction) {\n    if (reduction === void 0) { reduction = Reduction.SUM_BY_NONZERO_WEIGHTS; }\n    var $labels = tensor_util_env_1.convertToTensor(labels, 'labels', 'absoluteDifference');\n    var $predictions = tensor_util_env_1.convertToTensor(predictions, 'predictions', 'absoluteDifference');\n    var $weights = null;\n    if (weights != null) {\n        $weights = tensor_util_env_1.convertToTensor(weights, 'weights', 'absoluteDifference');\n    }\n    util_1.assertShapesMatch($labels.shape, $predictions.shape, 'Error in absoluteDifference: ');\n    var losses = $labels.sub($predictions).abs();\n    return exports.computeWeightedLoss(losses, $weights, reduction);\n}\nfunction meanSquaredError_(labels, predictions, weights, reduction) {\n    if (reduction === void 0) { reduction = Reduction.SUM_BY_NONZERO_WEIGHTS; }\n    var $labels = tensor_util_env_1.convertToTensor(labels, 'labels', 'meanSquaredError');\n    var $predictions = tensor_util_env_1.convertToTensor(predictions, 'predictions', 'meanSquaredError');\n    var $weights = null;\n    if (weights != null) {\n        $weights = tensor_util_env_1.convertToTensor(weights, 'weights', 'meanSquaredError');\n    }\n    util_1.assertShapesMatch($labels.shape, $predictions.shape, 'Error in meanSquaredError: ');\n    var losses = $labels.squaredDifference($predictions);\n    return exports.computeWeightedLoss(losses, $weights, reduction);\n}\nfunction cosineDistance_(labels, predictions, axis, weights, reduction) {\n    if (reduction === void 0) { reduction = Reduction.SUM_BY_NONZERO_WEIGHTS; }\n    var $labels = tensor_util_env_1.convertToTensor(labels, 'labels', 'cosineDistance');\n    var $predictions = tensor_util_env_1.convertToTensor(predictions, 'predictions', 'cosineDistance');\n    var $weights = null;\n    if (weights != null) {\n        $weights = tensor_util_env_1.convertToTensor(weights, 'weights', 'cosineDistance');\n    }\n    util_1.assertShapesMatch($labels.shape, $predictions.shape, 'Error in cosineDistance: ');\n    var one = tensor_ops_1.scalar(1);\n    var losses = one.sub($labels.mul($predictions).sum(axis, true));\n    return exports.computeWeightedLoss(losses, $weights, reduction);\n}\nfunction hingeLoss_(labels, predictions, weights, reduction) {\n    if (reduction === void 0) { reduction = Reduction.SUM_BY_NONZERO_WEIGHTS; }\n    var $labels = tensor_util_env_1.convertToTensor(labels, 'labels', 'hingeLoss');\n    var $predictions = tensor_util_env_1.convertToTensor(predictions, 'predictions', 'hingeLoss');\n    var $weights = null;\n    if (weights != null) {\n        $weights = tensor_util_env_1.convertToTensor(weights, 'weights', 'hingeLoss');\n    }\n    util_1.assertShapesMatch($labels.shape, $predictions.shape, 'Error in hingeLoss: ');\n    var one = tensor_ops_1.scalar(1);\n    $labels = tensor_ops_1.scalar(2).mul($labels).sub(one);\n    var losses = one.sub($labels.mul($predictions)).relu();\n    return exports.computeWeightedLoss(losses, $weights, reduction);\n}\nfunction logLoss_(labels, predictions, weights, epsilon, reduction) {\n    if (epsilon === void 0) { epsilon = 1e-7; }\n    if (reduction === void 0) { reduction = Reduction.SUM_BY_NONZERO_WEIGHTS; }\n    var $labels = tensor_util_env_1.convertToTensor(labels, 'labels', 'logLoss');\n    var $predictions = tensor_util_env_1.convertToTensor(predictions, 'predictions', 'logLoss');\n    var $weights = null;\n    if (weights != null) {\n        $weights = tensor_util_env_1.convertToTensor(weights, 'weights', 'logLoss');\n    }\n    util_1.assertShapesMatch($labels.shape, $predictions.shape, 'Error in logLoss: ');\n    var one = tensor_ops_1.scalar(1);\n    var epsilonScalar = tensor_ops_1.scalar(epsilon);\n    var losses = $labels.mul($predictions.add(epsilonScalar).log())\n        .neg()\n        .sub(one.sub($labels).mul(one.sub($predictions).add(epsilonScalar).log()));\n    return exports.computeWeightedLoss(losses, $weights, reduction);\n}\nfunction sigmoidCrossEntropyWithLogits_(labels, logits) {\n    var $labels = tensor_util_env_1.convertToTensor(labels, 'labels', 'sigmoidCrossEntropyWithLogits');\n    var $logits = tensor_util_env_1.convertToTensor(logits, 'logits', 'sigmoidCrossEntropyWithLogits');\n    util_1.assertShapesMatch($labels.shape, $logits.shape, 'Error in sigmoidCrossEntropyWithLogits: ');\n    var maxOutput = $logits.relu();\n    var outputXTarget = $logits.mul($labels);\n    var sigmoidOutput = $logits.abs().neg().exp().log1p();\n    return maxOutput.sub(outputXTarget).add(sigmoidOutput);\n}\nfunction sigmoidCrossEntropy_(multiClassLabels, logits, weights, labelSmoothing, reduction) {\n    if (labelSmoothing === void 0) { labelSmoothing = 0; }\n    if (reduction === void 0) { reduction = Reduction.SUM_BY_NONZERO_WEIGHTS; }\n    var $multiClassLabels = tensor_util_env_1.convertToTensor(multiClassLabels, 'multiClassLabels', 'sigmoidCrossEntropy');\n    var $logits = tensor_util_env_1.convertToTensor(logits, 'logits', 'sigmoidCrossEntropy');\n    var $weights = null;\n    if (weights != null) {\n        $weights = tensor_util_env_1.convertToTensor(weights, 'weights', 'sigmoidCrossEntropy');\n    }\n    util_1.assertShapesMatch($multiClassLabels.shape, $logits.shape, 'Error in sigmoidCrossEntropy: ');\n    if (labelSmoothing > 0) {\n        var labelSmoothingScalar = tensor_ops_1.scalar(labelSmoothing);\n        var one = tensor_ops_1.scalar(1);\n        var half = tensor_ops_1.scalar(0.5);\n        $multiClassLabels = $multiClassLabels.mul(one.sub(labelSmoothingScalar))\n            .add(half.mul(labelSmoothingScalar));\n    }\n    var losses = sigmoidCrossEntropyWithLogits_($multiClassLabels, $logits);\n    return exports.computeWeightedLoss(losses, $weights, reduction);\n}\nfunction huberLoss_(labels, predictions, weights, delta, reduction) {\n    if (delta === void 0) { delta = 1.0; }\n    if (reduction === void 0) { reduction = Reduction.SUM_BY_NONZERO_WEIGHTS; }\n    var $labels = tensor_util_env_1.convertToTensor(labels, 'labels', 'huberLoss');\n    var $predictions = tensor_util_env_1.convertToTensor(predictions, 'predictions', 'huberLoss');\n    var $weights = null;\n    if (weights != null) {\n        $weights = tensor_util_env_1.convertToTensor(weights, 'weights', 'huberLoss');\n    }\n    util_1.assertShapesMatch($labels.shape, $predictions.shape, 'Error in huberLoss: ');\n    var deltaScalar = tensor_ops_1.scalar(delta);\n    var error = $predictions.sub($labels).abs();\n    var quadratic = binary_ops_1.minimum(error, deltaScalar);\n    var linear = error.sub(quadratic);\n    var losses = tensor_ops_1.scalar(0.5).mul(quadratic.square()).add(deltaScalar.mul(linear));\n    return exports.computeWeightedLoss(losses, $weights, reduction);\n}\nfunction softmaxCrossEntropyWithLogits_(labels, logits, dim) {\n    if (dim === void 0) { dim = -1; }\n    if (dim === -1) {\n        dim = logits.rank - 1;\n    }\n    if (dim !== logits.rank - 1) {\n        throw Error(\"Softmax cross entropy along a non-last dimension is not yet \" +\n            (\"supported. Labels / logits was rank \" + logits.rank + \" \") +\n            (\"and dim was \" + dim));\n    }\n    var customOp = globals_1.customGrad(function (labels, logits) {\n        var keepDims = true;\n        var lse = logits.logSumExp([dim], keepDims);\n        var logResult = logits.toFloat().sub(lse);\n        var costVector = logResult.mul(labels).neg();\n        var value = costVector.sum([dim]);\n        var gradFunc = function (dy) {\n            var dyShape = axis_util_1.expandShapeToKeepDim(dy.shape, [dim]);\n            return [\n                dy.reshape(dyShape).mul(labels.toFloat().sub(logResult.exp())),\n                dy.reshape(dyShape).mul(logResult.exp().sub(labels.toFloat())),\n            ];\n        };\n        return { value: value, gradFunc: gradFunc };\n    });\n    return customOp(labels, logits);\n}\nfunction softmaxCrossEntropy_(onehotLabels, logits, weights, labelSmoothing, reduction) {\n    if (labelSmoothing === void 0) { labelSmoothing = 0; }\n    if (reduction === void 0) { reduction = Reduction.SUM_BY_NONZERO_WEIGHTS; }\n    var $onehotLabels = tensor_util_env_1.convertToTensor(onehotLabels, 'onehotLabels', 'softmaxCrossEntropy');\n    var $logits = tensor_util_env_1.convertToTensor(logits, 'logits', 'softmaxCrossEntropy');\n    var $weights = null;\n    if (weights != null) {\n        $weights = tensor_util_env_1.convertToTensor(weights, 'weights', 'softmaxCrossEntropy');\n    }\n    util_1.assertShapesMatch($onehotLabels.shape, $logits.shape, 'Error in softmaxCrossEntropy: ');\n    if (labelSmoothing > 0) {\n        var labelSmoothingScalar = tensor_ops_1.scalar(labelSmoothing);\n        var one = tensor_ops_1.scalar(1);\n        var numClasses = tensor_ops_1.scalar($onehotLabels.shape[1]);\n        $onehotLabels = $onehotLabels.mul(one.sub(labelSmoothingScalar))\n            .add(labelSmoothingScalar.div(numClasses));\n    }\n    var losses = softmaxCrossEntropyWithLogits_($onehotLabels, $logits);\n    return exports.computeWeightedLoss(losses, $weights, reduction);\n}\nexports.absoluteDifference = operation_1.op({ absoluteDifference_: absoluteDifference_ });\nexports.computeWeightedLoss = operation_1.op({ computeWeightedLoss_: computeWeightedLoss_ });\nexports.cosineDistance = operation_1.op({ cosineDistance_: cosineDistance_ });\nexports.hingeLoss = operation_1.op({ hingeLoss_: hingeLoss_ });\nexports.huberLoss = operation_1.op({ huberLoss_: huberLoss_ });\nexports.logLoss = operation_1.op({ logLoss_: logLoss_ });\nexports.meanSquaredError = operation_1.op({ meanSquaredError_: meanSquaredError_ });\nexports.sigmoidCrossEntropy = operation_1.op({ sigmoidCrossEntropy_: sigmoidCrossEntropy_ });\nexports.softmaxCrossEntropy = operation_1.op({ softmaxCrossEntropy_: softmaxCrossEntropy_ });\n\n},{\"../globals\":57,\"../tensor_util_env\":176,\"../util\":180,\"./axis_util\":122,\"./binary_ops\":124,\"./operation\":141,\"./tensor_ops\":156}],136:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"../environment\");\nvar tensor_util_env_1 = require(\"../tensor_util_env\");\nvar util = require(\"../util\");\nvar operation_1 = require(\"./operation\");\nfunction localResponseNormalization_(x, depthRadius, bias, alpha, beta) {\n    if (depthRadius === void 0) { depthRadius = 5; }\n    if (bias === void 0) { bias = 1; }\n    if (alpha === void 0) { alpha = 1; }\n    if (beta === void 0) { beta = 0.5; }\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'localResponseNormalization');\n    util.assert($x.rank === 4 || $x.rank === 3, \"Error in localResponseNormalization: x must be rank 3 or 4 but got\\n               rank \" + $x.rank + \".\");\n    util.assert(util.isInt(depthRadius), \"Error in localResponseNormalization: depthRadius must be an integer\\n                     but got depthRadius \" + depthRadius + \".\");\n    var x4D = $x;\n    var reshapedTo4D = false;\n    if ($x.rank === 3) {\n        reshapedTo4D = true;\n        x4D = $x.as4D(1, $x.shape[0], $x.shape[1], $x.shape[2]);\n    }\n    var backward = function (dy, saved) {\n        var outputImage = saved[0];\n        return {\n            x4D: function () { return environment_1.ENV.engine.runKernel(function (backend) { return backend.LRNGrad(dy, x4D, outputImage, depthRadius, bias, alpha, beta); }, {}); }\n        };\n    };\n    var res = environment_1.ENV.engine.runKernel(function (backend, save) { return save(backend.localResponseNormalization4D(x4D, depthRadius, bias, alpha, beta)); }, { x4D: x4D }, backward);\n    if (reshapedTo4D) {\n        return res.as3D(res.shape[1], res.shape[2], res.shape[3]);\n    }\n    else {\n        return res;\n    }\n}\nexports.localResponseNormalization = operation_1.op({ localResponseNormalization_: localResponseNormalization_ });\n\n},{\"../environment\":55,\"../tensor_util_env\":176,\"../util\":180,\"./operation\":141}],137:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tensor_util_env_1 = require(\"../tensor_util_env\");\nvar operation_1 = require(\"./operation\");\nfunction multiRNNCell_(lstmCells, data, c, h) {\n    var $data = tensor_util_env_1.convertToTensor(data, 'data', 'multiRNNCell');\n    var $c = tensor_util_env_1.convertToTensorArray(c, 'c', 'multiRNNCell');\n    var $h = tensor_util_env_1.convertToTensorArray(h, 'h', 'multiRNNCell');\n    var input = $data;\n    var newStates = [];\n    for (var i = 0; i < lstmCells.length; i++) {\n        var output = lstmCells[i](input, $c[i], $h[i]);\n        newStates.push(output[0]);\n        newStates.push(output[1]);\n        input = output[1];\n    }\n    var newC = [];\n    var newH = [];\n    for (var i = 0; i < newStates.length; i += 2) {\n        newC.push(newStates[i]);\n        newH.push(newStates[i + 1]);\n    }\n    return [newC, newH];\n}\nfunction basicLSTMCell_(forgetBias, lstmKernel, lstmBias, data, c, h) {\n    var $forgetBias = tensor_util_env_1.convertToTensor(forgetBias, 'forgetBias', 'basicLSTMCell');\n    var $lstmKernel = tensor_util_env_1.convertToTensor(lstmKernel, 'lstmKernel', 'basicLSTMCell');\n    var $lstmBias = tensor_util_env_1.convertToTensor(lstmBias, 'lstmBias', 'basicLSTMCell');\n    var $data = tensor_util_env_1.convertToTensor(data, 'data', 'basicLSTMCell');\n    var $c = tensor_util_env_1.convertToTensor(c, 'c', 'basicLSTMCell');\n    var $h = tensor_util_env_1.convertToTensor(h, 'h', 'basicLSTMCell');\n    var combined = $data.concat($h, 1);\n    var weighted = combined.matMul($lstmKernel);\n    var res = weighted.add($lstmBias);\n    var batchSize = res.shape[0];\n    var sliceCols = res.shape[1] / 4;\n    var sliceSize = [batchSize, sliceCols];\n    var i = res.slice([0, 0], sliceSize);\n    var j = res.slice([0, sliceCols], sliceSize);\n    var f = res.slice([0, sliceCols * 2], sliceSize);\n    var o = res.slice([0, sliceCols * 3], sliceSize);\n    var newC = i.sigmoid().mulStrict(j.tanh()).addStrict($c.mulStrict($forgetBias.add(f).sigmoid()));\n    var newH = newC.tanh().mulStrict(o.sigmoid());\n    return [newC, newH];\n}\nexports.basicLSTMCell = operation_1.op({ basicLSTMCell_: basicLSTMCell_ });\nexports.multiRNNCell = operation_1.op({ multiRNNCell_: multiRNNCell_ });\n\n},{\"../tensor_util_env\":176,\"./operation\":141}],138:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"../environment\");\nvar tensor_util_env_1 = require(\"../tensor_util_env\");\nvar util = require(\"../util\");\nvar operation_1 = require(\"./operation\");\nfunction matMul_(a, b, transposeA, transposeB) {\n    if (transposeA === void 0) { transposeA = false; }\n    if (transposeB === void 0) { transposeB = false; }\n    var $a = tensor_util_env_1.convertToTensor(a, 'a', 'matMul');\n    var $b = tensor_util_env_1.convertToTensor(b, 'b', 'matMul');\n    var innerShapeA = transposeA ? $a.shape[0] : $a.shape[1];\n    var innerShapeB = transposeB ? $b.shape[1] : $b.shape[0];\n    util.assert($a.rank === 2 && $b.rank === 2, \"Error in matMul: inputs must be rank 2, got ranks \" + $a.rank +\n        (\" and \" + $b.rank + \".\"));\n    util.assert(innerShapeA === innerShapeB, \"Error in matMul: inner shapes (\" + innerShapeA + \") and (\" +\n        (innerShapeB + \") of Tensors with shapes \" + $a.shape + \" and \") +\n        ($b.shape + \" and transposeA=\" + transposeA) +\n        (\" and transposeB=\" + transposeB + \" must match.\"));\n    var grad = function (dy) {\n        if (!transposeA && !transposeB) {\n            return {\n                $a: function () { return dy.matMul($b.toFloat(), false, true); },\n                $b: function () { return $a.toFloat().matMul(dy, true, false); }\n            };\n        }\n        else if (!transposeA && transposeB) {\n            return {\n                $a: function () { return dy.matMul($b.toFloat(), false, false); },\n                $b: function () { return dy.matMul($a.toFloat(), true, false); }\n            };\n        }\n        else if (transposeA && !transposeB) {\n            return {\n                $a: function () { return $b.toFloat().matMul(dy, false, true); },\n                $b: function () { return $a.toFloat().matMul(dy, false, false); }\n            };\n        }\n        else {\n            return {\n                $a: function () { return $b.toFloat().matMul(dy, true, true); },\n                $b: function () { return dy.matMul($a.toFloat(), true, true); }\n            };\n        }\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.matMul($a, $b, transposeA, transposeB); }, { $a: $a, $b: $b }, grad);\n}\nfunction outerProduct_(v1, v2) {\n    var $v1 = tensor_util_env_1.convertToTensor(v1, 'v1', 'outerProduct');\n    var $v2 = tensor_util_env_1.convertToTensor(v2, 'v2', 'outerProduct');\n    util.assert($v1.rank === 1 && $v2.rank === 1, \"Error in outerProduct: inputs must be rank 1, but got ranks \" +\n        ($v1.rank + \" and \" + $v2.rank + \".\"));\n    return $v1.as2D(-1, 1).matMul($v2.as2D(1, -1));\n}\nfunction dot_(t1, t2) {\n    var $t1 = tensor_util_env_1.convertToTensor(t1, 't1', 'dot');\n    var $t2 = tensor_util_env_1.convertToTensor(t2, 't2', 'dot');\n    util.assert(($t1.rank === 1 || $t1.rank === 2) && ($t2.rank === 1 || $t2.rank === 2), \"Error in dot: inputs must all be rank 1 or 2, but got ranks \" +\n        ($t1.rank + \" and \" + $t2.rank + \".\"));\n    var t1Inner = ($t1.rank === 1 ? $t1.size : $t1.shape[1]);\n    var t2Inner = ($t2.rank === 1 ? $t2.size : $t2.shape[0]);\n    util.assert(t1Inner === t2Inner, \"Error in dot: inner dimensions of inputs must match, but got \" +\n        (t1Inner + \" and \" + t2Inner + \".\"));\n    if ($t1.rank === 1 && $t2.rank === 1) {\n        return $t1.as2D(1, -1).matMul($t2.as2D(-1, 1)).asScalar();\n    }\n    else if ($t1.rank === 1 && $t2.rank === 2) {\n        return $t1.as2D(1, -1).matMul($t2.as2D($t2.shape[0], $t2.shape[1])).as1D();\n    }\n    else if ($t1.rank === 2 && $t2.rank === 1) {\n        return $t1.matMul($t2.as2D(-1, 1)).as1D();\n    }\n    else {\n        return $t1.matMul($t2.as2D($t2.shape[0], $t2.shape[1]));\n    }\n}\nexports.matMul = operation_1.op({ matMul_: matMul_ });\nexports.dot = operation_1.op({ dot_: dot_ });\nexports.outerProduct = operation_1.op({ outerProduct_: outerProduct_ });\n\n},{\"../environment\":55,\"../tensor_util_env\":176,\"../util\":180,\"./operation\":141}],139:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tensor_util_1 = require(\"../tensor_util\");\nvar tensor_util_env_1 = require(\"../tensor_util_env\");\nvar util = require(\"../util\");\nvar binary_ops_1 = require(\"./binary_ops\");\nvar operation_1 = require(\"./operation\");\nvar tensor_ops_1 = require(\"./tensor_ops\");\nfunction movingAverage_(v, x, decay, step, zeroDebias) {\n    if (zeroDebias === void 0) { zeroDebias = true; }\n    var $v = tensor_util_env_1.convertToTensor(v, 'v', 'movingAverage');\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'movingAverage');\n    var $decay = tensor_util_env_1.convertToTensor(decay, 'decay', 'movingAverage');\n    tensor_util_1.assertTypesMatch($v, $x);\n    util.assert(util.arraysEqual($v.shape, $x.shape), 'Shape mismatch in v and x');\n    var one = tensor_ops_1.scalar(1);\n    var oneMinusDecay = one.sub($decay);\n    var update = $x.sub($v).mul(oneMinusDecay);\n    if (zeroDebias) {\n        util.assert(step != null, 'When using zeroDebias: true, step is required.');\n        var $step = tensor_util_env_1.convertToTensor(step, 'step', 'movingAverage');\n        update = update.div(one.sub(binary_ops_1.pow($decay, $step)));\n    }\n    return $v.add(update);\n}\nexports.movingAverage = operation_1.op({ movingAverage_: movingAverage_ });\n\n},{\"../tensor_util\":175,\"../tensor_util_env\":176,\"../util\":180,\"./binary_ops\":124,\"./operation\":141,\"./tensor_ops\":156}],140:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tensor_util_env_1 = require(\"../tensor_util_env\");\nvar axis_util = require(\"./axis_util\");\nvar operation_1 = require(\"./operation\");\nvar tensor_ops_1 = require(\"./tensor_ops\");\nfunction norm_(x, ord, axis, keepDims) {\n    if (ord === void 0) { ord = 'euclidean'; }\n    if (axis === void 0) { axis = null; }\n    if (keepDims === void 0) { keepDims = false; }\n    x = tensor_util_env_1.convertToTensor(x, 'x', 'norm');\n    var norm = normImpl(x, ord, axis);\n    var keepDimsShape = norm.shape;\n    if (keepDims) {\n        var axes = axis_util.parseAxisParam(axis, x.shape);\n        keepDimsShape = axis_util.expandShapeToKeepDim(norm.shape, axes);\n    }\n    return norm.reshape(keepDimsShape);\n}\nfunction normImpl(x, p, axis) {\n    if (axis === void 0) { axis = null; }\n    if (x.rank === 0) {\n        return x.abs();\n    }\n    if (x.rank !== 1 && axis === null) {\n        return normImpl(x.reshape([-1]), p, axis);\n    }\n    if (x.rank === 1 || typeof axis === 'number' ||\n        axis instanceof Array && axis.length === 1) {\n        if (p === 1) {\n            return x.abs().sum(axis);\n        }\n        if (p === Infinity) {\n            return x.abs().max(axis);\n        }\n        if (p === -Infinity) {\n            return x.abs().min(axis);\n        }\n        if (p === 'euclidean' || p === 2) {\n            return x.abs().pow(tensor_ops_1.scalar(2, 'int32')).sum(axis).sqrt();\n        }\n        throw new Error(\"Error in norm: invalid ord value: \" + p);\n    }\n    if (axis instanceof Array && axis.length === 2) {\n        if (p === 1) {\n            return x.abs().sum(axis[0]).max(axis[1] - 1);\n        }\n        if (p === Infinity) {\n            return x.abs().sum(axis[1]).max(axis[0]);\n        }\n        if (p === -Infinity) {\n            return x.abs().sum(axis[1]).min(axis[0]);\n        }\n        if (p === 'fro' || p === 'euclidean') {\n            return x.square().sum(axis).sqrt();\n        }\n        throw new Error(\"Error in norm: invalid ord value: \" + p);\n    }\n    throw new Error(\"Error in norm: invalid axis: \" + axis);\n}\nexports.norm = operation_1.op({ norm_: norm_ });\n\n},{\"../tensor_util_env\":176,\"./axis_util\":122,\"./operation\":141,\"./tensor_ops\":156}],141:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"../environment\");\nfunction op(f) {\n    var keys = Object.keys(f);\n    if (keys.length !== 1) {\n        throw new Error(\"Please provide an object with a single key \" +\n            \"(operation name) mapping to a function. Got an object with \" +\n            (keys.length + \" keys.\"));\n    }\n    var opName = keys[0];\n    var fn = f[opName];\n    if (opName.endsWith('_')) {\n        opName = opName.substring(0, opName.length - 1);\n    }\n    var f2 = function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        environment_1.ENV.engine.startScope(opName);\n        try {\n            var result = fn.apply(void 0, args);\n            if (result instanceof Promise) {\n                console.error('Cannot return a Promise inside of tidy.');\n            }\n            environment_1.ENV.engine.endScope(result);\n            return result;\n        }\n        catch (ex) {\n            environment_1.ENV.engine.endScope(null);\n            throw ex;\n        }\n    };\n    Object.defineProperty(f2, 'name', { value: opName, configurable: true });\n    return f2;\n}\nexports.op = op;\n\n},{\"../environment\":55}],142:[function(require,module,exports){\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(\"./batchnorm\"));\n__export(require(\"./concat\"));\n__export(require(\"./conv\"));\n__export(require(\"./matmul\"));\n__export(require(\"./reverse\"));\n__export(require(\"./pool\"));\n__export(require(\"./slice\"));\n__export(require(\"./unary_ops\"));\n__export(require(\"./reduction_ops\"));\n__export(require(\"./compare\"));\n__export(require(\"./binary_ops\"));\n__export(require(\"./relu_ops\"));\n__export(require(\"./logical_ops\"));\n__export(require(\"./array_ops\"));\n__export(require(\"./tensor_ops\"));\n__export(require(\"./transpose\"));\n__export(require(\"./softmax\"));\n__export(require(\"./lrn\"));\n__export(require(\"./norm\"));\n__export(require(\"./segment_ops\"));\n__export(require(\"./lstm\"));\n__export(require(\"./moving_average\"));\n__export(require(\"./strided_slice\"));\n__export(require(\"./topk\"));\nvar operation_1 = require(\"./operation\");\nexports.op = operation_1.op;\nvar losses = require(\"./loss_ops\");\nexports.losses = losses;\nvar linalg = require(\"./linalg_ops\");\nexports.linalg = linalg;\nvar image = require(\"./image_ops\");\nexports.image = image;\n\n},{\"./array_ops\":120,\"./batchnorm\":123,\"./binary_ops\":124,\"./compare\":126,\"./concat\":127,\"./conv\":129,\"./image_ops\":132,\"./linalg_ops\":133,\"./logical_ops\":134,\"./loss_ops\":135,\"./lrn\":136,\"./lstm\":137,\"./matmul\":138,\"./moving_average\":139,\"./norm\":140,\"./operation\":141,\"./pool\":143,\"./reduction_ops\":146,\"./relu_ops\":147,\"./reverse\":148,\"./segment_ops\":149,\"./slice\":152,\"./softmax\":154,\"./strided_slice\":155,\"./tensor_ops\":156,\"./topk\":157,\"./transpose\":158,\"./unary_ops\":159}],143:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"../environment\");\nvar tensor_util_env_1 = require(\"../tensor_util_env\");\nvar util = require(\"../util\");\nvar conv_util = require(\"./conv_util\");\nvar operation_1 = require(\"./operation\");\nfunction maxPool_(x, filterSize, strides, pad, dimRoundingMode) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'maxPool');\n    var x4D = $x;\n    var reshapedTo4D = false;\n    if ($x.rank === 3) {\n        reshapedTo4D = true;\n        x4D = $x.as4D(1, $x.shape[0], $x.shape[1], $x.shape[2]);\n    }\n    util.assert(x4D.rank === 4, \"Error in maxPool: input must be rank 4 but got rank \" + x4D.rank + \".\");\n    if (dimRoundingMode != null) {\n        util.assert(util.isInt(pad), \"Error in maxPool: pad must be an integer when using, \" +\n            (\"dimRoundingMode \" + dimRoundingMode + \" but got pad \" + pad + \".\"));\n    }\n    var convInfo = conv_util.computePool2DInfo(x4D.shape, filterSize, strides, pad, dimRoundingMode);\n    var grad = function (dy, saved) {\n        var y4D = saved[0];\n        return {\n            x: function () {\n                return maxPoolBackprop(dy, x4D, y4D, filterSize, strides, pad);\n            }\n        };\n    };\n    var res = environment_1.ENV.engine.runKernel(function (backend, save) { return save(backend.maxPool(x4D, convInfo)); }, { x: x4D }, grad);\n    if (reshapedTo4D) {\n        return res.as3D(res.shape[1], res.shape[2], res.shape[3]);\n    }\n    return res;\n}\nfunction avgPool_(x, filterSize, strides, pad, dimRoundingMode) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'avgPool');\n    util.assert($x.dtype === 'float32', 'The input dtype to avgPool must be float32');\n    var x4D = $x;\n    var reshapedTo4D = false;\n    if ($x.rank === 3) {\n        reshapedTo4D = true;\n        x4D = $x.as4D(1, $x.shape[0], $x.shape[1], $x.shape[2]);\n    }\n    util.assert(x4D.rank === 4, \"Error in avgPool: x must be rank 4 but got rank \" + x4D.rank + \".\");\n    if (dimRoundingMode != null) {\n        util.assert(util.isInt(pad), \"Error in avgPool: pad must be an integer when using, \" +\n            (\"dimRoundingMode \" + dimRoundingMode + \" but got pad \" + pad + \".\"));\n    }\n    var convInfo = conv_util.computePool2DInfo(x4D.shape, filterSize, strides, pad);\n    var grad = function (dy) {\n        return { x: function () { return avgPoolBackprop(dy, x4D, filterSize, strides, pad); } };\n    };\n    var res = environment_1.ENV.engine.runKernel(function (backend) { return backend.avgPool(x4D, convInfo); }, { x: x4D }, grad);\n    res = res.cast($x.dtype);\n    if (reshapedTo4D) {\n        return res.as3D(res.shape[1], res.shape[2], res.shape[3]);\n    }\n    return res;\n}\nfunction maxPoolBackprop(dy, input, output, filterSize, strides, pad, dimRoundingMode) {\n    var $dy = tensor_util_env_1.convertToTensor(dy, 'dy', 'maxPoolBackprop');\n    var $input = tensor_util_env_1.convertToTensor(input, 'input', 'maxPoolBackprop');\n    var $output = tensor_util_env_1.convertToTensor(output, 'output', 'maxPoolBackprop');\n    util.assert($input.rank === $dy.rank, \"Rank of input (\" + $input.rank + \") does not match rank of dy (\" + $dy.rank + \")\");\n    util.assert($dy.rank === 4, \"Error in maxPoolBackprop: dy must be rank 4 but got rank \" +\n        ($dy.rank + \".\"));\n    util.assert($input.rank === 4, \"Error in maxPoolBackprop: input must be rank 4 but got rank \" +\n        ($input.rank + \".\"));\n    if (dimRoundingMode != null) {\n        util.assert(util.isInt(pad), \"Error in maxPoolBackprop: pad must be an integer when using, \" +\n            (\"dimRoundingMode \" + dimRoundingMode + \" but got pad \" + pad + \".\"));\n    }\n    var convInfo = conv_util.computePool2DInfo($input.shape, filterSize, strides, pad, dimRoundingMode);\n    var res = environment_1.ENV.engine.runKernel(function (backend) { return backend.maxPoolBackprop($dy, $input, $output, convInfo); }, { $dy: $dy, $input: $input });\n    return res;\n}\nfunction avgPoolBackprop(dy, input, filterSize, strides, pad) {\n    var $dy = tensor_util_env_1.convertToTensor(dy, 'dy', 'avgPoolBackprop');\n    var $input = tensor_util_env_1.convertToTensor(input, 'input', 'avgPoolBackprop');\n    util.assert($input.rank === $dy.rank, \"Rank of input (\" + $input.rank + \") does not match rank of dy (\" + $dy.rank + \")\");\n    var input4D = $input;\n    var dy4D = $dy;\n    var reshapedTo4D = false;\n    if ($input.rank === 3) {\n        reshapedTo4D = true;\n        input4D = $input.as4D(1, $input.shape[0], $input.shape[1], $input.shape[2]);\n        dy4D = $dy.as4D(1, $dy.shape[0], $dy.shape[1], $dy.shape[2]);\n    }\n    util.assert(dy4D.rank === 4, \"Error in avgPoolBackprop: dy must be rank 4 but got rank \" +\n        (dy4D.rank + \".\"));\n    util.assert(input4D.rank === 4, \"Error in avgPoolBackprop: input must be rank 4 but got rank \" +\n        (input4D.rank + \".\"));\n    var convInfo = conv_util.computePool2DInfo(input4D.shape, filterSize, strides, pad);\n    var res = environment_1.ENV.engine.runKernel(function (backend) { return backend.avgPoolBackprop(dy4D, input4D, convInfo); }, { dy4D: dy4D, input4D: input4D });\n    if (reshapedTo4D) {\n        return res.as3D(res.shape[1], res.shape[2], res.shape[3]);\n    }\n    return res;\n}\nexports.maxPool = operation_1.op({ maxPool_: maxPool_ });\nexports.avgPool = operation_1.op({ avgPool_: avgPool_ });\n\n},{\"../environment\":55,\"../tensor_util_env\":176,\"../util\":180,\"./conv_util\":130,\"./operation\":141}],144:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar seedrandom = require(\"seedrandom\");\nvar MPRandGauss = (function () {\n    function MPRandGauss(mean, stdDeviation, dtype, truncated, seed) {\n        this.mean = mean;\n        this.stdDev = stdDeviation;\n        this.dtype = dtype;\n        this.nextVal = NaN;\n        this.truncated = truncated;\n        if (this.truncated) {\n            this.upper = this.mean + this.stdDev * 2;\n            this.lower = this.mean - this.stdDev * 2;\n        }\n        var seedValue = seed ? seed : Math.random();\n        this.random = seedrandom.alea(seedValue.toString());\n    }\n    MPRandGauss.prototype.nextValue = function () {\n        if (!isNaN(this.nextVal)) {\n            var value = this.nextVal;\n            this.nextVal = NaN;\n            return value;\n        }\n        var resultX, resultY;\n        var isValid = false;\n        while (!isValid) {\n            var v1 = void 0, v2 = void 0, s = void 0;\n            do {\n                v1 = 2 * this.random() - 1;\n                v2 = 2 * this.random() - 1;\n                s = v1 * v1 + v2 * v2;\n            } while (s >= 1 || s === 0);\n            var mul = Math.sqrt(-2.0 * Math.log(s) / s);\n            resultX = this.mean + this.stdDev * v1 * mul;\n            resultY = this.mean + this.stdDev * v2 * mul;\n            if (!this.truncated || this.isValidTruncated(resultX)) {\n                isValid = true;\n            }\n        }\n        if (!this.truncated || this.isValidTruncated(resultY)) {\n            this.nextVal = this.convertValue(resultY);\n        }\n        return this.convertValue(resultX);\n    };\n    MPRandGauss.prototype.convertValue = function (value) {\n        if (this.dtype == null || this.dtype === 'float32') {\n            return value;\n        }\n        return Math.round(value);\n    };\n    MPRandGauss.prototype.isValidTruncated = function (value) {\n        return value <= this.upper && value >= this.lower;\n    };\n    return MPRandGauss;\n}());\nexports.MPRandGauss = MPRandGauss;\n\n},{\"seedrandom\":283}],145:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"../util\");\nexports.PARALLELIZE_THRESHOLD = 30;\nfunction computeOptimalWindowSize(inSize) {\n    if (inSize <= exports.PARALLELIZE_THRESHOLD) {\n        return inSize;\n    }\n    return util_1.nearestDivisor(inSize, Math.floor(Math.sqrt(inSize)));\n}\nexports.computeOptimalWindowSize = computeOptimalWindowSize;\n\n},{\"../util\":180}],146:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"../environment\");\nvar globals_1 = require(\"../globals\");\nvar tensor_util_env_1 = require(\"../tensor_util_env\");\nvar util = require(\"../util\");\nvar axis_util = require(\"./axis_util\");\nvar operation_1 = require(\"./operation\");\nvar tensor_ops_1 = require(\"./tensor_ops\");\nfunction logSumExp_(x, axis, keepDims) {\n    if (axis === void 0) { axis = null; }\n    if (keepDims === void 0) { keepDims = false; }\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'logSumExp');\n    var axes = axis_util.parseAxisParam(axis, $x.shape);\n    var xMax = $x.max(axes, true);\n    var a = $x.sub(xMax);\n    var b = a.exp();\n    var c = b.sum(axes);\n    var d = c.log();\n    var res = xMax.reshape(d.shape).add(d);\n    if (keepDims) {\n        var newShape = axis_util.expandShapeToKeepDim(res.shape, axes);\n        return res.reshape(newShape);\n    }\n    return res;\n}\nfunction sum_(x, axis, keepDims) {\n    if (axis === void 0) { axis = null; }\n    if (keepDims === void 0) { keepDims = false; }\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'sum');\n    if ($x.dtype === 'bool') {\n        $x = $x.toInt();\n    }\n    var axes = axis_util.parseAxisParam(axis, $x.shape);\n    var customOp = globals_1.customGrad(function (x) {\n        var permutation = axis_util.getAxesPermutation(axes, x.rank);\n        var reductionAxes = axes;\n        var permutedX = x;\n        if (permutation != null) {\n            permutedX = x.transpose(permutation);\n            reductionAxes = axis_util.getInnerMostAxes(reductionAxes.length, x.rank);\n        }\n        var value = environment_1.ENV.engine.runKernel(function (backend) { return backend.sum(permutedX, reductionAxes); }, { permutedX: permutedX });\n        if (keepDims) {\n            var newShape = axis_util.expandShapeToKeepDim(value.shape, axes);\n            value = value.reshape(newShape);\n        }\n        var gradFunc = function (dy) {\n            var expandedDyShape = x.shape.slice();\n            axes.forEach(function (axis) {\n                expandedDyShape[axis] = 1;\n            });\n            var expandedDy = dy.reshape(expandedDyShape);\n            var derX = expandedDy.mul(tensor_ops_1.ones(x.shape, 'float32'));\n            return derX;\n        };\n        return { value: value, gradFunc: gradFunc };\n    });\n    return customOp($x);\n}\nfunction mean_(x, axis, keepDims) {\n    if (axis === void 0) { axis = null; }\n    if (keepDims === void 0) { keepDims = false; }\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'mean');\n    var axes = axis_util.parseAxisParam(axis, $x.shape);\n    var shapes = axis_util.computeOutAndReduceShapes($x.shape, axes);\n    var reduceShape = shapes[1];\n    var reduceSize = util.sizeFromShape(reduceShape);\n    var customOp = globals_1.customGrad(function (x) {\n        var reduceSizeScalar = tensor_ops_1.scalar(reduceSize);\n        var xReduce = reduceSizeScalar.dtype === x.dtype ? x : x.cast(reduceSizeScalar.dtype);\n        var res = xReduce.div(reduceSizeScalar);\n        var value = res.sum(axis, keepDims);\n        var gradFunc = function (dy) {\n            var expandedDyShape = x.shape.slice();\n            axes.forEach(function (axis) {\n                expandedDyShape[axis] = 1;\n            });\n            var expandedDy = dy.reshape(expandedDyShape);\n            var derX = expandedDy.mul(tensor_ops_1.ones(x.shape, 'float32')).div(reduceSizeScalar);\n            return derX;\n        };\n        return { value: value, gradFunc: gradFunc };\n    });\n    return customOp($x);\n}\nfunction min_(x, axis, keepDims) {\n    if (axis === void 0) { axis = null; }\n    if (keepDims === void 0) { keepDims = false; }\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'min');\n    var origAxes = axis_util.parseAxisParam(axis, $x.shape);\n    var axes = origAxes;\n    var permutedAxes = axis_util.getAxesPermutation(axes, $x.rank);\n    if (permutedAxes != null) {\n        $x = $x.transpose(permutedAxes);\n        axes = axis_util.getInnerMostAxes(axes.length, $x.rank);\n    }\n    var res = environment_1.ENV.engine.runKernel(function (backend) { return backend.min($x, axes); }, { $x: $x });\n    if (keepDims) {\n        var newShape = axis_util.expandShapeToKeepDim(res.shape, origAxes);\n        return res.reshape(newShape);\n    }\n    return res;\n}\nfunction max_(x, axis, keepDims) {\n    if (axis === void 0) { axis = null; }\n    if (keepDims === void 0) { keepDims = false; }\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'max');\n    var origAxes = axis_util.parseAxisParam(axis, $x.shape);\n    var axes = origAxes;\n    var permutedAxes = axis_util.getAxesPermutation(axes, $x.rank);\n    if (permutedAxes != null) {\n        $x = $x.transpose(permutedAxes);\n        axes = axis_util.getInnerMostAxes(axes.length, $x.rank);\n    }\n    var res = environment_1.ENV.engine.runKernel(function (backend) { return backend.max($x, axes); }, { $x: $x });\n    if (keepDims) {\n        var newShape = axis_util.expandShapeToKeepDim(res.shape, origAxes);\n        return res.reshape(newShape);\n    }\n    return res;\n}\nfunction argMin_(x, axis) {\n    if (axis === void 0) { axis = 0; }\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'argMin');\n    if (axis == null) {\n        axis = 0;\n    }\n    var axes = axis_util.parseAxisParam(axis, $x.shape);\n    var permutedAxes = axis_util.getAxesPermutation(axes, $x.rank);\n    if (permutedAxes != null) {\n        $x = $x.transpose(permutedAxes);\n        axes = axis_util.getInnerMostAxes(axes.length, $x.rank);\n    }\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.argMin($x, axes[0]); }, { $x: $x });\n}\nfunction argMax_(x, axis) {\n    if (axis === void 0) { axis = 0; }\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'argMax');\n    if (axis == null) {\n        axis = 0;\n    }\n    var axes = axis_util.parseAxisParam(axis, $x.shape);\n    var permutedAxes = axis_util.getAxesPermutation(axes, $x.rank);\n    if (permutedAxes != null) {\n        $x = $x.transpose(permutedAxes);\n        axes = axis_util.getInnerMostAxes(axes.length, $x.rank);\n    }\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.argMax($x, axes[0]); }, { $x: $x });\n}\nfunction all_(x, axis, keepDims) {\n    if (axis === void 0) { axis = null; }\n    if (keepDims === void 0) { keepDims = false; }\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'all', 'bool');\n    util.assert($x.dtype === 'bool', \"Error Tensor must be of type bool. Got: \" + $x.dtype);\n    var origAxes = axis_util.parseAxisParam(axis, $x.shape);\n    var axes = origAxes;\n    var permutedAxes = axis_util.getAxesPermutation(axes, $x.rank);\n    if (permutedAxes != null) {\n        $x = $x.transpose(permutedAxes);\n        axes = axis_util.getInnerMostAxes(axes.length, $x.rank);\n    }\n    var res = environment_1.ENV.engine.runKernel(function (backend) { return backend.all($x, axes); }, { $x: $x });\n    if (keepDims) {\n        var newShape = axis_util.expandShapeToKeepDim(res.shape, origAxes);\n        return res.reshape(newShape);\n    }\n    return res;\n}\nfunction any_(x, axis, keepDims) {\n    if (axis === void 0) { axis = null; }\n    if (keepDims === void 0) { keepDims = false; }\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'any', 'bool');\n    util.assert($x.dtype === 'bool', \"Error Tensor must be of type bool. Got: \" + $x.dtype);\n    var origAxes = axis_util.parseAxisParam(axis, $x.shape);\n    var axes = origAxes;\n    var permutedAxes = axis_util.getAxesPermutation(axes, $x.rank);\n    if (permutedAxes != null) {\n        $x = $x.transpose(permutedAxes);\n        axes = axis_util.getInnerMostAxes(axes.length, $x.rank);\n    }\n    var res = environment_1.ENV.engine.runKernel(function (backend) { return backend.any($x, axes); }, { $x: $x });\n    if (keepDims) {\n        var newShape = axis_util.expandShapeToKeepDim(res.shape, origAxes);\n        return res.reshape(newShape);\n    }\n    return res;\n}\nfunction moments_(x, axis, keepDims) {\n    if (axis === void 0) { axis = null; }\n    if (keepDims === void 0) { keepDims = false; }\n    x = tensor_util_env_1.convertToTensor(x, 'x', 'moments');\n    var axes = axis_util.parseAxisParam(axis, x.shape);\n    var mean = x.mean(axes, keepDims);\n    var keepDimsShape = mean.shape;\n    if (!keepDims) {\n        keepDimsShape = axis_util.expandShapeToKeepDim(mean.shape, axes);\n    }\n    var devSquared = x.toFloat().sub(mean.reshape(keepDimsShape)).square();\n    var variance = devSquared.mean(axes, keepDims);\n    return { mean: mean, variance: variance };\n}\nexports.all = operation_1.op({ all_: all_ });\nexports.any = operation_1.op({ any_: any_ });\nexports.argMax = operation_1.op({ argMax_: argMax_ });\nexports.argMin = operation_1.op({ argMin_: argMin_ });\nexports.logSumExp = operation_1.op({ logSumExp_: logSumExp_ });\nexports.max = operation_1.op({ max_: max_ });\nexports.mean = operation_1.op({ mean_: mean_ });\nexports.min = operation_1.op({ min_: min_ });\nexports.moments = operation_1.op({ moments_: moments_ });\nexports.sum = operation_1.op({ sum_: sum_ });\n\n},{\"../environment\":55,\"../globals\":57,\"../tensor_util_env\":176,\"../util\":180,\"./axis_util\":122,\"./operation\":141,\"./tensor_ops\":156}],147:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"../environment\");\nvar tensor_util_env_1 = require(\"../tensor_util_env\");\nvar binary_ops_1 = require(\"./binary_ops\");\nvar logical_ops_1 = require(\"./logical_ops\");\nvar operation_1 = require(\"./operation\");\nvar selu_util_1 = require(\"./selu_util\");\nvar tensor_ops_1 = require(\"./tensor_ops\");\nfunction relu_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'relu');\n    if ($x.dtype === 'bool') {\n        return $x.toInt();\n    }\n    var grad = function (dy) {\n        var stepRes = $x.step();\n        return { $x: function () { return dy.mulStrict(stepRes.toFloat()); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.relu($x); }, { $x: $x }, grad);\n}\nfunction elu_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'elu');\n    var grad = function (dy, saved) {\n        var y = saved[0];\n        return {\n            $x: function () {\n                return environment_1.ENV.engine.runKernel(function (backend) { return backend.eluDer(dy, y); }, { dy: dy, y: y });\n            }\n        };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend, save) { return save(backend.elu($x)); }, { $x: $x }, grad);\n}\nfunction selu_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'selu');\n    var grad = function (dy) {\n        return {\n            $x: function () {\n                var mask = $x.greater(tensor_ops_1.scalar(0));\n                var scaleAlpha = tensor_ops_1.scalar(selu_util_1.SELU_SCALEALPHA);\n                var scale = tensor_ops_1.scalar(selu_util_1.SELU_SCALE);\n                var greaterThanZeroDer = dy.mul(scale);\n                var lessEqualZeroDer = dy.mul(scaleAlpha).mul($x.toFloat().exp());\n                return logical_ops_1.where(mask, greaterThanZeroDer, lessEqualZeroDer);\n            }\n        };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.selu($x); }, { $x: $x }, grad);\n}\nfunction leakyRelu_(x, alpha) {\n    if (alpha === void 0) { alpha = 0.2; }\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'leakyRelu');\n    return binary_ops_1.maximum(tensor_ops_1.scalar(alpha).mul($x), $x);\n}\nfunction prelu_(x, alpha) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'prelu');\n    var $alpha = tensor_util_env_1.convertToTensor(alpha, 'alpha', 'prelu');\n    var zero = tensor_ops_1.scalar(0);\n    return binary_ops_1.maximum(zero, $x).add($alpha.mul(binary_ops_1.minimum(zero, $x)));\n}\nexports.elu = operation_1.op({ elu_: elu_ });\nexports.leakyRelu = operation_1.op({ leakyRelu_: leakyRelu_ });\nexports.prelu = operation_1.op({ prelu_: prelu_ });\nexports.relu = operation_1.op({ relu_: relu_ });\nexports.selu = operation_1.op({ selu_: selu_ });\n\n},{\"../environment\":55,\"../tensor_util_env\":176,\"./binary_ops\":124,\"./logical_ops\":134,\"./operation\":141,\"./selu_util\":151,\"./tensor_ops\":156}],148:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"../environment\");\nvar tensor_util_env_1 = require(\"../tensor_util_env\");\nvar util = require(\"../util\");\nvar axis_util_1 = require(\"./axis_util\");\nvar operation_1 = require(\"./operation\");\nfunction reverse1d_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'reverse');\n    util.assert($x.rank === 1, \"Error in reverse1D: x must be rank 1 but got\\n             rank \" + $x.rank + \".\");\n    return exports.reverse($x, 0);\n}\nfunction reverse2d_(x, axis) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'reverse');\n    util.assert($x.rank === 2, \"Error in reverse2D: x must be rank 2 but got\\n             rank \" + $x.rank + \".\");\n    return exports.reverse($x, axis);\n}\nfunction reverse3d_(x, axis) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'reverse');\n    util.assert($x.rank === 3, \"Error in reverse3D: x must be rank 3 but got\\n             rank \" + $x.rank + \".\");\n    return exports.reverse($x, axis);\n}\nfunction reverse4d_(x, axis) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'reverse');\n    util.assert($x.rank === 4, \"Error in reverse4D: x must be rank 4 but got\\n             rank \" + $x.rank + \".\");\n    return exports.reverse($x, axis);\n}\nfunction reverse_(x, axis) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'reverse');\n    if ($x.rank === 0) {\n        return $x.clone();\n    }\n    var axes = axis_util_1.parseAxisParam(axis, $x.shape);\n    var grad = function (dy) {\n        return { $x: function () { return dy.reverse(axes); } };\n    };\n    var res = environment_1.ENV.engine.runKernel(function (backend) { return backend.reverse($x, axes); }, { $x: $x }, grad);\n    return res.reshapeAs($x);\n}\nexports.reverse = operation_1.op({ reverse_: reverse_ });\nexports.reverse1d = operation_1.op({ reverse1d_: reverse1d_ });\nexports.reverse2d = operation_1.op({ reverse2d_: reverse2d_ });\nexports.reverse3d = operation_1.op({ reverse3d_: reverse3d_ });\nexports.reverse4d = operation_1.op({ reverse4d_: reverse4d_ });\n\n},{\"../environment\":55,\"../tensor_util_env\":176,\"../util\":180,\"./axis_util\":122,\"./operation\":141}],149:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"../environment\");\nvar tensor_util_env_1 = require(\"../tensor_util_env\");\nvar util_1 = require(\"../util\");\nvar array_ops_1 = require(\"./array_ops\");\nvar axis_util_1 = require(\"./axis_util\");\nvar binary_ops_1 = require(\"./binary_ops\");\nvar compare_1 = require(\"./compare\");\nvar logical_ops_1 = require(\"./logical_ops\");\nvar operation_1 = require(\"./operation\");\nvar tensor_ops_1 = require(\"./tensor_ops\");\nfunction unsortedSegmentSum_(x, segmentIds, numSegments) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'unsortedSegmentSum');\n    var $segmentIds = tensor_util_env_1.convertToTensor(segmentIds, 'segmentIds', 'unsortedSegmentSum', 'int32');\n    util_1.assert($segmentIds.dtype === 'int32', 'segmentIds must be of dtype `int32`');\n    util_1.assert(util_1.isInt(numSegments), 'numSegments must be of dtype int');\n    var gradFunc = function (dy) {\n        var derX = function () {\n            return gatherDropNegatives(dy, $segmentIds);\n        };\n        return { $x: derX };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) {\n        return backend.unsortedSegmentSum($x, $segmentIds, numSegments);\n    }, { $x: $x }, gradFunc);\n}\nfunction gather_(x, indices, axis) {\n    if (axis === void 0) { axis = 0; }\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'gather');\n    var $indices = tensor_util_env_1.convertToTensor(indices, 'indices', 'gather', 'int32');\n    util_1.assert($indices.dtype === 'int32', 'Indices must be of dtype `int32`');\n    axis = axis_util_1.parseAxisParam(axis, $x.shape)[0];\n    var grad = function (dy) {\n        var derX = function () {\n            if (axis === 0) {\n                return exports.unsortedSegmentSum(dy, $indices, $x.shape[axis]);\n            }\n            var paramsShape = $x.shape;\n            var indicesSize = $indices.size;\n            var outerShape = paramsShape.slice(0, axis);\n            var outerDims = outerShape.length;\n            var innerShape = paramsShape.slice(axis, paramsShape.length).slice(1);\n            var innerDims = innerShape.length;\n            var outerAxesIndices = arrayRange(0, outerDims);\n            var innerAxesIndices = arrayRange(outerDims + 1, outerDims + 1 + innerDims);\n            var valuesShape = arrayConcat([outerShape, [indicesSize], innerShape]);\n            var values = dy.reshape(valuesShape);\n            var reshapedIndices = $indices.reshape([indicesSize]);\n            var transposeDims = arrayConcat([[outerDims], outerAxesIndices, innerAxesIndices]);\n            var valuesTranspose = values.transpose(transposeDims);\n            var paramsGrad = exports.unsortedSegmentSum(valuesTranspose, reshapedIndices, $x.shape[axis]);\n            var invertTransposeDims = axis_util_1.getUndoAxesPermutation(transposeDims);\n            paramsGrad = paramsGrad.transpose(invertTransposeDims);\n            return paramsGrad;\n        };\n        return { $x: derX };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.gather($x, $indices, axis); }, { $x: $x }, grad);\n}\nfunction arrayRange(start, stop) {\n    var result = [];\n    for (var i = start; i < stop; ++i) {\n        result.push(i);\n    }\n    return result;\n}\nfunction arrayConcat(arrays) {\n    var result = [];\n    for (var i = 0; i < arrays.length; ++i) {\n        for (var j = 0; j < arrays[i].length; ++j) {\n            result.push(arrays[i][j]);\n        }\n    }\n    return result;\n}\nfunction gatherDropNegatives(x, indices) {\n    var zeroClippedIndices = binary_ops_1.maximum(indices, tensor_ops_1.zerosLike(indices));\n    var gathered = exports.gather(x, zeroClippedIndices);\n    var isPositive = compare_1.greaterEqual(indices, tensor_ops_1.scalar(0, 'int32'));\n    var numIters = gathered.rank - isPositive.rank;\n    for (var i = 0; i < numIters; ++i) {\n        isPositive = array_ops_1.expandDims(isPositive, i + 1);\n    }\n    isPositive = logical_ops_1.logicalAnd(isPositive, tensor_ops_1.ones(gathered.shape, 'bool'));\n    var zeroSlice = tensor_ops_1.zerosLike(gathered);\n    return logical_ops_1.where(isPositive, gathered, zeroSlice);\n}\nexports.gather = operation_1.op({ gather_: gather_ });\nexports.unsortedSegmentSum = operation_1.op({ unsortedSegmentSum_: unsortedSegmentSum_ });\n\n},{\"../environment\":55,\"../tensor_util_env\":176,\"../util\":180,\"./array_ops\":120,\"./axis_util\":122,\"./binary_ops\":124,\"./compare\":126,\"./logical_ops\":134,\"./operation\":141,\"./tensor_ops\":156}],150:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"../util\");\nvar reduce_util_1 = require(\"./reduce_util\");\nfunction segOpComputeOptimalWindowSize(inSize, numSegments) {\n    var done = false;\n    var res;\n    if (inSize <= reduce_util_1.PARALLELIZE_THRESHOLD) {\n        res = inSize;\n        done = true;\n    }\n    else {\n        res = util_1.nearestDivisor(inSize, Math.floor(Math.sqrt(inSize)));\n    }\n    while (!done) {\n        if (res > numSegments || res === inSize) {\n            done = true;\n            break;\n        }\n        else {\n            res = util_1.nearestDivisor(inSize, res + 1);\n        }\n    }\n    return res;\n}\nexports.segOpComputeOptimalWindowSize = segOpComputeOptimalWindowSize;\nfunction computeOutShape(aShape, axis, numSegments) {\n    var outShape = [];\n    var rank = aShape.length;\n    for (var dim = 0; dim < rank; dim++) {\n        if (dim !== axis) {\n            outShape.push(aShape[dim]);\n        }\n        else {\n            outShape.push(numSegments);\n        }\n    }\n    return outShape;\n}\nexports.computeOutShape = computeOutShape;\n\n},{\"../util\":180,\"./reduce_util\":145}],151:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SELU_SCALEALPHA = 1.7580993408473768599402175208123;\nexports.SELU_SCALE = 1.0507009873554804934193349852946;\n\n},{}],152:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"../environment\");\nvar tensor_util_env_1 = require(\"../tensor_util_env\");\nvar util = require(\"../util\");\nvar operation_1 = require(\"./operation\");\nvar slice_util = require(\"./slice_util\");\nfunction slice1d_(x, begin, size) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'slice1d');\n    util.assert($x.rank === 1, \"slice1d expects a rank-1 tensor, but got a rank-\" + $x.rank + \" tensor\");\n    return exports.slice($x, [begin], [size]);\n}\nfunction slice2d_(x, begin, size) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'slice2d');\n    util.assert($x.rank === 2, \"slice1d expects a rank-2 tensor, but got a rank-\" + $x.rank + \" tensor\");\n    return exports.slice($x, begin, size);\n}\nfunction slice3d_(x, begin, size) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'slice3d');\n    util.assert($x.rank === 3, \"slice1d expects a rank-3 tensor, but got a rank-\" + $x.rank + \" tensor\");\n    return exports.slice($x, begin, size);\n}\nfunction slice4d_(x, begin, size) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'slice4d');\n    util.assert($x.rank === 4, \"slice1d expects a rank-4 tensor, but got a rank-\" + $x.rank + \" tensor\");\n    return exports.slice($x, begin, size);\n}\nfunction slice_(x, begin, size) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'slice');\n    if ($x.rank === 0) {\n        throw new Error('Slicing scalar is not possible');\n    }\n    var begin_;\n    if (typeof begin === 'number') {\n        begin_ = [begin].concat(new Array($x.rank - 1).fill(0));\n    }\n    else if (begin.length < $x.rank) {\n        begin_ = begin.concat(new Array($x.rank - begin.length).fill(0));\n    }\n    else {\n        begin_ = begin;\n    }\n    var size_;\n    if (size == null) {\n        size_ = new Array($x.rank).fill(-1);\n    }\n    else if (typeof size === 'number') {\n        size_ = [size].concat(new Array($x.rank - 1).fill(-1));\n    }\n    else if (size.length < $x.rank) {\n        size_ = size.concat(new Array($x.rank - size.length).fill(-1));\n    }\n    else {\n        size_ = size;\n    }\n    size_ = size_.map(function (d, i) {\n        if (d >= 0) {\n            return d;\n        }\n        else {\n            util.assert(d === -1, 'Bad value in size');\n            return $x.shape[i] - begin_[i];\n        }\n    });\n    slice_util.assertParamsValid($x, begin_, size_);\n    var inputShape = $x.shape;\n    var grad = function (dy) {\n        var paddings = [];\n        for (var i = 0; i < dy.rank; i++) {\n            paddings.push([begin_[i], inputShape[i] - begin_[i] - size_[i]]);\n        }\n        return { $x: function () { return dy.pad(paddings); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.slice($x, begin_, size_); }, { $x: $x }, grad);\n}\nexports.slice = operation_1.op({ slice_: slice_ });\nexports.slice1d = operation_1.op({ slice1d_: slice1d_ });\nexports.slice2d = operation_1.op({ slice2d_: slice2d_ });\nexports.slice3d = operation_1.op({ slice3d_: slice3d_ });\nexports.slice4d = operation_1.op({ slice4d_: slice4d_ });\n\n},{\"../environment\":55,\"../tensor_util_env\":176,\"../util\":180,\"./operation\":141,\"./slice_util\":153}],153:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util = require(\"../util\");\nfunction assertParamsValid(input, begin, size) {\n    util.assert(input.rank === begin.length, \"Error in slice\" + input.rank + \"D: Length of begin \" + begin + \" must \" +\n        (\"match the rank of the array (\" + input.rank + \").\"));\n    util.assert(input.rank === size.length, \"Error in slice\" + input.rank + \"D: Length of size \" + size + \" must \" +\n        (\"match the rank of the array (\" + input.rank + \").\"));\n    for (var i = 0; i < input.rank; ++i) {\n        util.assert(begin[i] + size[i] <= input.shape[i], \"Error in slice\" + input.rank + \"D: begin[\" + i + \"] + size[\" + i + \"] \" +\n            (\"(\" + (begin[i] + size[i]) + \") would overflow input.shape[\" + i + \"] (\" + input.shape[i] + \")\"));\n    }\n}\nexports.assertParamsValid = assertParamsValid;\nfunction getStridedSlicedInfo(shape, begin, end, strides, beginMask, endMask) {\n    if (beginMask === void 0) { beginMask = 0; }\n    if (endMask === void 0) { endMask = 0; }\n    var startIndex = [];\n    var endIndex = [];\n    for (var i = 0; i < shape.length; i++) {\n        startIndex[i] = startForAxis(beginMask, begin, strides, shape, i);\n        endIndex[i] = stopForAxis(endMask, end, strides, shape, i);\n    }\n    var size = new Array(shape.length).fill(0);\n    size = size.map(function (d, i) {\n        var count = 0;\n        for (var start = startIndex[i]; !(strides[i] > 0 ? start >= endIndex[i] : start <= endIndex[i]); start += strides[i]) {\n            count += 1;\n        }\n        return count;\n    });\n    return [startIndex, size];\n}\nexports.getStridedSlicedInfo = getStridedSlicedInfo;\nfunction startForAxis(beginMask, startIndices, strides, inputShape, axis) {\n    var start = startIndices[axis];\n    if (beginMask & 1 << axis) {\n        if (strides[axis] > 0) {\n            start = Number.MIN_SAFE_INTEGER;\n        }\n        else {\n            start = Number.MAX_SAFE_INTEGER;\n        }\n    }\n    var axisSize = inputShape[axis];\n    if (start < 0) {\n        start += axisSize;\n    }\n    start = util.clamp(0, start, axisSize - 1);\n    return start;\n}\nexports.startForAxis = startForAxis;\nfunction stopForAxis(endMask, stopIndices, strides, inputShape, axis) {\n    var stop = stopIndices[axis];\n    if (endMask & (1 << axis)) {\n        if (strides[axis] > 0) {\n            stop = Number.MAX_SAFE_INTEGER;\n        }\n        else {\n            stop = Number.MIN_SAFE_INTEGER;\n        }\n    }\n    var axisSize = inputShape[axis];\n    if (stop < 0) {\n        stop += axisSize;\n    }\n    if (strides[axis] > 0) {\n        stop = util.clamp(0, stop, axisSize);\n    }\n    else {\n        stop = util.clamp(-1, stop, axisSize - 1);\n    }\n    return stop;\n}\nexports.stopForAxis = stopForAxis;\n\n},{\"../util\":180}],154:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gradients_1 = require(\"../gradients\");\nvar tensor_util_env_1 = require(\"../tensor_util_env\");\nvar operation_1 = require(\"./operation\");\nfunction softmax_(logits, dim) {\n    if (dim === void 0) { dim = -1; }\n    var $logits = tensor_util_env_1.convertToTensor(logits, 'logits', 'softmax');\n    if (dim === -1) {\n        dim = $logits.rank - 1;\n    }\n    if (dim !== $logits.rank - 1) {\n        throw Error('Softmax along a non-last dimension is not yet supported. ' +\n            (\"Logits was rank \" + $logits.rank + \" and dim was \" + dim));\n    }\n    var customOp = gradients_1.customGrad(function (logits) {\n        var keepDims = true;\n        var lse = logits.logSumExp([dim], keepDims);\n        var logResult = logits.toFloat().sub(lse);\n        var y = logResult.exp();\n        var gradFunc = function (dy) {\n            var dyTimesY = dy.mul(y);\n            var keepDims = true;\n            return dyTimesY.sub(dyTimesY.sum([dim], keepDims).mul(y));\n        };\n        return { value: y, gradFunc: gradFunc };\n    });\n    return customOp($logits);\n}\nexports.softmax = operation_1.op({ softmax_: softmax_ });\n\n},{\"../gradients\":58,\"../tensor_util_env\":176,\"./operation\":141}],155:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"../environment\");\nvar tensor_util_env_1 = require(\"../tensor_util_env\");\nvar operation_1 = require(\"./operation\");\nfunction stridedSlice_(x, begin, end, strides, beginMask, endMask) {\n    if (beginMask === void 0) { beginMask = 0; }\n    if (endMask === void 0) { endMask = 0; }\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'stridedSlice');\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.stridedSlice($x, begin, end, strides, beginMask, endMask); }, { $x: $x });\n}\nexports.stridedSlice = operation_1.op({ stridedSlice_: stridedSlice_ });\n\n},{\"../environment\":55,\"../tensor_util_env\":176,\"./operation\":141}],156:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"../environment\");\nvar tensor_1 = require(\"../tensor\");\nvar tensor_util_env_1 = require(\"../tensor_util_env\");\nvar util_1 = require(\"../util\");\nvar operation_1 = require(\"./operation\");\nfunction tensor(values, shape, dtype) {\n    if (dtype === void 0) { dtype = 'float32'; }\n    if (!util_1.isTypedArray(values) && !Array.isArray(values) &&\n        typeof values !== 'number' && typeof values !== 'boolean') {\n        throw new Error('values passed to tensor(values) must be an ' +\n            'array of numbers or booleans, or a TypedArray');\n    }\n    var inferredShape = util_1.inferShape(values);\n    if (shape != null && inferredShape.length !== 1) {\n        util_1.assertShapesMatch(shape, inferredShape, \"Error creating a new Tensor. \" +\n            (\"Inferred shape (\" + inferredShape + \") does not match the \") +\n            (\"provided shape (\" + shape + \"). \"));\n    }\n    if (!util_1.isTypedArray(values) && !Array.isArray(values)) {\n        values = [values];\n    }\n    shape = shape || inferredShape;\n    return tensor_1.Tensor.make(shape, {\n        values: util_1.toTypedArray(values, dtype, environment_1.ENV.get('DEBUG'))\n    }, dtype);\n}\nexports.tensor = tensor;\nfunction scalar(value, dtype) {\n    if (dtype === void 0) { dtype = 'float32'; }\n    if (util_1.isTypedArray(value) || Array.isArray(value)) {\n        throw new Error('Error creating a new Scalar: value must be a primitive ' +\n            '(number|boolean)');\n    }\n    return tensor(value, [], dtype);\n}\nexports.scalar = scalar;\nfunction tensor1d(values, dtype) {\n    if (dtype === void 0) { dtype = 'float32'; }\n    util_1.assertNonNull(values);\n    var inferredShape = util_1.inferShape(values);\n    if (inferredShape.length !== 1) {\n        throw new Error('tensor1d() requires values to be a flat/TypedArray');\n    }\n    return tensor(values, inferredShape, dtype);\n}\nexports.tensor1d = tensor1d;\nfunction tensor2d(values, shape, dtype) {\n    if (dtype === void 0) { dtype = 'float32'; }\n    util_1.assertNonNull(values);\n    if (shape != null && shape.length !== 2) {\n        throw new Error('tensor2d() requires shape to have two numbers');\n    }\n    var inferredShape = util_1.inferShape(values);\n    if (inferredShape.length !== 2 && inferredShape.length !== 1) {\n        throw new Error('tensor2d() requires values to be number[][] or flat/TypedArray');\n    }\n    if (inferredShape.length === 1 && shape == null) {\n        throw new Error('tensor2d() requires shape to be provided when `values` ' +\n            'are a flat/TypedArray');\n    }\n    shape = shape || inferredShape;\n    return tensor(values, shape, dtype);\n}\nexports.tensor2d = tensor2d;\nfunction tensor3d(values, shape, dtype) {\n    if (dtype === void 0) { dtype = 'float32'; }\n    util_1.assertNonNull(values);\n    if (shape != null && shape.length !== 3) {\n        throw new Error('tensor3d() requires shape to have three numbers');\n    }\n    var inferredShape = util_1.inferShape(values);\n    if (inferredShape.length !== 3 && inferredShape.length !== 1) {\n        throw new Error('tensor3d() requires values to be number[][][] or flat/TypedArray');\n    }\n    if (inferredShape.length === 1 && shape == null) {\n        throw new Error('tensor3d() requires shape to be provided when `values` ' +\n            'are a flat array');\n    }\n    shape = shape || inferredShape;\n    return tensor(values, shape, dtype);\n}\nexports.tensor3d = tensor3d;\nfunction tensor4d(values, shape, dtype) {\n    if (dtype === void 0) { dtype = 'float32'; }\n    util_1.assertNonNull(values);\n    if (shape != null && shape.length !== 4) {\n        throw new Error('tensor4d() requires shape to have four numbers');\n    }\n    var inferredShape = util_1.inferShape(values);\n    if (inferredShape.length !== 4 && inferredShape.length !== 1) {\n        throw new Error('tensor4d() requires values to be number[][][][] or flat/TypedArray');\n    }\n    if (inferredShape.length === 1 && shape == null) {\n        throw new Error('tensor4d() requires shape to be provided when `values` ' +\n            'are a flat array');\n    }\n    shape = shape || inferredShape;\n    return tensor(values, shape, dtype);\n}\nexports.tensor4d = tensor4d;\nfunction tensor5d(values, shape, dtype) {\n    if (dtype === void 0) { dtype = 'float32'; }\n    util_1.assertNonNull(values);\n    if (shape != null && shape.length !== 5) {\n        throw new Error('tensor5d() requires shape to have five numbers');\n    }\n    var inferredShape = util_1.inferShape(values);\n    if (inferredShape.length !== 5 && inferredShape.length !== 1) {\n        throw new Error('tensor5d() requires values to be ' +\n            'number[][][][][] or flat/TypedArray');\n    }\n    if (inferredShape.length === 1 && shape == null) {\n        throw new Error('tensor5d() requires shape to be provided when `values` ' +\n            'are a flat array');\n    }\n    shape = shape || inferredShape;\n    return tensor(values, shape, dtype);\n}\nexports.tensor5d = tensor5d;\nfunction tensor6d(values, shape, dtype) {\n    if (dtype === void 0) { dtype = 'float32'; }\n    util_1.assertNonNull(values);\n    if (shape != null && shape.length !== 6) {\n        throw new Error('tensor6d() requires shape to have six numbers');\n    }\n    var inferredShape = util_1.inferShape(values);\n    if (inferredShape.length !== 6 && inferredShape.length !== 1) {\n        throw new Error('tensor6d() requires values to be number[][][][] or flat/TypedArray');\n    }\n    if (inferredShape.length === 1 && shape == null) {\n        throw new Error('tensor6d() requires shape to be provided when `values` ' +\n            'are a flat array');\n    }\n    shape = shape ||\n        inferredShape;\n    return tensor(values, shape, dtype);\n}\nexports.tensor6d = tensor6d;\nfunction ones(shape, dtype) {\n    if (dtype === void 0) { dtype = 'float32'; }\n    var values = util_1.makeOnesTypedArray(util_1.sizeFromShape(shape), dtype);\n    return tensor_1.Tensor.make(shape, { values: values }, dtype);\n}\nexports.ones = ones;\nfunction zeros(shape, dtype) {\n    if (dtype === void 0) { dtype = 'float32'; }\n    var values = util_1.makeZerosTypedArray(util_1.sizeFromShape(shape), dtype);\n    return tensor_1.Tensor.make(shape, { values: values }, dtype);\n}\nexports.zeros = zeros;\nfunction fill(shape, value, dtype) {\n    if (dtype === void 0) { dtype = 'float32'; }\n    var values = util_1.getTypedArrayFromDType(dtype, util_1.sizeFromShape(shape));\n    values.fill(value);\n    return tensor_1.Tensor.make(shape, { values: values }, dtype);\n}\nexports.fill = fill;\nfunction onesLike_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'onesLike');\n    return ones($x.shape, $x.dtype);\n}\nfunction zerosLike_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'zerosLike');\n    return zeros($x.shape, $x.dtype);\n}\nfunction linspace(start, stop, num) {\n    if (num === 0) {\n        throw new Error('Cannot request zero samples');\n    }\n    var step = (stop - start) / (num - 1);\n    var values = util_1.makeZerosTypedArray(num, 'float32');\n    values[0] = start;\n    for (var i = 1; i < values.length; i++) {\n        values[i] = values[i - 1] + step;\n    }\n    return tensor1d(values, 'float32');\n}\nexports.linspace = linspace;\nfunction range(start, stop, step, dtype) {\n    if (step === void 0) { step = 1; }\n    if (dtype === void 0) { dtype = 'float32'; }\n    if (step === 0) {\n        throw new Error('Cannot have a step of zero');\n    }\n    var sameStartStop = start === stop;\n    var increasingRangeNegativeStep = start < stop && step < 0;\n    var decreasingRangePositiveStep = stop < start && step > 1;\n    if (sameStartStop || increasingRangeNegativeStep ||\n        decreasingRangePositiveStep) {\n        return zeros([0], dtype);\n    }\n    var numElements = Math.abs(Math.ceil((stop - start) / step));\n    var values = util_1.makeZerosTypedArray(numElements, dtype);\n    if (stop < start && step === 1) {\n        step = -1;\n    }\n    values[0] = start;\n    for (var i = 1; i < values.length; i++) {\n        values[i] = values[i - 1] + step;\n    }\n    return tensor1d(values, dtype);\n}\nexports.range = range;\nexports.onesLike = operation_1.op({ onesLike_: onesLike_ });\nexports.zerosLike = operation_1.op({ zerosLike_: zerosLike_ });\n\n},{\"../environment\":55,\"../tensor\":173,\"../tensor_util_env\":176,\"../util\":180,\"./operation\":141}],157:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"../environment\");\nvar tensor_util_env_1 = require(\"../tensor_util_env\");\nvar operation_1 = require(\"./operation\");\nfunction topk_(x, k, sorted) {\n    if (k === void 0) { k = 1; }\n    if (sorted === void 0) { sorted = true; }\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'topk');\n    if ($x.rank === 0) {\n        throw new Error('topk() expects the input to be of rank 1 or higher');\n    }\n    var lastDim = $x.shape[$x.shape.length - 1];\n    if (k > lastDim) {\n        throw new Error(\"'k' passed to topk() must be <= the last dimension (\" + lastDim + \") \" +\n            (\"but got \" + k));\n    }\n    var _a = environment_1.ENV.engine.runKernel(function (b) { return b.topk($x, k, sorted); }, { $x: $x }), values = _a[0], indices = _a[1];\n    return { values: values, indices: indices };\n}\nexports.topk = operation_1.op({ topk_: topk_ });\n\n},{\"../environment\":55,\"../tensor_util_env\":176,\"./operation\":141}],158:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"../environment\");\nvar tensor_util_env_1 = require(\"../tensor_util_env\");\nvar util = require(\"../util\");\nvar axis_util = require(\"./axis_util\");\nvar operation_1 = require(\"./operation\");\nfunction transpose_(x, perm) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'transpose');\n    if (perm == null) {\n        perm = $x.shape.map(function (s, i) { return i; }).reverse();\n    }\n    util.assert($x.rank === perm.length, \"Error in transpose: rank of input \" + $x.rank + \" \" +\n        (\"must match length of perm \" + perm + \".\"));\n    perm.forEach(function (axis) {\n        util.assert(axis >= 0 && axis < $x.rank, \"All entries in 'perm' must be between 0 and \" + ($x.rank - 1) +\n            (\" but got \" + perm));\n    });\n    if ($x.rank <= 1) {\n        return $x.clone();\n    }\n    var der = function (dy) {\n        var undoPerm = axis_util.getUndoAxesPermutation(perm);\n        return { $x: function () { return dy.transpose(undoPerm); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.transpose($x, perm); }, { $x: $x }, der);\n}\nexports.transpose = operation_1.op({ transpose_: transpose_ });\n\n},{\"../environment\":55,\"../tensor_util_env\":176,\"../util\":180,\"./axis_util\":122,\"./operation\":141}],159:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"../environment\");\nvar tensor_util_env_1 = require(\"../tensor_util_env\");\nvar util = require(\"../util\");\nvar operation_1 = require(\"./operation\");\nvar tensor_ops_1 = require(\"./tensor_ops\");\nfunction neg_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'neg');\n    var grad = function (dy) {\n        return { $x: function () { return dy.neg(); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.neg($x); }, { $x: $x }, grad);\n}\nfunction ceil_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'ceil');\n    var grad = function (dy) {\n        return { $x: function () { return tensor_ops_1.zerosLike(dy); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.ceil($x); }, { $x: $x }, grad);\n}\nfunction floor_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'floor');\n    var grad = function (dy) {\n        return { $x: function () { return tensor_ops_1.zerosLike(dy); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.floor($x); }, { $x: $x }, grad);\n}\nfunction sign_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'sign');\n    var grad = function (dy) {\n        return { $x: function () { return tensor_ops_1.zerosLike(dy); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.sign($x); }, { $x: $x }, grad);\n}\nfunction round_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'round');\n    var grad = function (dy) {\n        return { $x: function () { return tensor_ops_1.zerosLike(dy); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.round($x); }, { $x: $x }, grad);\n}\nfunction exp_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'exp');\n    var bck = function (dy, saved) {\n        var y = saved[0];\n        return { $x: function () { return dy.mulStrict(y); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend, save) { return save(backend.exp($x)); }, { $x: $x }, bck);\n}\nfunction expm1_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'expm1');\n    var grad = function (dy) {\n        return { $x: function () { return dy.mulStrict($x.exp()); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.expm1($x); }, { $x: $x }, grad);\n}\nfunction log_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'log');\n    var grad = function (dy) {\n        return { $x: function () { return dy.divStrict($x.toFloat()); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.log($x); }, { $x: $x }, grad);\n}\nfunction log1p_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'log1p');\n    var grad = function (dy) {\n        return { $x: function () { return dy.divStrict($x.add(tensor_ops_1.scalar(1))); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.log1p($x); }, { $x: $x }, grad);\n}\nfunction sqrt_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'sqrt');\n    var grad = function (dy) {\n        return { $x: function () { return dy.divStrict($x.toFloat().sqrt().mul(tensor_ops_1.scalar(2))); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.sqrt($x); }, { $x: $x }, grad);\n}\nfunction rsqrt_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'rsqrt');\n    var grad = function (dy) {\n        return { $x: function () { return dy.divStrict($x.pow(tensor_ops_1.scalar(1.5)).mul(tensor_ops_1.scalar(2))).neg(); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.rsqrt($x); }, { $x: $x }, grad);\n}\nfunction square_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'square');\n    var grad = function (dy) {\n        return { $x: function () { return dy.mulStrict($x.toFloat().mul(tensor_ops_1.scalar(2))); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.square($x); }, { $x: $x }, grad);\n}\nfunction reciprocal_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'reciprocal');\n    var grad = function (dy) {\n        return { $x: function () { return dy.divStrict($x.square().neg()); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.reciprocal($x); }, { $x: $x }, grad);\n}\nfunction abs_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'abs');\n    var grad = function (dy) {\n        return { $x: function () { return dy.mulStrict($x.toFloat().step(-1)); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.abs($x); }, { $x: $x }, grad);\n}\nfunction clipByValue_(x, clipValueMin, clipValueMax) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'clipByValue');\n    util.assert((clipValueMin <= clipValueMax), \"Error in clip: min (\" + clipValueMin + \") must be \" +\n        (\"less than or equal to max (\" + clipValueMax + \").\"));\n    var grad = function (dy) {\n        return {\n            $x: function () { return dy.where($x.greaterEqual(tensor_ops_1.scalar(clipValueMin))\n                .logicalAnd($x.lessEqual(tensor_ops_1.scalar(clipValueMax))), tensor_ops_1.zerosLike(dy)); },\n        };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.clip($x, clipValueMin, clipValueMax); }, { $x: $x }, grad);\n}\nfunction sigmoid_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'sigmoid');\n    var grad = function (dy, saved) {\n        var y = saved[0];\n        return { $x: function () { return dy.mulStrict(y.mul(tensor_ops_1.scalar(1).sub(y))); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend, save) { return save(backend.sigmoid($x)); }, { $x: $x }, grad);\n}\nfunction logSigmoid_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'logSigmoid');\n    var grad = function (dy) {\n        return { $x: function () { return dy.mulStrict($x.neg().sigmoid()); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.softplus($x.neg()).neg(); }, { $x: $x }, grad);\n}\nfunction softplus_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'softplus');\n    var grad = function (dy) {\n        return { $x: function () { return dy.mulStrict($x.sigmoid()); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.softplus($x); }, { $x: $x }, grad);\n}\nfunction sin_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'sin');\n    var grad = function (dy) {\n        return { $x: function () { return $x.toFloat().cos().mulStrict(dy); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.sin($x); }, { $x: $x }, grad);\n}\nfunction cos_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'cos');\n    var grad = function (dy) {\n        return { $x: function () { return $x.toFloat().sin().neg().mulStrict(dy); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.cos($x); }, { $x: $x }, grad);\n}\nfunction tan_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'tan');\n    var grad = function (dy) {\n        return { $x: function () { return dy.divStrict($x.cos().square()); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.tan($x); }, { $x: $x }, grad);\n}\nfunction asin_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'asin');\n    var grad = function (dy) {\n        return {\n            $x: function () { return dy.divStrict(tensor_ops_1.scalar(1).sub($x.toFloat().square()).sqrt()); }\n        };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.asin($x); }, { $x: $x }, grad);\n}\nfunction acos_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'acos');\n    var grad = function (dy) {\n        return {\n            $x: function () {\n                return dy.divStrict(tensor_ops_1.scalar(1).sub($x.toFloat().square()).sqrt()).neg();\n            }\n        };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.acos($x); }, { $x: $x }, grad);\n}\nfunction atan_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'atan');\n    var grad = function (dy) {\n        return { $x: function () { return dy.divStrict(tensor_ops_1.scalar(1).add($x.toFloat().square())); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.atan($x); }, { $x: $x }, grad);\n}\nfunction sinh_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'sinh');\n    var grad = function (dy) {\n        return { $x: function () { return $x.toFloat().cosh().mulStrict(dy); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.sinh($x); }, { $x: $x }, grad);\n}\nfunction cosh_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'cosh');\n    var grad = function (dy) {\n        return { $x: function () { return $x.toFloat().sinh().mulStrict(dy); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.cosh($x); }, { $x: $x }, grad);\n}\nfunction tanh_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'tanh');\n    var grad = function (dy, saved) {\n        var y = saved[0];\n        return { $x: function () { return tensor_ops_1.scalar(1).sub(y.square()).mulStrict(dy); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend, save) { return save(backend.tanh($x)); }, { $x: $x }, grad);\n}\nfunction asinh_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'asinh');\n    var grad = function (dy) {\n        return {\n            $x: function () { return dy.divStrict(tensor_ops_1.scalar(1).add($x.toFloat().square()).sqrt()); }\n        };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.asinh($x); }, { $x: $x }, grad);\n}\nfunction acosh_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'acosh');\n    var grad = function (dy) {\n        return {\n            $x: function () { return dy.divStrict($x.toFloat().square().sub(tensor_ops_1.scalar(1)).sqrt()); }\n        };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.acosh($x); }, { $x: $x }, grad);\n}\nfunction atanh_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'atanh');\n    var grad = function (dy) {\n        return { $x: function () { return dy.divStrict(tensor_ops_1.scalar(1).sub($x.toFloat().square())); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.atanh($x); }, { $x: $x }, grad);\n}\nfunction erf_(x) {\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'erf');\n    util.assert($x.dtype === 'int32' || $x.dtype === 'float32', 'Input dtype must be `int32` or `float32`.');\n    if ($x.dtype === 'int32') {\n        $x = $x.toFloat();\n    }\n    var grad = function (dy) {\n        return {\n            $x: function () { return dy.mulStrict(tensor_ops_1.scalar(2 / Math.sqrt(Math.PI)).mul($x.square().neg().exp())); }\n        };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.erf($x); }, { $x: $x }, grad);\n}\nfunction step_(x, alpha) {\n    if (alpha === void 0) { alpha = 0.0; }\n    var $x = tensor_util_env_1.convertToTensor(x, 'x', 'step');\n    var grad = function (dy) {\n        return { $x: function () { return tensor_ops_1.zerosLike(dy); } };\n    };\n    return environment_1.ENV.engine.runKernel(function (backend) { return backend.step($x, alpha); }, { $x: $x }, grad);\n}\nexports.abs = operation_1.op({ abs_: abs_ });\nexports.acos = operation_1.op({ acos_: acos_ });\nexports.acosh = operation_1.op({ acosh_: acosh_ });\nexports.asin = operation_1.op({ asin_: asin_ });\nexports.asinh = operation_1.op({ asinh_: asinh_ });\nexports.atan = operation_1.op({ atan_: atan_ });\nexports.atanh = operation_1.op({ atanh_: atanh_ });\nexports.ceil = operation_1.op({ ceil_: ceil_ });\nexports.clipByValue = operation_1.op({ clipByValue_: clipByValue_ });\nexports.cos = operation_1.op({ cos_: cos_ });\nexports.cosh = operation_1.op({ cosh_: cosh_ });\nexports.erf = operation_1.op({ erf_: erf_ });\nexports.exp = operation_1.op({ exp_: exp_ });\nexports.expm1 = operation_1.op({ expm1_: expm1_ });\nexports.floor = operation_1.op({ floor_: floor_ });\nexports.log = operation_1.op({ log_: log_ });\nexports.log1p = operation_1.op({ log1p_: log1p_ });\nexports.logSigmoid = operation_1.op({ logSigmoid_: logSigmoid_ });\nexports.neg = operation_1.op({ neg_: neg_ });\nexports.reciprocal = operation_1.op({ reciprocal_: reciprocal_ });\nexports.round = operation_1.op({ round_: round_ });\nexports.rsqrt = operation_1.op({ rsqrt_: rsqrt_ });\nexports.sigmoid = operation_1.op({ sigmoid_: sigmoid_ });\nexports.sign = operation_1.op({ sign_: sign_ });\nexports.sin = operation_1.op({ sin_: sin_ });\nexports.sinh = operation_1.op({ sinh_: sinh_ });\nexports.softplus = operation_1.op({ softplus_: softplus_ });\nexports.sqrt = operation_1.op({ sqrt_: sqrt_ });\nexports.square = operation_1.op({ square_: square_ });\nexports.step = operation_1.op({ step_: step_ });\nexports.tan = operation_1.op({ tan_: tan_ });\nexports.tanh = operation_1.op({ tanh_: tanh_ });\n\n},{\"../environment\":55,\"../tensor_util_env\":176,\"../util\":180,\"./operation\":141,\"./tensor_ops\":156}],160:[function(require,module,exports){\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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"../environment\");\nvar globals_1 = require(\"../globals\");\nvar ops_1 = require(\"../ops/ops\");\nvar serialization_1 = require(\"../serialization\");\nvar optimizer_1 = require(\"./optimizer\");\nvar optimizer_utils = require(\"./optimizer_utils\");\nvar AdadeltaOptimizer = (function (_super) {\n    __extends(AdadeltaOptimizer, _super);\n    function AdadeltaOptimizer(learningRate, rho, epsilon) {\n        if (epsilon === void 0) { epsilon = null; }\n        var _this = _super.call(this) || this;\n        _this.learningRate = learningRate;\n        _this.rho = rho;\n        _this.epsilon = epsilon;\n        _this.accumulatedGrads = {};\n        _this.accumulatedUpdates = {};\n        _this.c = globals_1.keep(ops_1.scalar(-learningRate));\n        _this.rhoScalar = globals_1.keep(ops_1.scalar(rho));\n        _this.oneMinusRho = globals_1.keep(ops_1.scalar(1 - rho));\n        if (epsilon === null) {\n            epsilon = optimizer_utils.getOptimizerDefaultEpsilonValue();\n        }\n        _this.epsilonScalar = globals_1.keep(ops_1.scalar(epsilon));\n        return _this;\n    }\n    AdadeltaOptimizer.prototype.applyGradients = function (variableGradients) {\n        var _this = this;\n        var _loop_1 = function (variableName) {\n            var value = environment_1.ENV.engine.registeredVariables[variableName];\n            if (this_1.accumulatedGrads[variableName] == null) {\n                var trainable_1 = false;\n                globals_1.tidy(function () {\n                    _this.accumulatedGrads[variableName] =\n                        ops_1.zerosLike(value).variable(trainable_1);\n                });\n            }\n            if (this_1.accumulatedUpdates[variableName] == null) {\n                var trainable_2 = false;\n                globals_1.tidy(function () {\n                    _this.accumulatedUpdates[variableName] =\n                        ops_1.zerosLike(value).variable(trainable_2);\n                });\n            }\n            var gradient = variableGradients[variableName];\n            var accumulatedGrad = this_1.accumulatedGrads[variableName];\n            var accumulatedUpdate = this_1.accumulatedUpdates[variableName];\n            globals_1.tidy(function () {\n                var newAccumulatedGrad = _this.rhoScalar.mul(accumulatedGrad)\n                    .add(_this.oneMinusRho.mul(gradient.square()));\n                var updates = accumulatedUpdate.add(_this.epsilonScalar)\n                    .sqrt()\n                    .div(accumulatedGrad.add(_this.epsilonScalar).sqrt())\n                    .mul(gradient);\n                var newAccumulatedUpdate = _this.rhoScalar.mul(accumulatedUpdate)\n                    .add(_this.oneMinusRho.mul(updates.square()));\n                _this.accumulatedGrads[variableName].assign(newAccumulatedGrad);\n                _this.accumulatedUpdates[variableName].assign(newAccumulatedUpdate);\n                var newValue = _this.c.mul(updates).add(value);\n                value.assign(newValue);\n            });\n        };\n        var this_1 = this;\n        for (var variableName in variableGradients) {\n            _loop_1(variableName);\n        }\n    };\n    AdadeltaOptimizer.prototype.dispose = function () {\n        var _this = this;\n        this.c.dispose();\n        this.epsilonScalar.dispose();\n        this.rhoScalar.dispose();\n        this.oneMinusRho.dispose();\n        if (this.accumulatedUpdates != null) {\n            Object.keys(this.accumulatedUpdates)\n                .forEach(function (name) { return _this.accumulatedUpdates[name].dispose(); });\n            Object.keys(this.accumulatedGrads)\n                .forEach(function (name) { return _this.accumulatedGrads[name].dispose(); });\n        }\n    };\n    AdadeltaOptimizer.prototype.getConfig = function () {\n        return {\n            learningRate: this.learningRate,\n            rho: this.rho,\n            epsilon: this.epsilon\n        };\n    };\n    AdadeltaOptimizer.fromConfig = function (cls, config) {\n        return new cls(config.learningRate, config.rho, config.epsilon);\n    };\n    AdadeltaOptimizer.className = 'AdadeltaOptimizer';\n    return AdadeltaOptimizer;\n}(optimizer_1.Optimizer));\nexports.AdadeltaOptimizer = AdadeltaOptimizer;\nserialization_1.SerializationMap.register(AdadeltaOptimizer);\n\n},{\"../environment\":55,\"../globals\":57,\"../ops/ops\":142,\"../serialization\":171,\"./optimizer\":165,\"./optimizer_utils\":167}],161:[function(require,module,exports){\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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"../environment\");\nvar globals_1 = require(\"../globals\");\nvar ops_1 = require(\"../ops/ops\");\nvar serialization_1 = require(\"../serialization\");\nvar optimizer_1 = require(\"./optimizer\");\nvar optimizer_utils = require(\"./optimizer_utils\");\nvar AdagradOptimizer = (function (_super) {\n    __extends(AdagradOptimizer, _super);\n    function AdagradOptimizer(learningRate, initialAccumulatorValue) {\n        if (initialAccumulatorValue === void 0) { initialAccumulatorValue = 0.1; }\n        var _this = _super.call(this) || this;\n        _this.learningRate = learningRate;\n        _this.initialAccumulatorValue = initialAccumulatorValue;\n        _this.accumulatedGrads = {};\n        _this.c = globals_1.keep(ops_1.scalar(-learningRate));\n        var epsilon = optimizer_utils.getOptimizerDefaultEpsilonValue();\n        _this.epsilon = globals_1.keep(ops_1.scalar(epsilon));\n        return _this;\n    }\n    AdagradOptimizer.prototype.applyGradients = function (variableGradients) {\n        var _this = this;\n        var _loop_1 = function (variableName) {\n            var value = environment_1.ENV.engine.registeredVariables[variableName];\n            if (this_1.accumulatedGrads[variableName] == null) {\n                var trainable_1 = false;\n                globals_1.tidy(function () {\n                    _this.accumulatedGrads[variableName] =\n                        ops_1.fill(value.shape, _this.initialAccumulatorValue)\n                            .variable(trainable_1);\n                });\n            }\n            var gradient = variableGradients[variableName];\n            var accumulatedGrad = this_1.accumulatedGrads[variableName];\n            globals_1.tidy(function () {\n                var newAccumulatedGrad = accumulatedGrad.add(gradient.square());\n                _this.accumulatedGrads[variableName].assign(newAccumulatedGrad);\n                var newValue = _this.c\n                    .mul(gradient.div(newAccumulatedGrad.add(_this.epsilon).sqrt()))\n                    .add(value);\n                value.assign(newValue);\n            });\n        };\n        var this_1 = this;\n        for (var variableName in variableGradients) {\n            _loop_1(variableName);\n        }\n    };\n    AdagradOptimizer.prototype.dispose = function () {\n        var _this = this;\n        this.epsilon.dispose();\n        this.c.dispose();\n        if (this.accumulatedGrads != null) {\n            Object.keys(this.accumulatedGrads)\n                .forEach(function (name) { return _this.accumulatedGrads[name].dispose(); });\n        }\n    };\n    AdagradOptimizer.prototype.getConfig = function () {\n        return {\n            learningRate: this.learningRate,\n            initialAccumulatorValue: this.initialAccumulatorValue,\n        };\n    };\n    AdagradOptimizer.fromConfig = function (cls, config) {\n        return new cls(config.learningRate, config.initialAccumulatorValue);\n    };\n    AdagradOptimizer.className = 'AdagradOptimizer';\n    return AdagradOptimizer;\n}(optimizer_1.Optimizer));\nexports.AdagradOptimizer = AdagradOptimizer;\nserialization_1.SerializationMap.register(AdagradOptimizer);\n\n},{\"../environment\":55,\"../globals\":57,\"../ops/ops\":142,\"../serialization\":171,\"./optimizer\":165,\"./optimizer_utils\":167}],162:[function(require,module,exports){\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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"../environment\");\nvar globals_1 = require(\"../globals\");\nvar ops_1 = require(\"../ops/ops\");\nvar serialization_1 = require(\"../serialization\");\nvar optimizer_1 = require(\"./optimizer\");\nvar optimizer_utils = require(\"./optimizer_utils\");\nvar AdamOptimizer = (function (_super) {\n    __extends(AdamOptimizer, _super);\n    function AdamOptimizer(learningRate, beta1, beta2, epsilon) {\n        if (epsilon === void 0) { epsilon = null; }\n        var _this = _super.call(this) || this;\n        _this.learningRate = learningRate;\n        _this.beta1 = beta1;\n        _this.beta2 = beta2;\n        _this.epsilon = epsilon;\n        _this.accumulatedFirstMoment = {};\n        _this.accumulatedSecondMoment = {};\n        _this.c = globals_1.keep(ops_1.scalar(-learningRate));\n        _this.beta1Scalar = globals_1.keep(ops_1.scalar(beta1));\n        _this.beta2Scalar = globals_1.keep(ops_1.scalar(beta2));\n        globals_1.tidy(function () {\n            _this.accBeta1 = ops_1.scalar(beta1).variable();\n            _this.accBeta2 = ops_1.scalar(beta2).variable();\n        });\n        _this.oneMinusBeta1 = globals_1.keep(ops_1.scalar(1 - beta1));\n        _this.oneMinusBeta2 = globals_1.keep(ops_1.scalar(1 - beta2));\n        _this.one = globals_1.keep(ops_1.scalar(1));\n        if (epsilon === null) {\n            epsilon = optimizer_utils.getOptimizerDefaultEpsilonValue();\n        }\n        _this.epsScalar = globals_1.keep(ops_1.scalar(epsilon));\n        return _this;\n    }\n    AdamOptimizer.prototype.applyGradients = function (variableGradients) {\n        var _this = this;\n        globals_1.tidy(function () {\n            var oneMinusAccBeta1 = _this.one.sub(_this.accBeta1);\n            var oneMinusAccBeta2 = _this.one.sub(_this.accBeta2);\n            for (var variableName in variableGradients) {\n                var value = environment_1.ENV.engine.registeredVariables[variableName];\n                if (_this.accumulatedFirstMoment[variableName] == null) {\n                    var trainable = false;\n                    _this.accumulatedFirstMoment[variableName] =\n                        ops_1.zerosLike(value).variable(trainable);\n                }\n                if (_this.accumulatedSecondMoment[variableName] == null) {\n                    var trainable = false;\n                    _this.accumulatedSecondMoment[variableName] =\n                        ops_1.zerosLike(value).variable(trainable);\n                }\n                var gradient = variableGradients[variableName];\n                var firstMoment = _this.accumulatedFirstMoment[variableName];\n                var secondMoment = _this.accumulatedSecondMoment[variableName];\n                var newFirstMoment = _this.beta1Scalar.mul(firstMoment)\n                    .add(_this.oneMinusBeta1.mul(gradient));\n                var newSecondMoment = _this.beta2Scalar.mul(secondMoment)\n                    .add(_this.oneMinusBeta2.mul(gradient.square()));\n                var biasCorrectedFirstMoment = newFirstMoment.div(oneMinusAccBeta1);\n                var biasCorrectedSecondMoment = newSecondMoment.div(oneMinusAccBeta2);\n                _this.accumulatedFirstMoment[variableName].assign(newFirstMoment);\n                _this.accumulatedSecondMoment[variableName].assign(newSecondMoment);\n                var newValue = _this.c\n                    .mul(biasCorrectedFirstMoment.div(_this.epsScalar.add(biasCorrectedSecondMoment.sqrt())))\n                    .add(value);\n                value.assign(newValue);\n            }\n            _this.accBeta1.assign(_this.accBeta1.mul(_this.beta1Scalar));\n            _this.accBeta2.assign(_this.accBeta2.mul(_this.beta2Scalar));\n        });\n    };\n    AdamOptimizer.prototype.dispose = function () {\n        var _this = this;\n        this.c.dispose();\n        this.epsScalar.dispose();\n        this.beta1Scalar.dispose();\n        this.beta2Scalar.dispose();\n        this.accBeta1.dispose();\n        this.accBeta2.dispose();\n        this.oneMinusBeta1.dispose();\n        this.oneMinusBeta2.dispose();\n        this.one.dispose();\n        if (this.accumulatedFirstMoment != null) {\n            Object.keys(this.accumulatedFirstMoment)\n                .forEach(function (name) { return _this.accumulatedFirstMoment[name].dispose(); });\n        }\n        if (this.accumulatedSecondMoment != null) {\n            Object.keys(this.accumulatedSecondMoment)\n                .forEach(function (name) { return _this.accumulatedSecondMoment[name].dispose(); });\n        }\n    };\n    AdamOptimizer.prototype.getConfig = function () {\n        return {\n            learningRate: this.learningRate,\n            beta1: this.beta1,\n            beta2: this.beta2,\n            epsilon: this.epsilon,\n        };\n    };\n    AdamOptimizer.fromConfig = function (cls, config) {\n        return new cls(config.learningRate, config.beta1, config.beta2, config.epsilon);\n    };\n    AdamOptimizer.className = 'AdamOptimizer';\n    return AdamOptimizer;\n}(optimizer_1.Optimizer));\nexports.AdamOptimizer = AdamOptimizer;\nserialization_1.SerializationMap.register(AdamOptimizer);\n\n},{\"../environment\":55,\"../globals\":57,\"../ops/ops\":142,\"../serialization\":171,\"./optimizer\":165,\"./optimizer_utils\":167}],163:[function(require,module,exports){\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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"../environment\");\nvar globals_1 = require(\"../globals\");\nvar ops_1 = require(\"../ops/ops\");\nvar serialization_1 = require(\"../serialization\");\nvar optimizer_1 = require(\"./optimizer\");\nvar optimizer_utils = require(\"./optimizer_utils\");\nvar AdamaxOptimizer = (function (_super) {\n    __extends(AdamaxOptimizer, _super);\n    function AdamaxOptimizer(learningRate, beta1, beta2, epsilon, decay) {\n        if (epsilon === void 0) { epsilon = null; }\n        if (decay === void 0) { decay = 0.0; }\n        var _this = _super.call(this) || this;\n        _this.learningRate = learningRate;\n        _this.beta1 = beta1;\n        _this.beta2 = beta2;\n        _this.epsilon = epsilon;\n        _this.decay = decay;\n        _this.accumulatedFirstMoment = {};\n        _this.accumulatedWeightedInfNorm = {};\n        _this.c = globals_1.keep(ops_1.scalar(-learningRate));\n        _this.beta1Scalar = globals_1.keep(ops_1.scalar(beta1));\n        _this.beta2Scalar = globals_1.keep(ops_1.scalar(beta2));\n        _this.decayScalar = globals_1.keep(ops_1.scalar(decay));\n        globals_1.tidy(function () {\n            _this.iteration = ops_1.scalar(0).variable();\n            _this.accBeta1 = ops_1.scalar(beta1).variable();\n        });\n        _this.oneMinusBeta1 = globals_1.keep(ops_1.scalar(1 - beta1));\n        _this.one = globals_1.keep(ops_1.scalar(1));\n        if (epsilon === null) {\n            epsilon = optimizer_utils.getOptimizerDefaultEpsilonValue();\n        }\n        _this.epsScalar = globals_1.keep(ops_1.scalar(epsilon));\n        return _this;\n    }\n    AdamaxOptimizer.prototype.applyGradients = function (variableGradients) {\n        var _this = this;\n        globals_1.tidy(function () {\n            var oneMinusAccBeta1 = _this.one.sub(_this.accBeta1);\n            var lr = _this.c.div(_this.one.add(_this.decayScalar.mul(_this.iteration)));\n            for (var variableName in variableGradients) {\n                var value = environment_1.ENV.engine.registeredVariables[variableName];\n                if (_this.accumulatedFirstMoment[variableName] == null) {\n                    var trainable = false;\n                    _this.accumulatedFirstMoment[variableName] =\n                        ops_1.zerosLike(value).variable(trainable);\n                }\n                if (_this.accumulatedWeightedInfNorm[variableName] == null) {\n                    var trainable = false;\n                    _this.accumulatedWeightedInfNorm[variableName] =\n                        ops_1.zerosLike(value).variable(trainable);\n                }\n                var gradient = variableGradients[variableName];\n                var firstMoment = _this.accumulatedFirstMoment[variableName];\n                var weightedInfNorm = _this.accumulatedWeightedInfNorm[variableName];\n                var newFirstMoment = _this.beta1Scalar.mul(firstMoment)\n                    .add(_this.oneMinusBeta1.mul(gradient));\n                var ut0 = _this.beta2Scalar.mul(weightedInfNorm);\n                var ut1 = gradient.abs();\n                var newWeightedInfNorm = ut0.maximum(ut1);\n                _this.accumulatedFirstMoment[variableName].assign(newFirstMoment);\n                _this.accumulatedWeightedInfNorm[variableName].assign(newWeightedInfNorm);\n                var newValue = lr.div(oneMinusAccBeta1)\n                    .mul(newFirstMoment.div(_this.epsScalar.add(newWeightedInfNorm)))\n                    .add(value);\n                value.assign(newValue);\n            }\n            _this.iteration.assign(_this.iteration.add(_this.one));\n            _this.accBeta1.assign(_this.accBeta1.mul(_this.beta1Scalar));\n        });\n    };\n    AdamaxOptimizer.prototype.dispose = function () {\n        var _this = this;\n        this.c.dispose();\n        this.epsScalar.dispose();\n        this.accBeta1.dispose();\n        this.beta1Scalar.dispose();\n        this.beta2Scalar.dispose();\n        this.oneMinusBeta1.dispose();\n        this.decayScalar.dispose();\n        this.iteration.dispose();\n        this.one.dispose();\n        if (this.accumulatedFirstMoment != null) {\n            Object.keys(this.accumulatedFirstMoment)\n                .forEach(function (name) { return _this.accumulatedFirstMoment[name].dispose(); });\n        }\n        if (this.accumulatedWeightedInfNorm != null) {\n            Object.keys(this.accumulatedWeightedInfNorm)\n                .forEach(function (name) { return _this.accumulatedWeightedInfNorm[name].dispose(); });\n        }\n    };\n    AdamaxOptimizer.prototype.getConfig = function () {\n        return {\n            learningRate: this.learningRate,\n            beta1: this.beta1,\n            beta2: this.beta2,\n            epsilon: this.epsilon,\n            decay: this.decay\n        };\n    };\n    AdamaxOptimizer.fromConfig = function (cls, config) {\n        return new cls(config.learningRate, config.beta1, config.beta2, config.epsilon, config.decay);\n    };\n    AdamaxOptimizer.className = 'AdamaxOptimizer';\n    return AdamaxOptimizer;\n}(optimizer_1.Optimizer));\nexports.AdamaxOptimizer = AdamaxOptimizer;\nserialization_1.SerializationMap.register(AdamaxOptimizer);\n\n},{\"../environment\":55,\"../globals\":57,\"../ops/ops\":142,\"../serialization\":171,\"./optimizer\":165,\"./optimizer_utils\":167}],164:[function(require,module,exports){\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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"../environment\");\nvar globals_1 = require(\"../globals\");\nvar ops_1 = require(\"../ops/ops\");\nvar serialization_1 = require(\"../serialization\");\nvar sgd_optimizer_1 = require(\"./sgd_optimizer\");\nvar MomentumOptimizer = (function (_super) {\n    __extends(MomentumOptimizer, _super);\n    function MomentumOptimizer(learningRate, momentum, useNesterov) {\n        if (useNesterov === void 0) { useNesterov = false; }\n        var _this = _super.call(this, learningRate) || this;\n        _this.learningRate = learningRate;\n        _this.momentum = momentum;\n        _this.useNesterov = useNesterov;\n        _this.m = ops_1.scalar(_this.momentum);\n        _this.accumulations = {};\n        return _this;\n    }\n    MomentumOptimizer.prototype.applyGradients = function (variableGradients) {\n        var _this = this;\n        var _loop_1 = function (variableName) {\n            var value = environment_1.ENV.engine.registeredVariables[variableName];\n            if (this_1.accumulations[variableName] == null) {\n                var trainable_1 = false;\n                globals_1.tidy(function () {\n                    _this.accumulations[variableName] =\n                        ops_1.zerosLike(value).variable(trainable_1);\n                });\n            }\n            var accumulation = this_1.accumulations[variableName];\n            var gradient = variableGradients[variableName];\n            globals_1.tidy(function () {\n                var newValue;\n                var newAccumulation = _this.m.mul(accumulation).add(gradient);\n                if (_this.useNesterov) {\n                    newValue =\n                        _this.c.mul(gradient.add(newAccumulation.mul(_this.m))).add(value);\n                }\n                else {\n                    newValue = _this.c.mul(newAccumulation).add(value);\n                }\n                _this.accumulations[variableName].assign(newAccumulation);\n                value.assign(newValue);\n            });\n        };\n        var this_1 = this;\n        for (var variableName in variableGradients) {\n            _loop_1(variableName);\n        }\n    };\n    MomentumOptimizer.prototype.dispose = function () {\n        _super.prototype.dispose.call(this);\n        this.m.dispose();\n        if (this.accumulations != null) {\n            for (var variableName in this.accumulations) {\n                this.accumulations[variableName].dispose();\n            }\n        }\n    };\n    MomentumOptimizer.prototype.setMomentum = function (momentum) {\n        this.momentum = momentum;\n    };\n    MomentumOptimizer.prototype.getConfig = function () {\n        return {\n            learningRate: this.learningRate,\n            momentum: this.momentum,\n            useNesterov: this.useNesterov\n        };\n    };\n    MomentumOptimizer.fromConfig = function (cls, config) {\n        return new cls(config.learningRate, config.momentum, config.useNesterov);\n    };\n    MomentumOptimizer.className = 'MomentumOptimizer';\n    return MomentumOptimizer;\n}(sgd_optimizer_1.SGDOptimizer));\nexports.MomentumOptimizer = MomentumOptimizer;\nserialization_1.SerializationMap.register(MomentumOptimizer);\n\n},{\"../environment\":55,\"../globals\":57,\"../ops/ops\":142,\"../serialization\":171,\"./sgd_optimizer\":169}],165:[function(require,module,exports){\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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar globals_1 = require(\"../globals\");\nvar serialization_1 = require(\"../serialization\");\nvar Optimizer = (function (_super) {\n    __extends(Optimizer, _super);\n    function Optimizer() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Optimizer.prototype.minimize = function (f, returnCost, varList) {\n        if (returnCost === void 0) { returnCost = false; }\n        var _a = this.computeGradients(f, varList), value = _a.value, grads = _a.grads;\n        this.applyGradients(grads);\n        var varNames = Object.keys(grads);\n        varNames.forEach(function (varName) { return grads[varName].dispose(); });\n        if (returnCost) {\n            return value;\n        }\n        else {\n            value.dispose();\n            return null;\n        }\n    };\n    Optimizer.prototype.computeGradients = function (f, varList) {\n        return globals_1.variableGrads(f, varList);\n    };\n    return Optimizer;\n}(serialization_1.Serializable));\nexports.Optimizer = Optimizer;\n\n},{\"../globals\":57,\"../serialization\":171}],166:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar adadelta_optimizer_1 = require(\"./adadelta_optimizer\");\nvar adagrad_optimizer_1 = require(\"./adagrad_optimizer\");\nvar adam_optimizer_1 = require(\"./adam_optimizer\");\nvar adamax_optimizer_1 = require(\"./adamax_optimizer\");\nvar momentum_optimizer_1 = require(\"./momentum_optimizer\");\nvar rmsprop_optimizer_1 = require(\"./rmsprop_optimizer\");\nvar sgd_optimizer_1 = require(\"./sgd_optimizer\");\nvar OptimizerConstructors = (function () {\n    function OptimizerConstructors() {\n    }\n    OptimizerConstructors.sgd = function (learningRate) {\n        return new sgd_optimizer_1.SGDOptimizer(learningRate);\n    };\n    OptimizerConstructors.momentum = function (learningRate, momentum, useNesterov) {\n        if (useNesterov === void 0) { useNesterov = false; }\n        return new momentum_optimizer_1.MomentumOptimizer(learningRate, momentum, useNesterov);\n    };\n    OptimizerConstructors.rmsprop = function (learningRate, decay, momentum, epsilon, centered) {\n        if (decay === void 0) { decay = .9; }\n        if (momentum === void 0) { momentum = 0.0; }\n        if (epsilon === void 0) { epsilon = null; }\n        if (centered === void 0) { centered = false; }\n        return new rmsprop_optimizer_1.RMSPropOptimizer(learningRate, decay, momentum, epsilon, centered);\n    };\n    OptimizerConstructors.adam = function (learningRate, beta1, beta2, epsilon) {\n        if (learningRate === void 0) { learningRate = 0.001; }\n        if (beta1 === void 0) { beta1 = 0.9; }\n        if (beta2 === void 0) { beta2 = 0.999; }\n        if (epsilon === void 0) { epsilon = null; }\n        return new adam_optimizer_1.AdamOptimizer(learningRate, beta1, beta2, epsilon);\n    };\n    OptimizerConstructors.adadelta = function (learningRate, rho, epsilon) {\n        if (learningRate === void 0) { learningRate = .001; }\n        if (rho === void 0) { rho = .95; }\n        if (epsilon === void 0) { epsilon = null; }\n        return new adadelta_optimizer_1.AdadeltaOptimizer(learningRate, rho, epsilon);\n    };\n    OptimizerConstructors.adamax = function (learningRate, beta1, beta2, epsilon, decay) {\n        if (learningRate === void 0) { learningRate = 0.002; }\n        if (beta1 === void 0) { beta1 = 0.9; }\n        if (beta2 === void 0) { beta2 = 0.999; }\n        if (epsilon === void 0) { epsilon = null; }\n        if (decay === void 0) { decay = 0.0; }\n        return new adamax_optimizer_1.AdamaxOptimizer(learningRate, beta1, beta2, epsilon, decay);\n    };\n    OptimizerConstructors.adagrad = function (learningRate, initialAccumulatorValue) {\n        if (initialAccumulatorValue === void 0) { initialAccumulatorValue = 0.1; }\n        return new adagrad_optimizer_1.AdagradOptimizer(learningRate, initialAccumulatorValue);\n    };\n    return OptimizerConstructors;\n}());\nexports.OptimizerConstructors = OptimizerConstructors;\n\n},{\"./adadelta_optimizer\":160,\"./adagrad_optimizer\":161,\"./adam_optimizer\":162,\"./adamax_optimizer\":163,\"./momentum_optimizer\":164,\"./rmsprop_optimizer\":168,\"./sgd_optimizer\":169}],167:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"../environment\");\nvar DEFAULT_FLOAT32_EPSILON = 1e-8;\nvar DEFAULT_FLOAT16_EPSILON = 1e-4;\nfunction getOptimizerDefaultEpsilonValue() {\n    if (environment_1.ENV.get('WEBGL_RENDER_FLOAT32_ENABLED')) {\n        return DEFAULT_FLOAT32_EPSILON;\n    }\n    return DEFAULT_FLOAT16_EPSILON;\n}\nexports.getOptimizerDefaultEpsilonValue = getOptimizerDefaultEpsilonValue;\n\n},{\"../environment\":55}],168:[function(require,module,exports){\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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"../environment\");\nvar globals_1 = require(\"../globals\");\nvar ops_1 = require(\"../ops/ops\");\nvar serialization_1 = require(\"../serialization\");\nvar optimizer_1 = require(\"./optimizer\");\nvar optimizer_utils = require(\"./optimizer_utils\");\nvar RMSPropOptimizer = (function (_super) {\n    __extends(RMSPropOptimizer, _super);\n    function RMSPropOptimizer(learningRate, decay, momentum, epsilon, centered) {\n        if (decay === void 0) { decay = 0.9; }\n        if (momentum === void 0) { momentum = 0.0; }\n        if (epsilon === void 0) { epsilon = null; }\n        if (centered === void 0) { centered = false; }\n        var _this = _super.call(this) || this;\n        _this.learningRate = learningRate;\n        _this.decay = decay;\n        _this.momentum = momentum;\n        _this.epsilon = epsilon;\n        _this.accumulatedMeanSquares = {};\n        _this.accumulatedMeanGrads = {};\n        _this.accumulatedMoments = {};\n        _this.c = globals_1.keep(ops_1.scalar(learningRate));\n        _this.decayScalar = globals_1.keep(ops_1.scalar(decay));\n        _this.momentumScalar = globals_1.keep(ops_1.scalar(momentum));\n        _this.oneMinusDecay = globals_1.keep(ops_1.scalar(1 - decay));\n        _this.centered = centered;\n        if (epsilon === null) {\n            epsilon = optimizer_utils.getOptimizerDefaultEpsilonValue();\n        }\n        _this.epsilonScalar = globals_1.keep(ops_1.scalar(epsilon));\n        return _this;\n    }\n    RMSPropOptimizer.prototype.applyGradients = function (variableGradients) {\n        var _this = this;\n        var _loop_1 = function (variableName) {\n            var value = environment_1.ENV.engine.registeredVariables[variableName];\n            if (this_1.accumulatedMeanSquares[variableName] == null) {\n                var trainable_1 = false;\n                globals_1.tidy(function () {\n                    _this.accumulatedMeanSquares[variableName] =\n                        ops_1.zerosLike(value).variable(trainable_1);\n                });\n            }\n            if (this_1.accumulatedMeanGrads[variableName] == null && this_1.centered) {\n                var trainable_2 = false;\n                globals_1.tidy(function () {\n                    _this.accumulatedMeanGrads[variableName] =\n                        ops_1.zerosLike(value).variable(trainable_2);\n                });\n            }\n            if (this_1.accumulatedMoments[variableName] == null) {\n                var trainable_3 = false;\n                globals_1.tidy(function () {\n                    _this.accumulatedMoments[variableName] =\n                        ops_1.zerosLike(value).variable(trainable_3);\n                });\n            }\n            var accumulatedMeanSquare = this_1.accumulatedMeanSquares[variableName];\n            var accumulatedMeanGrad = this_1.accumulatedMeanGrads[variableName];\n            var accumulatedMoments = this_1.accumulatedMoments[variableName];\n            var gradient = variableGradients[variableName];\n            globals_1.tidy(function () {\n                var newAccumulatedMeanSquare = _this.decayScalar.mul(accumulatedMeanSquare)\n                    .add(_this.oneMinusDecay.mul(gradient.square()));\n                if (_this.centered) {\n                    var newAccumulatedMeanGrad = _this.decayScalar.mul(accumulatedMeanGrad)\n                        .add(_this.oneMinusDecay.mul(gradient));\n                    var newAccumulatedMoments = _this.momentumScalar.mul(accumulatedMoments)\n                        .add(_this.c.mul(gradient).div(newAccumulatedMeanSquare\n                        .sub(newAccumulatedMeanGrad.square().add(_this.epsilonScalar))\n                        .sqrt()));\n                    _this.accumulatedMeanSquares[variableName].assign(newAccumulatedMeanSquare);\n                    _this.accumulatedMeanGrads[variableName].assign(newAccumulatedMeanGrad);\n                    _this.accumulatedMoments[variableName].assign(newAccumulatedMoments);\n                    var newValue = value.sub(newAccumulatedMoments);\n                    value.assign(newValue);\n                }\n                else {\n                    var newAccumulatedMeanSquare_1 = _this.decayScalar.mul(accumulatedMeanSquare)\n                        .add(_this.oneMinusDecay.mul(gradient.square()));\n                    var newAccumulatedMoments = _this.momentumScalar.mul(accumulatedMoments)\n                        .add(_this.c.mul(gradient).div(newAccumulatedMeanSquare_1.add(_this.epsilonScalar).sqrt()));\n                    _this.accumulatedMeanSquares[variableName].assign(newAccumulatedMeanSquare_1);\n                    _this.accumulatedMoments[variableName].assign(newAccumulatedMoments);\n                    var newValue = value.sub(newAccumulatedMoments);\n                    value.assign(newValue);\n                }\n            });\n        };\n        var this_1 = this;\n        for (var variableName in variableGradients) {\n            _loop_1(variableName);\n        }\n    };\n    RMSPropOptimizer.prototype.dispose = function () {\n        var _this = this;\n        this.c.dispose();\n        this.epsilonScalar.dispose();\n        this.decayScalar.dispose();\n        this.momentumScalar.dispose();\n        this.oneMinusDecay.dispose();\n        if (this.accumulatedMeanSquares != null) {\n            Object.keys(this.accumulatedMeanSquares)\n                .forEach(function (name) { return _this.accumulatedMeanSquares[name].dispose(); });\n        }\n        if (this.accumulatedMeanGrads != null && this.centered) {\n            Object.keys(this.accumulatedMeanGrads)\n                .forEach(function (name) { return _this.accumulatedMeanGrads[name].dispose(); });\n        }\n        if (this.accumulatedMoments != null) {\n            Object.keys(this.accumulatedMoments)\n                .forEach(function (name) { return _this.accumulatedMoments[name].dispose(); });\n        }\n    };\n    RMSPropOptimizer.prototype.getConfig = function () {\n        return {\n            learningRate: this.learningRate,\n            decay: this.decay,\n            momentum: this.momentum,\n            epsilon: this.epsilon,\n            centered: this.centered\n        };\n    };\n    RMSPropOptimizer.fromConfig = function (cls, config) {\n        return new cls(config.learningRate, config.decay, config.momentum, config.epsilon, config.centered);\n    };\n    RMSPropOptimizer.className = 'RMSPropOptimizer';\n    return RMSPropOptimizer;\n}(optimizer_1.Optimizer));\nexports.RMSPropOptimizer = RMSPropOptimizer;\nserialization_1.SerializationMap.register(RMSPropOptimizer);\n\n},{\"../environment\":55,\"../globals\":57,\"../ops/ops\":142,\"../serialization\":171,\"./optimizer\":165,\"./optimizer_utils\":167}],169:[function(require,module,exports){\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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"../environment\");\nvar globals_1 = require(\"../globals\");\nvar ops_1 = require(\"../ops/ops\");\nvar serialization_1 = require(\"../serialization\");\nvar optimizer_1 = require(\"./optimizer\");\nvar SGDOptimizer = (function (_super) {\n    __extends(SGDOptimizer, _super);\n    function SGDOptimizer(learningRate) {\n        var _this = _super.call(this) || this;\n        _this.learningRate = learningRate;\n        _this.setLearningRate(learningRate);\n        return _this;\n    }\n    SGDOptimizer.prototype.applyGradients = function (variableGradients) {\n        var _this = this;\n        var varNames = Object.keys(variableGradients);\n        varNames.forEach(function (varName) {\n            var gradient = variableGradients[varName];\n            var value = environment_1.ENV.engine.registeredVariables[varName];\n            globals_1.tidy(function () {\n                var newValue = _this.c.mul(gradient).add(value);\n                value.assign(newValue);\n            });\n        });\n    };\n    SGDOptimizer.prototype.setLearningRate = function (learningRate) {\n        this.learningRate = learningRate;\n        if (this.c != null) {\n            this.c.dispose();\n        }\n        this.c = globals_1.keep(ops_1.scalar(-learningRate));\n    };\n    SGDOptimizer.prototype.dispose = function () {\n        this.c.dispose();\n    };\n    SGDOptimizer.prototype.getConfig = function () {\n        return { learningRate: this.learningRate };\n    };\n    SGDOptimizer.fromConfig = function (cls, config) {\n        return new cls(config.learningRate);\n    };\n    SGDOptimizer.className = 'SGDOptimizer';\n    return SGDOptimizer;\n}(optimizer_1.Optimizer));\nexports.SGDOptimizer = SGDOptimizer;\nserialization_1.SerializationMap.register(SGDOptimizer);\n\n},{\"../environment\":55,\"../globals\":57,\"../ops/ops\":142,\"../serialization\":171,\"./optimizer\":165}],170:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util = require(\"./util\");\nvar Profiler = (function () {\n    function Profiler(backendTimer, logger) {\n        this.backendTimer = backendTimer;\n        this.logger = logger;\n        if (logger == null) {\n            this.logger = new Logger();\n        }\n    }\n    Profiler.prototype.profileKernel = function (name, f) {\n        var _this = this;\n        var result;\n        var holdResultWrapperFn = function () {\n            result = f();\n        };\n        var timer = this.backendTimer.time(holdResultWrapperFn);\n        var results = Array.isArray(result) ? result : [result];\n        results.forEach(function (r) {\n            var vals = r.dataSync();\n            util.checkComputationForNaN(vals, r.dtype, name);\n            timer.then(function (timing) {\n                _this.logger.logKernelProfile(name, r, vals, timing.kernelMs);\n            });\n        });\n        return result;\n    };\n    return Profiler;\n}());\nexports.Profiler = Profiler;\nvar Logger = (function () {\n    function Logger() {\n    }\n    Logger.prototype.logKernelProfile = function (name, result, vals, timeMs) {\n        var time = util.rightPad(timeMs + \"ms\", 9);\n        var paddedName = util.rightPad(name, 25);\n        var rank = result.rank;\n        var size = result.size;\n        var shape = util.rightPad(result.shape.toString(), 14);\n        console.log(\"%c\" + paddedName + \"\\t%c\" + time + \"\\t%c\" + rank + \"D \" + shape + \"\\t%c\" + size, 'font-weight:bold', 'color:red', 'color:blue', 'color: orange');\n    };\n    return Logger;\n}());\nexports.Logger = Logger;\n\n},{\"./util\":180}],171:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Serializable = (function () {\n    function Serializable() {\n    }\n    Serializable.prototype.getClassName = function () {\n        return this.constructor\n            .className;\n    };\n    Serializable.fromConfig = function (cls, config) {\n        return new cls(config);\n    };\n    return Serializable;\n}());\nexports.Serializable = Serializable;\nvar SerializationMap = (function () {\n    function SerializationMap() {\n        this.classNameMap = {};\n    }\n    SerializationMap.getMap = function () {\n        if (SerializationMap.instance == null) {\n            SerializationMap.instance = new SerializationMap();\n        }\n        return SerializationMap.instance;\n    };\n    SerializationMap.register = function (cls) {\n        SerializationMap.getMap().classNameMap[cls.className] =\n            [cls, cls.fromConfig];\n    };\n    return SerializationMap;\n}());\nexports.SerializationMap = SerializationMap;\n\n},{}],172:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util = require(\"./util\");\nfunction getFilteredNodesXToY(tape, xs, y) {\n    var tensorsFromX = {};\n    var nodesFromX = {};\n    for (var i = 0; i < xs.length; i++) {\n        tensorsFromX[xs[i].id] = true;\n    }\n    for (var i = 0; i < tape.length; i++) {\n        var node = tape[i];\n        var nodeInputs = node.inputs;\n        for (var inputName in nodeInputs) {\n            var input = nodeInputs[inputName];\n            var anyInputFromX = false;\n            for (var j = 0; j < xs.length; j++) {\n                if (tensorsFromX[input.id]) {\n                    tensorsFromX[node.output.id] = true;\n                    anyInputFromX = true;\n                    nodesFromX[node.id] = true;\n                    break;\n                }\n            }\n            if (anyInputFromX) {\n                break;\n            }\n        }\n    }\n    var tensorsLeadToY = {};\n    tensorsLeadToY[y.id] = true;\n    var nodesToY = {};\n    for (var i = tape.length - 1; i >= 0; i--) {\n        var node = tape[i];\n        var nodeInputs = node.inputs;\n        var outputs = [];\n        outputs.push(node.output);\n        for (var j = 0; j < outputs.length; j++) {\n            if (tensorsLeadToY[outputs[j].id]) {\n                for (var inputName in nodeInputs) {\n                    tensorsLeadToY[nodeInputs[inputName].id] = true;\n                    nodesToY[node.id] = true;\n                }\n                break;\n            }\n        }\n    }\n    var filteredTape = [];\n    for (var i = 0; i < tape.length; i++) {\n        var node = tape[i];\n        if (nodesFromX[node.id] && nodesToY[node.id]) {\n            var prunedInputs = {};\n            for (var inputName in node.inputs) {\n                var nodeInput = node.inputs[inputName];\n                if (tensorsFromX[nodeInput.id]) {\n                    prunedInputs[inputName] = nodeInput;\n                }\n            }\n            var prunedNode = Object.assign({}, node);\n            prunedNode.inputs = prunedInputs;\n            prunedNode.output = node.output;\n            filteredTape.push(prunedNode);\n        }\n    }\n    return filteredTape;\n}\nexports.getFilteredNodesXToY = getFilteredNodesXToY;\nfunction backpropagateGradients(tensorAccumulatedGradientMap, filteredTape) {\n    for (var i = filteredTape.length - 1; i >= 0; i--) {\n        var node = filteredTape[i];\n        var dy = tensorAccumulatedGradientMap[node.output.id];\n        if (node.gradient == null) {\n            throw new Error(\"Cannot compute gradient: gradient function not found \" +\n                (\"for \" + node.name + \".\"));\n        }\n        var inputGradients = node.gradient(dy);\n        for (var inputName in node.inputs) {\n            if (!(inputName in inputGradients)) {\n                throw new Error(\"Cannot backprop through input \" + inputName + \". \" +\n                    (\"Available gradients found: \" + Object.keys(inputGradients) + \".\"));\n            }\n            var dx = inputGradients[inputName]();\n            var x = node.inputs[inputName];\n            if (!util.arraysEqual(dx.shape, x.shape)) {\n                throw new Error(\"Error in gradient for op \" + node.name + \". The gradient of input \" +\n                    (\"'\" + inputName + \"' has shape '\" + dx.shape + \"', which does not match \") +\n                    (\"the shape of the input '\" + x.shape + \"'\"));\n            }\n            if (tensorAccumulatedGradientMap[x.id] == null) {\n                tensorAccumulatedGradientMap[x.id] = dx;\n            }\n            else {\n                var curGradient = tensorAccumulatedGradientMap[x.id];\n                tensorAccumulatedGradientMap[x.id] = curGradient.add(dx);\n                curGradient.dispose();\n            }\n        }\n    }\n}\nexports.backpropagateGradients = backpropagateGradients;\n\n},{\"./util\":180}],173:[function(require,module,exports){\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 = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, 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 tensor_format_1 = require(\"./tensor_format\");\nvar util = require(\"./util\");\nvar util_1 = require(\"./util\");\nvar TensorBuffer = (function () {\n    function TensorBuffer(shape, dtype, values) {\n        this.dtype = dtype;\n        if (values != null) {\n            var n = values.length;\n            var size = util.sizeFromShape(shape);\n            util.assert(n === size, \"Length of values '\" + n + \"' does not match the size \" +\n                (\"inferred by the shape '\" + size + \"'\"));\n        }\n        this.shape = shape.slice();\n        this.values =\n            values || util.getTypedArrayFromDType(dtype, util.sizeFromShape(shape));\n        this.strides = util_1.computeStrides(shape);\n        this.size = util.sizeFromShape(shape);\n    }\n    TensorBuffer.prototype.set = function (value) {\n        var locs = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            locs[_i - 1] = arguments[_i];\n        }\n        if (locs.length === 0) {\n            locs = [0];\n        }\n        util.assert(locs.length === this.rank, \"The number of provided coordinates (\" + locs.length + \") must \" +\n            (\"match the rank (\" + this.rank + \")\"));\n        var index = this.locToIndex(locs);\n        this.values[index] = value;\n    };\n    TensorBuffer.prototype.get = function () {\n        var locs = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            locs[_i] = arguments[_i];\n        }\n        if (locs.length === 0) {\n            locs = [0];\n        }\n        var index = locs[locs.length - 1];\n        for (var i = 0; i < locs.length - 1; ++i) {\n            index += this.strides[i] * locs[i];\n        }\n        return this.values[index];\n    };\n    TensorBuffer.prototype.locToIndex = function (locs) {\n        if (this.rank === 0) {\n            return 0;\n        }\n        else if (this.rank === 1) {\n            return locs[0];\n        }\n        var index = locs[locs.length - 1];\n        for (var i = 0; i < locs.length - 1; ++i) {\n            index += this.strides[i] * locs[i];\n        }\n        return index;\n    };\n    TensorBuffer.prototype.indexToLoc = function (index) {\n        if (this.rank === 0) {\n            return [];\n        }\n        else if (this.rank === 1) {\n            return [index];\n        }\n        var locs = new Array(this.shape.length);\n        for (var i = 0; i < locs.length - 1; ++i) {\n            locs[i] = Math.floor(index / this.strides[i]);\n            index -= locs[i] * this.strides[i];\n        }\n        locs[locs.length - 1] = index;\n        return locs;\n    };\n    Object.defineProperty(TensorBuffer.prototype, \"rank\", {\n        get: function () {\n            return this.shape.length;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    TensorBuffer.prototype.toTensor = function () {\n        return Tensor.make(this.shape, { values: this.values }, this.dtype);\n    };\n    return TensorBuffer;\n}());\nexports.TensorBuffer = TensorBuffer;\nvar trackerFn = null;\nvar opHandler = null;\nfunction setTensorTracker(fn) {\n    trackerFn = fn;\n}\nexports.setTensorTracker = setTensorTracker;\nfunction setOpHandler(handler) {\n    opHandler = handler;\n}\nexports.setOpHandler = setOpHandler;\nvar Tensor = (function () {\n    function Tensor(shape, dtype, values, dataId) {\n        this.isDisposedInternal = false;\n        this.size = util.sizeFromShape(shape);\n        if (values != null) {\n            util.assert(this.size === values.length, \"Constructing tensor of shape (\" + this.size + \") should match the \" +\n                (\"length of values (\" + values.length + \")\"));\n        }\n        this.shape = shape.slice();\n        this.dtype = dtype || 'float32';\n        this.strides = util_1.computeStrides(shape);\n        this.dataId = dataId != null ? dataId : {};\n        this.id = Tensor.nextId++;\n        this.rankType = (this.rank < 5 ? this.rank.toString() : 'higher');\n        trackerFn().registerTensor(this);\n        if (values != null) {\n            trackerFn().write(this.dataId, values);\n        }\n    }\n    Tensor.make = function (shape, data, dtype) {\n        return new Tensor(shape, dtype, data.values, data.dataId);\n    };\n    Tensor.prototype.flatten = function () {\n        this.throwIfDisposed();\n        return this.as1D();\n    };\n    Tensor.prototype.asScalar = function () {\n        this.throwIfDisposed();\n        util.assert(this.size === 1, 'The array must have only 1 element.');\n        return this.reshape([]);\n    };\n    Tensor.prototype.as1D = function () {\n        this.throwIfDisposed();\n        return this.reshape([this.size]);\n    };\n    Tensor.prototype.as2D = function (rows, columns) {\n        this.throwIfDisposed();\n        return this.reshape([rows, columns]);\n    };\n    Tensor.prototype.as3D = function (rows, columns, depth) {\n        this.throwIfDisposed();\n        return this.reshape([rows, columns, depth]);\n    };\n    Tensor.prototype.as4D = function (rows, columns, depth, depth2) {\n        this.throwIfDisposed();\n        return this.reshape([rows, columns, depth, depth2]);\n    };\n    Tensor.prototype.asType = function (dtype) {\n        this.throwIfDisposed();\n        return opHandler.cast(this, dtype);\n    };\n    Object.defineProperty(Tensor.prototype, \"rank\", {\n        get: function () {\n            return this.shape.length;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Tensor.prototype.get = function () {\n        var locs = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            locs[_i] = arguments[_i];\n        }\n        util.assert(locs.length === this.rank, 'Number of coordinates in get() must match the rank of the tensor');\n        this.throwIfDisposed();\n        if (locs.length === 0) {\n            locs = [0];\n        }\n        var index = locs[locs.length - 1];\n        for (var i = 0; i < locs.length - 1; ++i) {\n            index += this.strides[i] * locs[i];\n        }\n        return this.dataSync()[index];\n    };\n    Tensor.prototype.buffer = function () {\n        return opHandler.buffer(this.shape, this.dtype, this.dataSync());\n    };\n    Tensor.prototype.data = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                this.throwIfDisposed();\n                return [2, trackerFn().read(this.dataId)];\n            });\n        });\n    };\n    Tensor.prototype.dataSync = function () {\n        this.throwIfDisposed();\n        return trackerFn().readSync(this.dataId);\n    };\n    Tensor.prototype.dispose = function () {\n        if (this.isDisposed) {\n            return;\n        }\n        trackerFn().disposeTensor(this);\n        this.isDisposedInternal = true;\n    };\n    Object.defineProperty(Tensor.prototype, \"isDisposed\", {\n        get: function () {\n            return this.isDisposedInternal;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Tensor.prototype.throwIfDisposed = function () {\n        if (this.isDisposed) {\n            throw new Error(\"Tensor is disposed.\");\n        }\n    };\n    Tensor.prototype.toFloat = function () {\n        return this.asType('float32');\n    };\n    Tensor.prototype.toInt = function () {\n        return this.asType('int32');\n    };\n    Tensor.prototype.toBool = function () {\n        return this.asType('bool');\n    };\n    Tensor.prototype.print = function (verbose) {\n        if (verbose === void 0) { verbose = false; }\n        return opHandler.print(this, verbose);\n    };\n    Tensor.prototype.reshape = function (newShape) {\n        this.throwIfDisposed();\n        return opHandler.reshape(this, newShape);\n    };\n    Tensor.prototype.reshapeAs = function (x) {\n        this.throwIfDisposed();\n        return this.reshape(x.shape);\n    };\n    Tensor.prototype.expandDims = function (axis) {\n        if (axis === void 0) { axis = 0; }\n        return opHandler.expandDims(this, axis);\n    };\n    Tensor.prototype.cumsum = function (axis, exclusive, reverse) {\n        if (axis === void 0) { axis = 0; }\n        if (exclusive === void 0) { exclusive = false; }\n        if (reverse === void 0) { reverse = false; }\n        return opHandler.cumsum(this, axis, exclusive, reverse);\n    };\n    Tensor.prototype.squeeze = function (axis) {\n        this.throwIfDisposed();\n        return opHandler.squeeze(this, axis);\n    };\n    Tensor.prototype.clone = function () {\n        this.throwIfDisposed();\n        return opHandler.clone(this);\n    };\n    Tensor.prototype.toString = function (verbose) {\n        if (verbose === void 0) { verbose = false; }\n        var vals = this.dataSync();\n        return tensor_format_1.tensorToString(vals, this.shape, this.dtype, verbose);\n    };\n    Tensor.prototype.tile = function (reps) {\n        this.throwIfDisposed();\n        return opHandler.tile(this, reps);\n    };\n    Tensor.prototype.gather = function (indices, axis) {\n        if (axis === void 0) { axis = 0; }\n        this.throwIfDisposed();\n        return opHandler.gather(this, indices, axis);\n    };\n    Tensor.prototype.matMul = function (b, transposeA, transposeB) {\n        if (transposeA === void 0) { transposeA = false; }\n        if (transposeB === void 0) { transposeB = false; }\n        this.throwIfDisposed();\n        return opHandler.matMul(this, b, transposeA, transposeB);\n    };\n    Tensor.prototype.dot = function (b) {\n        this.throwIfDisposed();\n        return opHandler.dot(this, b);\n    };\n    Tensor.prototype.norm = function (ord, axis, keepDims) {\n        if (ord === void 0) { ord = 'euclidean'; }\n        if (axis === void 0) { axis = null; }\n        if (keepDims === void 0) { keepDims = false; }\n        this.throwIfDisposed();\n        return opHandler.norm(this, ord, axis, keepDims);\n    };\n    Tensor.prototype.slice = function (begin, size) {\n        this.throwIfDisposed();\n        return opHandler.slice(this, begin, size);\n    };\n    Tensor.prototype.reverse = function (axis) {\n        this.throwIfDisposed();\n        return opHandler.reverse(this, axis);\n    };\n    Tensor.prototype.concat = function (x, axis) {\n        if (axis === void 0) { axis = 0; }\n        this.throwIfDisposed();\n        return opHandler.concat([this, x], axis);\n    };\n    Tensor.prototype.stack = function (x, axis) {\n        if (axis === void 0) { axis = 0; }\n        return opHandler.stack([this, x], axis);\n    };\n    Tensor.prototype.unstack = function (x, axis) {\n        if (axis === void 0) { axis = 0; }\n        return opHandler.unstack(this, axis);\n    };\n    Tensor.prototype.pad = function (paddings, constantValue) {\n        if (constantValue === void 0) { constantValue = 0; }\n        return opHandler.pad(this, paddings, constantValue);\n    };\n    Tensor.prototype.batchNormalization = function (mean, variance, varianceEpsilon, scale, offset) {\n        if (varianceEpsilon === void 0) { varianceEpsilon = .001; }\n        this.throwIfDisposed();\n        return opHandler.batchNormalization(this, mean, variance, varianceEpsilon, scale, offset);\n    };\n    Tensor.prototype.all = function (axis, keepDims) {\n        if (axis === void 0) { axis = null; }\n        if (keepDims === void 0) { keepDims = false; }\n        this.throwIfDisposed();\n        return opHandler.all(this, axis, keepDims);\n    };\n    Tensor.prototype.any = function (axis, keepDims) {\n        if (axis === void 0) { axis = null; }\n        if (keepDims === void 0) { keepDims = false; }\n        this.throwIfDisposed();\n        return opHandler.any(this, axis, keepDims);\n    };\n    Tensor.prototype.logSumExp = function (axis, keepDims) {\n        if (axis === void 0) { axis = null; }\n        if (keepDims === void 0) { keepDims = false; }\n        this.throwIfDisposed();\n        return opHandler.logSumExp(this, axis, keepDims);\n    };\n    Tensor.prototype.sum = function (axis, keepDims) {\n        if (axis === void 0) { axis = null; }\n        if (keepDims === void 0) { keepDims = false; }\n        this.throwIfDisposed();\n        return opHandler.sum(this, axis, keepDims);\n    };\n    Tensor.prototype.mean = function (axis, keepDims) {\n        if (axis === void 0) { axis = null; }\n        if (keepDims === void 0) { keepDims = false; }\n        this.throwIfDisposed();\n        return opHandler.mean(this, axis, keepDims);\n    };\n    Tensor.prototype.min = function (axis, keepDims) {\n        if (axis === void 0) { axis = null; }\n        if (keepDims === void 0) { keepDims = false; }\n        this.throwIfDisposed();\n        return opHandler.min(this, axis, keepDims);\n    };\n    Tensor.prototype.max = function (axis, keepDims) {\n        if (axis === void 0) { axis = null; }\n        if (keepDims === void 0) { keepDims = false; }\n        this.throwIfDisposed();\n        return opHandler.max(this, axis, keepDims);\n    };\n    Tensor.prototype.argMin = function (axis) {\n        if (axis === void 0) { axis = null; }\n        this.throwIfDisposed();\n        return opHandler.argMin(this, axis);\n    };\n    Tensor.prototype.argMax = function (axis) {\n        if (axis === void 0) { axis = null; }\n        this.throwIfDisposed();\n        return opHandler.argMax(this, axis);\n    };\n    Tensor.prototype.cast = function (dtype) {\n        this.throwIfDisposed();\n        return opHandler.cast(this, dtype);\n    };\n    Tensor.prototype.add = function (x) {\n        this.throwIfDisposed();\n        return opHandler.add(this, x);\n    };\n    Tensor.prototype.addStrict = function (x) {\n        this.throwIfDisposed();\n        return opHandler.addStrict(this, x);\n    };\n    Tensor.prototype.sub = function (x) {\n        this.throwIfDisposed();\n        return opHandler.sub(this, x);\n    };\n    Tensor.prototype.subStrict = function (x) {\n        this.throwIfDisposed();\n        return opHandler.subStrict(this, x);\n    };\n    Tensor.prototype.pow = function (exp) {\n        this.throwIfDisposed();\n        return opHandler.pow(this, exp);\n    };\n    Tensor.prototype.powStrict = function (exp) {\n        this.throwIfDisposed();\n        return opHandler.powStrict(this, exp);\n    };\n    Tensor.prototype.mul = function (x) {\n        this.throwIfDisposed();\n        return opHandler.mul(this, x);\n    };\n    Tensor.prototype.mulStrict = function (x) {\n        this.throwIfDisposed();\n        return opHandler.mulStrict(this, x);\n    };\n    Tensor.prototype.div = function (x) {\n        this.throwIfDisposed();\n        return opHandler.div(this, x);\n    };\n    Tensor.prototype.floorDiv = function (x) {\n        this.throwIfDisposed();\n        return opHandler.floorDiv(this, x);\n    };\n    Tensor.prototype.divStrict = function (x) {\n        this.throwIfDisposed();\n        return opHandler.divStrict(this, x);\n    };\n    Tensor.prototype.minimum = function (x) {\n        this.throwIfDisposed();\n        return opHandler.minimum(this, x);\n    };\n    Tensor.prototype.minimumStrict = function (x) {\n        this.throwIfDisposed();\n        return opHandler.minimumStrict(this, x);\n    };\n    Tensor.prototype.maximum = function (x) {\n        this.throwIfDisposed();\n        return opHandler.maximum(this, x);\n    };\n    Tensor.prototype.maximumStrict = function (x) {\n        this.throwIfDisposed();\n        return opHandler.maximumStrict(this, x);\n    };\n    Tensor.prototype.mod = function (x) {\n        this.throwIfDisposed();\n        return opHandler.mod(this, x);\n    };\n    Tensor.prototype.modStrict = function (x) {\n        this.throwIfDisposed();\n        return opHandler.modStrict(this, x);\n    };\n    Tensor.prototype.squaredDifference = function (x) {\n        this.throwIfDisposed();\n        return opHandler.squaredDifference(this, x);\n    };\n    Tensor.prototype.squaredDifferenceStrict = function (x) {\n        this.throwIfDisposed();\n        return opHandler.squaredDifferenceStrict(this, x);\n    };\n    Tensor.prototype.transpose = function (perm) {\n        this.throwIfDisposed();\n        return opHandler.transpose(this, perm);\n    };\n    Tensor.prototype.notEqual = function (x) {\n        this.throwIfDisposed();\n        return opHandler.notEqual(this, x);\n    };\n    Tensor.prototype.notEqualStrict = function (x) {\n        this.throwIfDisposed();\n        return opHandler.notEqualStrict(this, x);\n    };\n    Tensor.prototype.less = function (x) {\n        this.throwIfDisposed();\n        return opHandler.less(this, x);\n    };\n    Tensor.prototype.lessStrict = function (x) {\n        this.throwIfDisposed();\n        return opHandler.lessStrict(this, x);\n    };\n    Tensor.prototype.equal = function (x) {\n        this.throwIfDisposed();\n        return opHandler.equal(this, x);\n    };\n    Tensor.prototype.equalStrict = function (x) {\n        this.throwIfDisposed();\n        return opHandler.equalStrict(this, x);\n    };\n    Tensor.prototype.lessEqual = function (x) {\n        this.throwIfDisposed();\n        return opHandler.lessEqual(this, x);\n    };\n    Tensor.prototype.lessEqualStrict = function (x) {\n        this.throwIfDisposed();\n        return opHandler.lessEqualStrict(this, x);\n    };\n    Tensor.prototype.greater = function (x) {\n        this.throwIfDisposed();\n        return opHandler.greater(this, x);\n    };\n    Tensor.prototype.greaterStrict = function (x) {\n        this.throwIfDisposed();\n        return opHandler.greaterStrict(this, x);\n    };\n    Tensor.prototype.greaterEqual = function (x) {\n        this.throwIfDisposed();\n        return opHandler.greaterEqual(this, x);\n    };\n    Tensor.prototype.greaterEqualStrict = function (x) {\n        this.throwIfDisposed();\n        return opHandler.greaterEqualStrict(this, x);\n    };\n    Tensor.prototype.logicalAnd = function (x) {\n        this.throwIfDisposed();\n        return opHandler.logicalAnd(this, x);\n    };\n    Tensor.prototype.logicalOr = function (x) {\n        this.throwIfDisposed();\n        return opHandler.logicalOr(this, x);\n    };\n    Tensor.prototype.logicalNot = function () {\n        this.throwIfDisposed();\n        return opHandler.logicalNot(this);\n    };\n    Tensor.prototype.logicalXor = function (x) {\n        this.throwIfDisposed();\n        return opHandler.logicalXor(this, x);\n    };\n    Tensor.prototype.where = function (condition, x) {\n        this.throwIfDisposed();\n        return opHandler.where(condition, this, x);\n    };\n    Tensor.prototype.neg = function () {\n        this.throwIfDisposed();\n        return opHandler.neg(this);\n    };\n    Tensor.prototype.ceil = function () {\n        this.throwIfDisposed();\n        return opHandler.ceil(this);\n    };\n    Tensor.prototype.floor = function () {\n        this.throwIfDisposed();\n        return opHandler.floor(this);\n    };\n    Tensor.prototype.sign = function () {\n        this.throwIfDisposed();\n        return opHandler.sign(this);\n    };\n    Tensor.prototype.exp = function () {\n        this.throwIfDisposed();\n        return opHandler.exp(this);\n    };\n    Tensor.prototype.expm1 = function () {\n        this.throwIfDisposed();\n        return opHandler.expm1(this);\n    };\n    Tensor.prototype.log = function () {\n        this.throwIfDisposed();\n        return opHandler.log(this);\n    };\n    Tensor.prototype.log1p = function () {\n        this.throwIfDisposed();\n        return opHandler.log1p(this);\n    };\n    Tensor.prototype.sqrt = function () {\n        this.throwIfDisposed();\n        return opHandler.sqrt(this);\n    };\n    Tensor.prototype.rsqrt = function () {\n        this.throwIfDisposed();\n        return opHandler.rsqrt(this);\n    };\n    Tensor.prototype.square = function () {\n        this.throwIfDisposed();\n        return opHandler.square(this);\n    };\n    Tensor.prototype.reciprocal = function () {\n        this.throwIfDisposed();\n        return opHandler.reciprocal(this);\n    };\n    Tensor.prototype.abs = function () {\n        this.throwIfDisposed();\n        return opHandler.abs(this);\n    };\n    Tensor.prototype.clipByValue = function (min, max) {\n        this.throwIfDisposed();\n        return opHandler.clipByValue(this, min, max);\n    };\n    Tensor.prototype.relu = function () {\n        this.throwIfDisposed();\n        return opHandler.relu(this);\n    };\n    Tensor.prototype.elu = function () {\n        this.throwIfDisposed();\n        return opHandler.elu(this);\n    };\n    Tensor.prototype.selu = function () {\n        this.throwIfDisposed();\n        return opHandler.selu(this);\n    };\n    Tensor.prototype.leakyRelu = function (alpha) {\n        if (alpha === void 0) { alpha = 0.2; }\n        this.throwIfDisposed();\n        return opHandler.leakyRelu(this, alpha);\n    };\n    Tensor.prototype.prelu = function (alpha) {\n        this.throwIfDisposed();\n        return opHandler.prelu(this, alpha);\n    };\n    Tensor.prototype.sigmoid = function () {\n        this.throwIfDisposed();\n        return opHandler.sigmoid(this);\n    };\n    Tensor.prototype.logSigmoid = function () {\n        this.throwIfDisposed();\n        return opHandler.logSigmoid(this);\n    };\n    Tensor.prototype.softplus = function () {\n        this.throwIfDisposed();\n        return opHandler.softplus(this);\n    };\n    Tensor.prototype.sin = function () {\n        this.throwIfDisposed();\n        return opHandler.sin(this);\n    };\n    Tensor.prototype.cos = function () {\n        this.throwIfDisposed();\n        return opHandler.cos(this);\n    };\n    Tensor.prototype.tan = function () {\n        this.throwIfDisposed();\n        return opHandler.tan(this);\n    };\n    Tensor.prototype.asin = function () {\n        this.throwIfDisposed();\n        return opHandler.asin(this);\n    };\n    Tensor.prototype.acos = function () {\n        this.throwIfDisposed();\n        return opHandler.acos(this);\n    };\n    Tensor.prototype.atan = function () {\n        this.throwIfDisposed();\n        return opHandler.atan(this);\n    };\n    Tensor.prototype.sinh = function () {\n        this.throwIfDisposed();\n        return opHandler.sinh(this);\n    };\n    Tensor.prototype.cosh = function () {\n        this.throwIfDisposed();\n        return opHandler.cosh(this);\n    };\n    Tensor.prototype.tanh = function () {\n        this.throwIfDisposed();\n        return opHandler.tanh(this);\n    };\n    Tensor.prototype.asinh = function () {\n        this.throwIfDisposed();\n        return opHandler.asinh(this);\n    };\n    Tensor.prototype.acosh = function () {\n        this.throwIfDisposed();\n        return opHandler.acosh(this);\n    };\n    Tensor.prototype.atanh = function () {\n        this.throwIfDisposed();\n        return opHandler.atanh(this);\n    };\n    Tensor.prototype.erf = function () {\n        this.throwIfDisposed();\n        return opHandler.erf(this);\n    };\n    Tensor.prototype.round = function () {\n        this.throwIfDisposed();\n        return opHandler.round(this);\n    };\n    Tensor.prototype.step = function (alpha) {\n        if (alpha === void 0) { alpha = 0.0; }\n        this.throwIfDisposed();\n        return opHandler.step(this, alpha);\n    };\n    Tensor.prototype.softmax = function (dim) {\n        if (dim === void 0) { dim = -1; }\n        this.throwIfDisposed();\n        return opHandler.softmax(this, dim);\n    };\n    Tensor.prototype.resizeBilinear = function (newShape2D, alignCorners) {\n        if (alignCorners === void 0) { alignCorners = false; }\n        this.throwIfDisposed();\n        return opHandler.image.resizeBilinear(this, newShape2D, alignCorners);\n    };\n    Tensor.prototype.resizeNearestNeighbor = function (newShape2D, alignCorners) {\n        if (alignCorners === void 0) { alignCorners = false; }\n        this.throwIfDisposed();\n        return opHandler.image.resizeNearestNeighbor(this, newShape2D, alignCorners);\n    };\n    Tensor.prototype.conv1d = function (filter, stride, pad, dataFormat, dilation, dimRoundingMode) {\n        if (dataFormat === void 0) { dataFormat = 'NWC'; }\n        if (dilation === void 0) { dilation = 1; }\n        this.throwIfDisposed();\n        return opHandler.conv1d(this, filter, stride, pad, dataFormat, dilation, dimRoundingMode);\n    };\n    Tensor.prototype.conv2d = function (filter, strides, pad, dataFormat, dilations, dimRoundingMode) {\n        if (dataFormat === void 0) { dataFormat = 'NHWC'; }\n        if (dilations === void 0) { dilations = [1, 1]; }\n        this.throwIfDisposed();\n        return opHandler.conv2d(this, filter, strides, pad, dataFormat, dilations, dimRoundingMode);\n    };\n    Tensor.prototype.conv2dTranspose = function (filter, outputShape, strides, pad, dimRoundingMode) {\n        this.throwIfDisposed();\n        return opHandler.conv2dTranspose(this, filter, outputShape, strides, pad, dimRoundingMode);\n    };\n    Tensor.prototype.depthwiseConv2D = function (filter, strides, pad, dataFormat, dilations, dimRoundingMode) {\n        if (dataFormat === void 0) { dataFormat = 'NHWC'; }\n        if (dilations === void 0) { dilations = [1, 1]; }\n        this.throwIfDisposed();\n        return opHandler.depthwiseConv2d(this, filter, strides, pad, dataFormat, dilations, dimRoundingMode);\n    };\n    Tensor.prototype.avgPool = function (filterSize, strides, pad, dimRoundingMode) {\n        this.throwIfDisposed();\n        return opHandler.avgPool(this, filterSize, strides, pad, dimRoundingMode);\n    };\n    Tensor.prototype.maxPool = function (filterSize, strides, pad, dimRoundingMode) {\n        this.throwIfDisposed();\n        return opHandler.maxPool(this, filterSize, strides, pad, dimRoundingMode);\n    };\n    Tensor.prototype.localResponseNormalization = function (radius, bias, alpha, beta) {\n        if (radius === void 0) { radius = 5; }\n        if (bias === void 0) { bias = 1; }\n        if (alpha === void 0) { alpha = 1; }\n        if (beta === void 0) { beta = 0.5; }\n        return opHandler.localResponseNormalization(this, radius, bias, alpha, beta);\n    };\n    Tensor.prototype.variable = function (trainable, name, dtype) {\n        if (trainable === void 0) { trainable = true; }\n        this.throwIfDisposed();\n        return Variable.variable(this, trainable, name, dtype);\n    };\n    Tensor.prototype.unsortedSegmentSum = function (segmentIds, numSegments) {\n        this.throwIfDisposed();\n        return opHandler.unsortedSegmentSum(this, segmentIds, numSegments);\n    };\n    Tensor.prototype.batchToSpaceND = function (blockShape, crops) {\n        this.throwIfDisposed();\n        return opHandler.batchToSpaceND(this, blockShape, crops);\n    };\n    Tensor.prototype.spaceToBatchND = function (blockShape, paddings) {\n        this.throwIfDisposed();\n        return opHandler.spaceToBatchND(this, blockShape, paddings);\n    };\n    Tensor.nextId = 0;\n    return Tensor;\n}());\nexports.Tensor = Tensor;\nObject.defineProperty(Tensor, Symbol.hasInstance, {\n    value: function (instance) {\n        return !!instance && instance.shape != null && instance.dtype != null;\n    }\n});\nvar Variable = (function (_super) {\n    __extends(Variable, _super);\n    function Variable(initialValue, trainable, name) {\n        if (trainable === void 0) { trainable = true; }\n        var _this = _super.call(this, initialValue.shape, initialValue.dtype, null, initialValue.dataId) || this;\n        _this.trainable = trainable;\n        _this.name = name;\n        if (_this.name == null) {\n            _this.name = Variable.nextVarId.toString();\n            Variable.nextVarId++;\n        }\n        try {\n            trackerFn().registerVariable(_this);\n        }\n        catch (ex) {\n            trackerFn().disposeTensor(_this);\n            throw ex;\n        }\n        return _this;\n    }\n    Variable.variable = function (initialValue, trainable, name, dtype) {\n        if (trainable === void 0) { trainable = true; }\n        if (dtype != null && dtype !== initialValue.dtype) {\n            initialValue = initialValue.asType(dtype);\n        }\n        return new Variable(initialValue, trainable, name);\n    };\n    Variable.prototype.assign = function (newValue) {\n        if (newValue.dtype !== this.dtype) {\n            throw new Error(\"dtype of the new value (\" + newValue.dtype + \") and \" +\n                (\"previous value (\" + this.dtype + \") must match\"));\n        }\n        if (!util.arraysEqual(newValue.shape, this.shape)) {\n            throw new Error(\"shape of the new value (\" + newValue.shape + \") and \" +\n                (\"previous value (\" + this.shape + \") must match\"));\n        }\n        trackerFn().disposeTensor(this);\n        this.dataId = newValue.dataId;\n        trackerFn().registerTensor(this);\n    };\n    Variable.nextVarId = 0;\n    return Variable;\n}(Tensor));\nexports.Variable = Variable;\nObject.defineProperty(Variable, Symbol.hasInstance, {\n    value: function (instance) {\n        return instance instanceof Tensor && instance.assign != null &&\n            instance.assign instanceof Function;\n    }\n});\nvar variable = Variable.variable;\nexports.variable = variable;\n\n},{\"./tensor_format\":174,\"./util\":180}],174:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"./util\");\nvar FORMAT_LIMIT_NUM_VALS = 20;\nvar FORMAT_NUM_FIRST_LAST_VALS = 3;\nvar FORMAT_NUM_SIG_DIGITS = 7;\nfunction tensorToString(vals, shape, dtype, verbose) {\n    var strides = util_1.computeStrides(shape);\n    var padPerCol = computeMaxSizePerColumn(vals, shape, strides);\n    var rank = shape.length;\n    var valsLines = subTensorToString(vals, shape, strides, padPerCol);\n    var lines = ['Tensor'];\n    if (verbose) {\n        lines.push(\"  dtype: \" + dtype);\n        lines.push(\"  rank: \" + rank);\n        lines.push(\"  shape: [\" + shape + \"]\");\n        lines.push(\"  values:\");\n    }\n    lines.push(valsLines.map(function (l) { return '    ' + l; }).join('\\n'));\n    return lines.join('\\n');\n}\nexports.tensorToString = tensorToString;\nfunction computeMaxSizePerColumn(vals, shape, strides) {\n    var n = util_1.sizeFromShape(shape);\n    var numCols = strides[strides.length - 1];\n    var padPerCol = new Array(numCols).fill(0);\n    var rank = shape.length;\n    if (rank > 1) {\n        for (var row = 0; row < n / numCols; row++) {\n            var offset = row * numCols;\n            for (var j = 0; j < numCols; j++) {\n                padPerCol[j] =\n                    Math.max(padPerCol[j], valToString(vals[offset + j], 0).length);\n            }\n        }\n    }\n    return padPerCol;\n}\nfunction valToString(val, pad) {\n    return util_1.rightPad(parseFloat(val.toFixed(FORMAT_NUM_SIG_DIGITS)).toString(), pad);\n}\nfunction subTensorToString(vals, shape, strides, padPerCol, isLast) {\n    if (isLast === void 0) { isLast = true; }\n    var size = shape[0];\n    var rank = shape.length;\n    if (rank === 0) {\n        return [vals[0].toString()];\n    }\n    if (rank === 1) {\n        if (size > FORMAT_LIMIT_NUM_VALS) {\n            var firstVals = Array.from(vals.subarray(0, FORMAT_NUM_FIRST_LAST_VALS));\n            var lastVals = Array.from(vals.subarray(size - FORMAT_NUM_FIRST_LAST_VALS, size));\n            return [\n                '[' + firstVals.map(function (x, i) { return valToString(x, padPerCol[i]); }).join(', ') +\n                    ', ..., ' +\n                    lastVals\n                        .map(function (x, i) { return valToString(x, padPerCol[size - FORMAT_NUM_FIRST_LAST_VALS + i]); })\n                        .join(', ') +\n                    ']'\n            ];\n        }\n        return [\n            '[' +\n                Array.from(vals).map(function (x, i) { return valToString(x, padPerCol[i]); }).join(', ') +\n                ']'\n        ];\n    }\n    var subshape = shape.slice(1);\n    var substrides = strides.slice(1);\n    var stride = strides[0];\n    var lines = [];\n    if (size > FORMAT_LIMIT_NUM_VALS) {\n        for (var i = 0; i < FORMAT_NUM_FIRST_LAST_VALS; i++) {\n            var start = i * stride;\n            var end = start + stride;\n            lines.push.apply(lines, subTensorToString(vals.subarray(start, end), subshape, substrides, padPerCol, false));\n        }\n        lines.push('...');\n        for (var i = size - FORMAT_NUM_FIRST_LAST_VALS; i < size; i++) {\n            var start = i * stride;\n            var end = start + stride;\n            lines.push.apply(lines, subTensorToString(vals.subarray(start, end), subshape, substrides, padPerCol, i === size - 1));\n        }\n    }\n    else {\n        for (var i = 0; i < size; i++) {\n            var start = i * stride;\n            var end = start + stride;\n            lines.push.apply(lines, subTensorToString(vals.subarray(start, end), subshape, substrides, padPerCol, i === size - 1));\n        }\n    }\n    var sep = rank === 2 ? ',' : '';\n    lines[0] = '[' + lines[0] + sep;\n    for (var i = 1; i < lines.length - 1; i++) {\n        lines[i] = ' ' + lines[i] + sep;\n    }\n    var newLineSep = ',\\n';\n    for (var i = 2; i < rank; i++) {\n        newLineSep += '\\n';\n    }\n    lines[lines.length - 1] =\n        ' ' + lines[lines.length - 1] + ']' + (isLast ? '' : newLineSep);\n    return lines;\n}\n\n},{\"./util\":180}],175:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tensor_1 = require(\"./tensor\");\nvar util_1 = require(\"./util\");\nfunction assertTypesMatch(a, b) {\n    util_1.assert(a.dtype === b.dtype, \" The dtypes of the first(\" + a.dtype + \") and\" +\n        (\" second(\" + b.dtype + \") input must match\"));\n}\nexports.assertTypesMatch = assertTypesMatch;\nfunction isTensorInList(tensor, tensorList) {\n    for (var i = 0; i < tensorList.length; i++) {\n        if (tensorList[i].id === tensor.id) {\n            return true;\n        }\n    }\n    return false;\n}\nexports.isTensorInList = isTensorInList;\nfunction flattenNameArrayMap(nameArrayMap, keys) {\n    var xs = [];\n    if (nameArrayMap instanceof tensor_1.Tensor) {\n        xs.push(nameArrayMap);\n    }\n    else {\n        var xMap = nameArrayMap;\n        for (var i = 0; i < keys.length; i++) {\n            xs.push(xMap[keys[i]]);\n        }\n    }\n    return xs;\n}\nexports.flattenNameArrayMap = flattenNameArrayMap;\nfunction unflattenToNameArrayMap(keys, flatArrays) {\n    if (keys.length !== flatArrays.length) {\n        throw new Error(\"Cannot unflatten Tensor[], keys and arrays are not of same length.\");\n    }\n    var result = {};\n    for (var i = 0; i < keys.length; i++) {\n        result[keys[i]] = flatArrays[i];\n    }\n    return result;\n}\nexports.unflattenToNameArrayMap = unflattenToNameArrayMap;\nfunction getTensorsInContainer(result) {\n    var list = [];\n    var seen = new Set();\n    walkTensorContainer(result, list, seen);\n    return list;\n}\nexports.getTensorsInContainer = getTensorsInContainer;\nfunction walkTensorContainer(container, list, seen) {\n    if (container == null) {\n        return;\n    }\n    if (container instanceof tensor_1.Tensor) {\n        list.push(container);\n        return;\n    }\n    if (!isIterable(container)) {\n        return;\n    }\n    var iterable = container;\n    for (var k in iterable) {\n        var val = iterable[k];\n        if (!seen.has(val)) {\n            seen.add(val);\n            walkTensorContainer(val, list, seen);\n        }\n    }\n}\nfunction isIterable(obj) {\n    return Array.isArray(obj) || typeof obj === 'object';\n}\n\n},{\"./tensor\":173,\"./util\":180}],176:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"./environment\");\nvar tensor_1 = require(\"./tensor\");\nvar util_1 = require(\"./util\");\nfunction convertToTensor(x, argName, functionName, dtype) {\n    if (dtype === void 0) { dtype = 'float32'; }\n    dtype = dtype || 'float32';\n    if (x instanceof tensor_1.Tensor) {\n        return x;\n    }\n    if (!util_1.isTypedArray(x) && !Array.isArray(x) && typeof x !== 'number' &&\n        typeof x !== 'boolean') {\n        throw new Error(\"Argument '\" + argName + \"' passed to '\" + functionName + \"' must be a \" +\n            (\"Tensor or TensorLike, but got \" + x.constructor.name));\n    }\n    var inferredShape = util_1.inferShape(x);\n    if (!util_1.isTypedArray(x) && !Array.isArray(x)) {\n        x = [x];\n    }\n    return tensor_1.Tensor.make(inferredShape, { values: util_1.toTypedArray(x, dtype, environment_1.ENV.get('DEBUG')) }, dtype);\n}\nexports.convertToTensor = convertToTensor;\nfunction convertToTensorArray(arg, argName, functionName) {\n    if (!Array.isArray(arg)) {\n        throw new Error(\"Argument \" + argName + \" passed to \" + functionName + \" must be a \" +\n            '`Tensor[]` or `TensorLike[]`');\n    }\n    var tensors = arg;\n    return tensors.map(function (t, i) { return convertToTensor(t, argName + \"[\" + i + \"]\", functionName); });\n}\nexports.convertToTensorArray = convertToTensorArray;\n\n},{\"./environment\":55,\"./tensor\":173,\"./util\":180}],177:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar environment_1 = require(\"./environment\");\nvar tensor_1 = require(\"./tensor\");\nvar util = require(\"./util\");\nexports.WEBGL_ENVS = {\n    'HAS_WEBGL': true\n};\nexports.NODE_ENVS = {\n    'IS_NODE': true\n};\nexports.CHROME_ENVS = {\n    'IS_CHROME': true\n};\nexports.BROWSER_ENVS = {\n    'IS_BROWSER': true\n};\nexports.CPU_ENVS = {\n    'HAS_WEBGL': false\n};\nexports.ALL_ENVS = {};\nfunction expectArraysClose(actual, expected, epsilon) {\n    if (epsilon == null) {\n        epsilon = environment_1.ENV.get('TEST_EPSILON');\n    }\n    if (!(actual instanceof tensor_1.Tensor) && !(expected instanceof tensor_1.Tensor)) {\n        var aType = actual.constructor.name;\n        var bType = expected.constructor.name;\n        if (aType !== bType) {\n            throw new Error(\"Arrays are of different type actual: \" + aType + \" \" +\n                (\"vs expected: \" + bType));\n        }\n    }\n    else if (actual instanceof tensor_1.Tensor && expected instanceof tensor_1.Tensor) {\n        if (actual.dtype !== expected.dtype) {\n            throw new Error(\"Arrays are of different type actual: \" + actual.dtype + \" \" +\n                (\"vs expected: \" + expected.dtype + \".\"));\n        }\n        if (!util.arraysEqual(actual.shape, expected.shape)) {\n            throw new Error(\"Arrays are of different shape actual: \" + actual.shape + \" \" +\n                (\"vs expected: \" + expected.shape + \".\"));\n        }\n    }\n    var actualValues;\n    var expectedValues;\n    if (actual instanceof tensor_1.Tensor) {\n        actualValues = actual.dataSync();\n    }\n    else {\n        actualValues = actual;\n    }\n    if (expected instanceof tensor_1.Tensor) {\n        expectedValues = expected.dataSync();\n    }\n    else {\n        expectedValues = expected;\n    }\n    if (actualValues.length !== expectedValues.length) {\n        throw new Error(\"Arrays have different lengths actual: \" + actualValues.length + \" vs \" +\n            (\"expected: \" + expectedValues.length + \".\\n\") +\n            (\"Actual:   \" + actualValues + \".\\n\") +\n            (\"Expected: \" + expectedValues + \".\"));\n    }\n    for (var i = 0; i < expectedValues.length; ++i) {\n        var a = actualValues[i];\n        var e = expectedValues[i];\n        if (!areClose(a, Number(e), epsilon)) {\n            throw new Error(\"Arrays differ: actual[\" + i + \"] = \" + a + \", expected[\" + i + \"] = \" + e + \".\\n\" +\n                (\"Actual:   \" + actualValues + \".\\n\") +\n                (\"Expected: \" + expectedValues + \".\"));\n        }\n    }\n}\nexports.expectArraysClose = expectArraysClose;\nfunction expectPromiseToFail(fn, done) {\n    fn().then(function () { return done.fail(); }, function () { return done(); });\n}\nexports.expectPromiseToFail = expectPromiseToFail;\nfunction expectArraysEqual(actual, expected) {\n    return expectArraysClose(actual, expected, 0);\n}\nexports.expectArraysEqual = expectArraysEqual;\nfunction expectNumbersClose(a, e, epsilon) {\n    if (epsilon == null) {\n        epsilon = environment_1.ENV.get('TEST_EPSILON');\n    }\n    if (!areClose(a, e, epsilon)) {\n        throw new Error(\"Numbers differ: actual === \" + a + \", expected === \" + e);\n    }\n}\nexports.expectNumbersClose = expectNumbersClose;\nfunction areClose(a, e, epsilon) {\n    if (isNaN(a) && isNaN(e)) {\n        return true;\n    }\n    if (isNaN(a) || isNaN(e) || Math.abs(a - e) > epsilon) {\n        return false;\n    }\n    return true;\n}\nfunction expectValuesInRange(actual, low, high) {\n    var actualVals;\n    if (actual instanceof tensor_1.Tensor) {\n        actualVals = actual.dataSync();\n    }\n    else {\n        actualVals = actual;\n    }\n    for (var i = 0; i < actualVals.length; i++) {\n        if (actualVals[i] < low || actualVals[i] > high) {\n            throw new Error(\"Value out of range:\" + actualVals[i] + \" low: \" + low + \", high: \" + high);\n        }\n    }\n}\nexports.expectValuesInRange = expectValuesInRange;\nfunction expectArrayBuffersEqual(actual, expected) {\n    expect(new Float32Array(actual)).toEqual(new Float32Array(expected));\n}\nexports.expectArrayBuffersEqual = expectArrayBuffersEqual;\n\n},{\"./environment\":55,\"./tensor\":173,\"./util\":180}],178:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar adadelta_optimizer_1 = require(\"./optimizers/adadelta_optimizer\");\nvar adagrad_optimizer_1 = require(\"./optimizers/adagrad_optimizer\");\nvar adam_optimizer_1 = require(\"./optimizers/adam_optimizer\");\nvar adamax_optimizer_1 = require(\"./optimizers/adamax_optimizer\");\nvar momentum_optimizer_1 = require(\"./optimizers/momentum_optimizer\");\nvar optimizer_constructors_1 = require(\"./optimizers/optimizer_constructors\");\nvar rmsprop_optimizer_1 = require(\"./optimizers/rmsprop_optimizer\");\nvar sgd_optimizer_1 = require(\"./optimizers/sgd_optimizer\");\n[momentum_optimizer_1.MomentumOptimizer, sgd_optimizer_1.SGDOptimizer, adadelta_optimizer_1.AdadeltaOptimizer, adagrad_optimizer_1.AdagradOptimizer,\n    rmsprop_optimizer_1.RMSPropOptimizer, adamax_optimizer_1.AdamaxOptimizer, adam_optimizer_1.AdamOptimizer];\nexports.train = {\n    sgd: optimizer_constructors_1.OptimizerConstructors.sgd,\n    momentum: optimizer_constructors_1.OptimizerConstructors.momentum,\n    adadelta: optimizer_constructors_1.OptimizerConstructors.adadelta,\n    adagrad: optimizer_constructors_1.OptimizerConstructors.adagrad,\n    rmsprop: optimizer_constructors_1.OptimizerConstructors.rmsprop,\n    adamax: optimizer_constructors_1.OptimizerConstructors.adamax,\n    adam: optimizer_constructors_1.OptimizerConstructors.adam\n};\n\n},{\"./optimizers/adadelta_optimizer\":160,\"./optimizers/adagrad_optimizer\":161,\"./optimizers/adam_optimizer\":162,\"./optimizers/adamax_optimizer\":163,\"./optimizers/momentum_optimizer\":164,\"./optimizers/optimizer_constructors\":166,\"./optimizers/rmsprop_optimizer\":168,\"./optimizers/sgd_optimizer\":169}],179:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar DType;\n(function (DType) {\n    DType[\"float32\"] = \"float32\";\n    DType[\"int32\"] = \"int32\";\n    DType[\"bool\"] = \"bool\";\n})(DType = exports.DType || (exports.DType = {}));\nvar Rank;\n(function (Rank) {\n    Rank[\"R0\"] = \"R0\";\n    Rank[\"R1\"] = \"R1\";\n    Rank[\"R2\"] = \"R2\";\n    Rank[\"R3\"] = \"R3\";\n    Rank[\"R4\"] = \"R4\";\n    Rank[\"R5\"] = \"R5\";\n    Rank[\"R6\"] = \"R6\";\n})(Rank = exports.Rank || (exports.Rank = {}));\nvar UpcastInt32AndMap;\n(function (UpcastInt32AndMap) {\n    UpcastInt32AndMap[\"float32\"] = \"float32\";\n    UpcastInt32AndMap[\"int32\"] = \"int32\";\n    UpcastInt32AndMap[\"bool\"] = \"int32\";\n})(UpcastInt32AndMap || (UpcastInt32AndMap = {}));\nvar UpcastBoolAndMap;\n(function (UpcastBoolAndMap) {\n    UpcastBoolAndMap[\"float32\"] = \"float32\";\n    UpcastBoolAndMap[\"int32\"] = \"int32\";\n    UpcastBoolAndMap[\"bool\"] = \"bool\";\n})(UpcastBoolAndMap || (UpcastBoolAndMap = {}));\nvar UpcastFloat32AndMap;\n(function (UpcastFloat32AndMap) {\n    UpcastFloat32AndMap[\"float32\"] = \"float32\";\n    UpcastFloat32AndMap[\"int32\"] = \"float32\";\n    UpcastFloat32AndMap[\"bool\"] = \"float32\";\n})(UpcastFloat32AndMap || (UpcastFloat32AndMap = {}));\nvar upcastTypeMap = {\n    'float32': UpcastFloat32AndMap,\n    'int32': UpcastInt32AndMap,\n    'bool': UpcastBoolAndMap\n};\nfunction upcastType(typeA, typeB) {\n    return upcastTypeMap[typeA][typeB];\n}\nexports.upcastType = upcastType;\nfunction sumOutType(type) {\n    return upcastType(type, 'int32');\n}\nexports.sumOutType = sumOutType;\n\n},{}],180:[function(require,module,exports){\n(function (process){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction shuffle(array) {\n    var counter = array.length;\n    var temp = 0;\n    var index = 0;\n    while (counter > 0) {\n        index = (Math.random() * counter) | 0;\n        counter--;\n        temp = array[counter];\n        array[counter] = array[index];\n        array[index] = temp;\n    }\n}\nexports.shuffle = shuffle;\nfunction clamp(min, x, max) {\n    return Math.max(min, Math.min(x, max));\n}\nexports.clamp = clamp;\nfunction randUniform(a, b) {\n    return Math.random() * (b - a) + a;\n}\nexports.randUniform = randUniform;\nfunction distSquared(a, b) {\n    var result = 0;\n    for (var i = 0; i < a.length; i++) {\n        var diff = Number(a[i]) - Number(b[i]);\n        result += diff * diff;\n    }\n    return result;\n}\nexports.distSquared = distSquared;\nfunction assert(expr, msg) {\n    if (!expr) {\n        throw new Error(typeof msg === 'string' ? msg : msg());\n    }\n}\nexports.assert = assert;\nfunction assertShapesMatch(shapeA, shapeB, errorMessagePrefix) {\n    if (errorMessagePrefix === void 0) { errorMessagePrefix = ''; }\n    assert(arraysEqual(shapeA, shapeB), errorMessagePrefix + (\" Shapes \" + shapeA + \" and \" + shapeB + \" must match\"));\n}\nexports.assertShapesMatch = assertShapesMatch;\nfunction assertNonNull(a) {\n    assert(a != null, \"The input to the tensor constructor must be a non-null value.\");\n}\nexports.assertNonNull = assertNonNull;\nfunction flatten(arr, ret) {\n    if (ret === void 0) { ret = []; }\n    if (Array.isArray(arr)) {\n        for (var i = 0; i < arr.length; ++i) {\n            flatten(arr[i], ret);\n        }\n    }\n    else {\n        ret.push(arr);\n    }\n    return ret;\n}\nexports.flatten = flatten;\nfunction inferShape(val) {\n    var firstElem = val;\n    if (isTypedArray(val)) {\n        return [val.length];\n    }\n    if (!Array.isArray(val)) {\n        return [];\n    }\n    var shape = [];\n    while (firstElem instanceof Array) {\n        shape.push(firstElem.length);\n        firstElem = firstElem[0];\n    }\n    if (val instanceof Array) {\n        deepAssertShapeConsistency(val, shape, []);\n    }\n    return shape;\n}\nexports.inferShape = inferShape;\nfunction deepAssertShapeConsistency(val, shape, indices) {\n    indices = indices || [];\n    if (!(val instanceof Array)) {\n        assert(shape.length === 0, function () { return \"Element arr[\" + indices.join('][') + \"] is a primitive, \" +\n            (\"but should be an array of \" + shape[0] + \" elements\"); });\n        return;\n    }\n    assert(shape.length > 0, function () { return \"Element arr[\" + indices.join('][') + \"] should be a primitive, \" +\n        (\"but is an array of \" + val.length + \" elements\"); });\n    assert(val.length === shape[0], function () { return \"Element arr[\" + indices.join('][') + \"] should have \" + shape[0] + \" \" +\n        (\"elements, but has \" + val.length + \" elements\"); });\n    var subShape = shape.slice(1);\n    for (var i = 0; i < val.length; ++i) {\n        deepAssertShapeConsistency(val[i], subShape, indices.concat(i));\n    }\n}\nfunction sizeFromShape(shape) {\n    if (shape.length === 0) {\n        return 1;\n    }\n    var size = shape[0];\n    for (var i = 1; i < shape.length; i++) {\n        size *= shape[i];\n    }\n    return size;\n}\nexports.sizeFromShape = sizeFromShape;\nfunction isScalarShape(shape) {\n    return shape.length === 0;\n}\nexports.isScalarShape = isScalarShape;\nfunction arraysEqual(n1, n2) {\n    if (n1.length !== n2.length) {\n        return false;\n    }\n    for (var i = 0; i < n1.length; i++) {\n        if (n1[i] !== n2[i]) {\n            return false;\n        }\n    }\n    return true;\n}\nexports.arraysEqual = arraysEqual;\nfunction isInt(a) {\n    return a % 1 === 0;\n}\nexports.isInt = isInt;\nfunction tanh(x) {\n    if (Math.tanh != null) {\n        return Math.tanh(x);\n    }\n    if (x === Infinity) {\n        return 1;\n    }\n    else if (x === -Infinity) {\n        return -1;\n    }\n    else {\n        var e2x = Math.exp(2 * x);\n        return (e2x - 1) / (e2x + 1);\n    }\n}\nexports.tanh = tanh;\nfunction sizeToSquarishShape(size) {\n    for (var a = Math.floor(Math.sqrt(size)); a > 1; --a) {\n        if (size % a === 0) {\n            return [a, size / a];\n        }\n    }\n    return [1, size];\n}\nexports.sizeToSquarishShape = sizeToSquarishShape;\nfunction createShuffledIndices(n) {\n    var shuffledIndices = new Uint32Array(n);\n    for (var i = 0; i < n; ++i) {\n        shuffledIndices[i] = i;\n    }\n    shuffle(shuffledIndices);\n    return shuffledIndices;\n}\nexports.createShuffledIndices = createShuffledIndices;\nfunction rightPad(a, size) {\n    if (size <= a.length) {\n        return a;\n    }\n    return a + ' '.repeat(size - a.length);\n}\nexports.rightPad = rightPad;\nfunction repeatedTry(checkFn, delayFn, maxCounter) {\n    if (delayFn === void 0) { delayFn = function (counter) { return 0; }; }\n    return new Promise(function (resolve, reject) {\n        var tryCount = 0;\n        var tryFn = function () {\n            if (checkFn()) {\n                resolve();\n                return;\n            }\n            tryCount++;\n            var nextBackoff = delayFn(tryCount);\n            if (maxCounter != null && tryCount >= maxCounter) {\n                reject();\n                return;\n            }\n            setTimeout(tryFn, nextBackoff);\n        };\n        tryFn();\n    });\n}\nexports.repeatedTry = repeatedTry;\nfunction inferFromImplicitShape(shape, size) {\n    var shapeProd = 1;\n    var implicitIdx = -1;\n    for (var i = 0; i < shape.length; ++i) {\n        if (shape[i] > 0) {\n            shapeProd *= shape[i];\n        }\n        else if (shape[i] === -1) {\n            if (implicitIdx !== -1) {\n                throw Error(\"Shapes can only have 1 implicit size. \" +\n                    (\"Found - 1 at dim \" + implicitIdx + \" and dim \" + i));\n            }\n            implicitIdx = i;\n        }\n        else if (shape[i] <= 0) {\n            throw Error(\"Shapes can not be <= 0. Found \" + shape[i] + \" at dim \" + i);\n        }\n    }\n    if (implicitIdx === -1) {\n        if (size > 0 && size !== shapeProd) {\n            throw Error(\"Size(\" + size + \") must match the product of shape \" + shape);\n        }\n        return shape;\n    }\n    if (size % shapeProd !== 0) {\n        throw Error(\"The implicit shape can't be a fractional number. \" +\n            (\"Got \" + size + \" / \" + shapeProd));\n    }\n    var newShape = shape.slice();\n    newShape[implicitIdx] = size / shapeProd;\n    return newShape;\n}\nexports.inferFromImplicitShape = inferFromImplicitShape;\nfunction squeezeShape(shape, axis) {\n    var newShape = [];\n    var keptDims = [];\n    var j = 0;\n    for (var i = 0; i < shape.length; ++i) {\n        if (axis != null) {\n            if (axis[j] === i && shape[i] > 1) {\n                throw new Error(\"Can't squeeze axis \" + i + \" since its dim '\" + shape[i] + \"' is not 1\");\n            }\n            if ((axis[j] == null || axis[j] > i) && shape[i] === 1) {\n                newShape.push(shape[i]);\n                keptDims.push(i);\n            }\n            if (axis[j] <= i) {\n                j++;\n            }\n        }\n        if (shape[i] > 1) {\n            newShape.push(shape[i]);\n            keptDims.push(i);\n        }\n    }\n    return { newShape: newShape, keptDims: keptDims };\n}\nexports.squeezeShape = squeezeShape;\nfunction getTypedArrayFromDType(dtype, size) {\n    var values = null;\n    if (dtype == null || dtype === 'float32') {\n        values = new Float32Array(size);\n    }\n    else if (dtype === 'int32') {\n        values = new Int32Array(size);\n    }\n    else if (dtype === 'bool') {\n        values = new Uint8Array(size);\n    }\n    else {\n        throw new Error(\"Unknown data type \" + dtype);\n    }\n    return values;\n}\nexports.getTypedArrayFromDType = getTypedArrayFromDType;\nfunction checkComputationForNaN(vals, dtype, name) {\n    if (dtype !== 'float32') {\n        return;\n    }\n    for (var i = 0; i < vals.length; i++) {\n        if (isNaN(vals[i])) {\n            throw Error(\"The result of the '\" + name + \"' has NaNs.\");\n        }\n    }\n}\nexports.checkComputationForNaN = checkComputationForNaN;\nfunction checkConversionForNaN(vals, dtype) {\n    if (dtype === 'float32') {\n        return;\n    }\n    for (var i = 0; i < vals.length; i++) {\n        if (isNaN(vals[i])) {\n            throw Error(\"NaN is not a valid value for dtype: '\" + dtype + \"'.\");\n        }\n    }\n}\nexports.checkConversionForNaN = checkConversionForNaN;\nfunction hasEncodingLoss(oldType, newType) {\n    if (newType === 'float32') {\n        return false;\n    }\n    if (newType === 'int32' && oldType !== 'float32') {\n        return false;\n    }\n    if (newType === 'bool' && oldType === 'bool') {\n        return false;\n    }\n    return true;\n}\nexports.hasEncodingLoss = hasEncodingLoss;\nfunction copyTypedArray(array, dtype, debugMode) {\n    if (dtype == null || dtype === 'float32') {\n        return new Float32Array(array);\n    }\n    else if (dtype === 'int32') {\n        if (debugMode) {\n            checkConversionForNaN(array, dtype);\n        }\n        return new Int32Array(array);\n    }\n    else if (dtype === 'bool') {\n        var bool = new Uint8Array(array.length);\n        for (var i = 0; i < bool.length; ++i) {\n            if (Math.round(array[i]) !== 0) {\n                bool[i] = 1;\n            }\n        }\n        return bool;\n    }\n    else {\n        throw new Error(\"Unknown data type \" + dtype);\n    }\n}\nfunction isTypedArray(a) {\n    return a instanceof Float32Array || a instanceof Int32Array ||\n        a instanceof Uint8Array;\n}\nexports.isTypedArray = isTypedArray;\nfunction bytesPerElement(dtype) {\n    if (dtype === 'float32' || dtype === 'int32') {\n        return 4;\n    }\n    else if (dtype === 'bool') {\n        return 1;\n    }\n    else {\n        throw new Error(\"Unknown dtype \" + dtype);\n    }\n}\nexports.bytesPerElement = bytesPerElement;\nfunction isFunction(f) {\n    return !!(f && f.constructor && f.call && f.apply);\n}\nexports.isFunction = isFunction;\nfunction nearestDivisor(size, start) {\n    for (var i = start; i < size; ++i) {\n        if (size % i === 0) {\n            return i;\n        }\n    }\n    return size;\n}\nexports.nearestDivisor = nearestDivisor;\nfunction computeStrides(shape) {\n    var rank = shape.length;\n    if (rank < 2) {\n        return [];\n    }\n    var strides = new Array(rank - 1);\n    strides[rank - 2] = shape[rank - 1];\n    for (var i = rank - 3; i >= 0; --i) {\n        strides[i] = strides[i + 1] * shape[i + 1];\n    }\n    return strides;\n}\nexports.computeStrides = computeStrides;\nfunction toTypedArray(a, dtype, debugMode) {\n    if (noConversionNeeded(a, dtype)) {\n        return a;\n    }\n    if (Array.isArray(a)) {\n        a = flatten(a);\n    }\n    return copyTypedArray(a, dtype, debugMode);\n}\nexports.toTypedArray = toTypedArray;\nfunction noConversionNeeded(a, dtype) {\n    return (a instanceof Float32Array && dtype === 'float32') ||\n        (a instanceof Int32Array && dtype === 'int32') ||\n        (a instanceof Uint8Array && dtype === 'bool');\n}\nfunction makeOnesTypedArray(size, dtype) {\n    var array = makeZerosTypedArray(size, dtype);\n    for (var i = 0; i < array.length; i++) {\n        array[i] = 1;\n    }\n    return array;\n}\nexports.makeOnesTypedArray = makeOnesTypedArray;\nfunction makeZerosTypedArray(size, dtype) {\n    if (dtype == null || dtype === 'float32') {\n        return new Float32Array(size);\n    }\n    else if (dtype === 'int32') {\n        return new Int32Array(size);\n    }\n    else if (dtype === 'bool') {\n        return new Uint8Array(size);\n    }\n    else {\n        throw new Error(\"Unknown data type \" + dtype);\n    }\n}\nexports.makeZerosTypedArray = makeZerosTypedArray;\nfunction now() {\n    if (typeof performance !== 'undefined') {\n        return performance.now();\n    }\n    else if (typeof process !== 'undefined') {\n        var time = process.hrtime();\n        return time[0] * 1000 + time[1] / 1000000;\n    }\n    else {\n        throw new Error('Can not measure time in this environment. You should run tf.js ' +\n            'in the browser or in Node.js');\n    }\n}\nexports.now = now;\n\n}).call(this,require('_process'))\n},{\"_process\":267}],181:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar version = '0.12.8';\nexports.version = version;\n\n},{}],182:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar gpgpu_util = require(\"./kernels/webgl/gpgpu_util\");\nexports.gpgpu_util = gpgpu_util;\nvar webgl_util = require(\"./kernels/webgl/webgl_util\");\nexports.webgl_util = webgl_util;\nvar backend_webgl_1 = require(\"./kernels/backend_webgl\");\nexports.MathBackendWebGL = backend_webgl_1.MathBackendWebGL;\nvar gpgpu_context_1 = require(\"./kernels/webgl/gpgpu_context\");\nexports.GPGPUContext = gpgpu_context_1.GPGPUContext;\n\n},{\"./kernels/backend_webgl\":73,\"./kernels/webgl/gpgpu_context\":90,\"./kernels/webgl/gpgpu_util\":92,\"./kernels/webgl/webgl_util\":117}],183:[function(require,module,exports){\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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfc = require(\"@tensorflow/tfjs-core\");\nvar tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar K = require(\"./backend/tfjs_backend\");\nvar state_1 = require(\"./backend/state\");\nvar generic_utils_1 = require(\"./utils/generic_utils\");\nvar Activation = (function (_super) {\n    __extends(Activation, _super);\n    function Activation() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Activation.prototype.getConfig = function () {\n        return {};\n    };\n    return Activation;\n}(tfjs_core_1.serialization.Serializable));\nexports.Activation = Activation;\nvar Elu = (function (_super) {\n    __extends(Elu, _super);\n    function Elu() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Elu.prototype.apply = function (x, alpha) {\n        if (alpha === void 0) { alpha = 1; }\n        return K.elu(x, alpha);\n    };\n    Elu.className = 'elu';\n    return Elu;\n}(Activation));\nexports.Elu = Elu;\ntfjs_core_1.serialization.SerializationMap.register(Elu);\nvar Selu = (function (_super) {\n    __extends(Selu, _super);\n    function Selu() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Selu.prototype.apply = function (x) {\n        return tfc.selu(x);\n    };\n    Selu.className = 'selu';\n    return Selu;\n}(Activation));\nexports.Selu = Selu;\ntfjs_core_1.serialization.SerializationMap.register(Selu);\nvar Relu = (function (_super) {\n    __extends(Relu, _super);\n    function Relu() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Relu.prototype.apply = function (x) {\n        return tfc.relu(x);\n    };\n    Relu.className = 'relu';\n    return Relu;\n}(Activation));\nexports.Relu = Relu;\ntfjs_core_1.serialization.SerializationMap.register(Relu);\nvar Relu6 = (function (_super) {\n    __extends(Relu6, _super);\n    function Relu6() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Relu6.prototype.apply = function (x) {\n        return tfjs_core_1.tidy(function () { return tfc.minimum(state_1.getScalar(6.0), tfc.relu(x)); });\n    };\n    Relu6.className = 'relu6';\n    return Relu6;\n}(Activation));\nexports.Relu6 = Relu6;\ntfjs_core_1.serialization.SerializationMap.register(Relu6);\nvar Linear = (function (_super) {\n    __extends(Linear, _super);\n    function Linear() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Linear.prototype.apply = function (x) {\n        return x;\n    };\n    Linear.className = 'linear';\n    return Linear;\n}(Activation));\nexports.Linear = Linear;\ntfjs_core_1.serialization.SerializationMap.register(Linear);\nvar Sigmoid = (function (_super) {\n    __extends(Sigmoid, _super);\n    function Sigmoid() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Sigmoid.prototype.apply = function (x) {\n        return tfc.sigmoid(x);\n    };\n    Sigmoid.className = 'sigmoid';\n    return Sigmoid;\n}(Activation));\nexports.Sigmoid = Sigmoid;\ntfjs_core_1.serialization.SerializationMap.register(Sigmoid);\nvar HardSigmoid = (function (_super) {\n    __extends(HardSigmoid, _super);\n    function HardSigmoid() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    HardSigmoid.prototype.apply = function (x) {\n        return K.hardSigmoid(x);\n    };\n    HardSigmoid.className = 'hardSigmoid';\n    return HardSigmoid;\n}(Activation));\nexports.HardSigmoid = HardSigmoid;\ntfjs_core_1.serialization.SerializationMap.register(HardSigmoid);\nvar Softplus = (function (_super) {\n    __extends(Softplus, _super);\n    function Softplus() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Softplus.prototype.apply = function (x) {\n        return tfc.softplus(x);\n    };\n    Softplus.className = 'softplus';\n    return Softplus;\n}(Activation));\nexports.Softplus = Softplus;\ntfjs_core_1.serialization.SerializationMap.register(Softplus);\nvar Softsign = (function (_super) {\n    __extends(Softsign, _super);\n    function Softsign() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Softsign.prototype.apply = function (x) {\n        return K.softsign(x);\n    };\n    Softsign.className = 'softsign';\n    return Softsign;\n}(Activation));\nexports.Softsign = Softsign;\ntfjs_core_1.serialization.SerializationMap.register(Softsign);\nvar Tanh = (function (_super) {\n    __extends(Tanh, _super);\n    function Tanh() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Tanh.prototype.apply = function (x) {\n        return tfc.tanh(x);\n    };\n    Tanh.className = 'tanh';\n    return Tanh;\n}(Activation));\nexports.Tanh = Tanh;\ntfjs_core_1.serialization.SerializationMap.register(Tanh);\nvar Softmax = (function (_super) {\n    __extends(Softmax, _super);\n    function Softmax() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Softmax.prototype.apply = function (x, axis) {\n        if (axis === void 0) { axis = (-1); }\n        return tfc.softmax(x, axis);\n    };\n    Softmax.className = 'softmax';\n    return Softmax;\n}(Activation));\nexports.Softmax = Softmax;\ntfjs_core_1.serialization.SerializationMap.register(Softmax);\nfunction serializeActivation(activation) {\n    return activation.getClassName();\n}\nexports.serializeActivation = serializeActivation;\nfunction deserializeActivation(config, customObjects) {\n    if (customObjects === void 0) { customObjects = {}; }\n    return generic_utils_1.deserializeKerasObject(config, tfjs_core_1.serialization.SerializationMap.getMap().classNameMap, customObjects, 'activation');\n}\nexports.deserializeActivation = deserializeActivation;\nfunction getActivation(identifier) {\n    if (identifier == null) {\n        var config = { className: 'linear', config: {} };\n        return deserializeActivation(config);\n    }\n    if (typeof identifier === 'string') {\n        var config = { className: identifier, config: {} };\n        return deserializeActivation(config);\n    }\n    else if (identifier instanceof Activation) {\n        return identifier;\n    }\n    else {\n        return deserializeActivation(identifier);\n    }\n}\nexports.getActivation = getActivation;\n\n},{\"./backend/state\":185,\"./backend/tfjs_backend\":186,\"./utils/generic_utils\":224,\"@tensorflow/tfjs-core\":59}],184:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _epsilon = 1e-7;\nfunction epsilon() {\n    return _epsilon;\n}\nexports.epsilon = epsilon;\nfunction setEpsilon(e) {\n    _epsilon = e;\n}\nexports.setEpsilon = setEpsilon;\nfunction imageDataFormat() {\n    return 'channelsLast';\n}\nexports.imageDataFormat = imageDataFormat;\n\n},{}],185:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar _nextUniqueTensorId = 0;\nfunction getNextUniqueTensorId() {\n    return _nextUniqueTensorId++;\n}\nexports.getNextUniqueTensorId = getNextUniqueTensorId;\nvar _uidPrefixes = {};\nfunction getUid(prefix) {\n    if (prefix === void 0) { prefix = ''; }\n    if (!(prefix in _uidPrefixes)) {\n        _uidPrefixes[prefix] = 0;\n    }\n    _uidPrefixes[prefix] += 1;\n    return prefix + _uidPrefixes[prefix].toString();\n}\nexports.getUid = getUid;\nvar scalarCache = {\n    float32: {},\n    int32: {}\n};\nvar DEFAULT_DTYPE = 'float32';\nfunction getScalar(value, dtype) {\n    if (dtype === undefined) {\n        dtype = DEFAULT_DTYPE;\n    }\n    if (scalarCache[dtype][value] == null) {\n        scalarCache[dtype][value] = tfjs_core_1.scalar(value, dtype);\n        tfjs_core_1.keep(scalarCache[dtype][value]);\n    }\n    return scalarCache[dtype][value];\n}\nexports.getScalar = getScalar;\nfunction disposeScalarCache() {\n    for (var typeKey in scalarCache) {\n        for (var key in scalarCache[typeKey]) {\n            scalarCache[typeKey][key].dispose();\n            delete scalarCache[typeKey][key];\n        }\n    }\n}\nexports.disposeScalarCache = disposeScalarCache;\n\n},{\"@tensorflow/tfjs-core\":59}],186:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfc = require(\"@tensorflow/tfjs-core\");\nvar tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar state_1 = require(\"../backend/state\");\nvar common_1 = require(\"../common\");\nvar errors_1 = require(\"../errors\");\nvar math_utils = require(\"../utils/math_utils\");\nvar common_2 = require(\"./common\");\nvar backend = 'webgl';\nfunction setBackend(requestedBackend) {\n    tfc.setBackend(requestedBackend);\n    backend = requestedBackend;\n    state_1.disposeScalarCache();\n}\nexports.setBackend = setBackend;\nfunction getBackend() {\n    return backend;\n}\nexports.getBackend = getBackend;\nfunction isBackendSymbolic() {\n    return false;\n}\nexports.isBackendSymbolic = isBackendSymbolic;\nfunction countParams(x) {\n    var shape = x.shape;\n    if (shape.length > 0) {\n        return shape.reduce(function (a, b) { return a * b; });\n    }\n    else {\n        return 1;\n    }\n}\nexports.countParams = countParams;\nfunction cast(x, dtype) {\n    return x.asType(dtype);\n}\nexports.cast = cast;\nfunction expandDims(x, axis) {\n    if (axis === void 0) { axis = -1; }\n    var outShape = x.shape.slice();\n    if (axis < 0) {\n        axis = outShape.length + axis + 1;\n    }\n    outShape.splice(axis, 0, 1);\n    return x.reshape(outShape);\n}\nexports.expandDims = expandDims;\nfunction repeat(x, n) {\n    return tfjs_core_1.tidy(function () {\n        if (x.shape.length !== 2) {\n            throw new errors_1.ValueError(\"repeat() expects a rank-2 tensor, but received a \" +\n                (\"rank-\" + x.shape.length + \" tensor.\"));\n        }\n        var y = expandDims(x, 1);\n        return tile(y, [1, n, 1]);\n    });\n}\nexports.repeat = repeat;\nfunction flatten(x) {\n    var newShape = [math_utils.arrayProd(x.shape)];\n    return x.reshape(newShape);\n}\nexports.flatten = flatten;\nfunction batchFlatten(x) {\n    if (x.rank <= 1) {\n        throw new errors_1.ValueError(\"batchFlatten requires a minimum rank of 2. Got rank: \" + x.rank + \".\");\n    }\n    var newShape = [x.shape[0], math_utils.arrayProd(x.shape, 1)];\n    return x.reshape(newShape);\n}\nexports.batchFlatten = batchFlatten;\nfunction sliceAlongFirstAxis(array, start, size) {\n    return tfjs_core_1.tidy(function () {\n        switch (array.rank) {\n            case 1:\n                return tfc.slice1d(array, start, size);\n            case 2:\n                return tfc.slice2d(array, [start, 0], [size, array.shape[1]]);\n            case 3:\n                return tfc.slice3d(array, [start, 0, 0], [size, array.shape[1], array.shape[2]]);\n            case 4:\n                return tfc.slice4d(array, [start, 0, 0, 0], [size, array.shape[1], array.shape[2], array.shape[3]]);\n            default:\n                throw new errors_1.ValueError(\"sliceAlongFirstAxis() received an unsupported tensor rank: \" +\n                    (\"\" + array.rank));\n        }\n    });\n}\nexports.sliceAlongFirstAxis = sliceAlongFirstAxis;\nfunction sliceAlongLastAxis(array, start, size) {\n    return tfjs_core_1.tidy(function () {\n        switch (array.rank) {\n            case 1:\n                return tfc.slice1d(array, start, size);\n            case 2:\n                return tfc.slice2d(array, [0, start], [array.shape[0], size]);\n            case 3:\n                return tfc.slice3d(array, [0, 0, start], [array.shape[0], array.shape[1], size]);\n            case 4:\n                return tfc.slice4d(array, [0, 0, 0, start], [array.shape[0], array.shape[1], array.shape[2], size]);\n            default:\n                throw new errors_1.ValueError(\"sliceAlongLastAxis() received an unsupported tensor rank: \" +\n                    (\"\" + array.rank));\n        }\n    });\n}\nexports.sliceAlongLastAxis = sliceAlongLastAxis;\nfunction sliceAlongAxis(array, start, size, axis) {\n    return tfjs_core_1.tidy(function () {\n        switch (array.rank) {\n            case 1:\n                return tfc.slice1d(array, start, size);\n            case 2:\n                switch (axis) {\n                    case 1:\n                        return sliceAlongFirstAxis(array, start, size);\n                    case 2:\n                        return sliceAlongLastAxis(array, start, size);\n                    default:\n                        throw new errors_1.ValueError(\"The axis is not within the rank of the tensor \" +\n                            (\"\" + axis));\n                }\n            case 3:\n                switch (axis) {\n                    case 1:\n                        return sliceAlongFirstAxis(array, start, size);\n                    case 2:\n                        return tfc.slice3d(array, [0, start, 0], [array.shape[0], size, array.shape[2]]);\n                    case 3:\n                        return sliceAlongLastAxis(array, start, size);\n                    default:\n                        throw new errors_1.ValueError(\"The axis is not within the rank of the tensor \" +\n                            (\"\" + axis));\n                }\n            case 4:\n                switch (axis) {\n                    case 1:\n                        return sliceAlongFirstAxis(array, start, size);\n                    case 2:\n                        return tfc.slice4d(array, [0, start, 0, 0], [array.shape[0], size, array.shape[2], array.shape[3]]);\n                    case 3:\n                        return tfc.slice4d(array, [0, 0, start, 0], [array.shape[0], array.shape[1], size, array.shape[3]]);\n                    case 4:\n                        return sliceAlongLastAxis(array, start, size);\n                    default:\n                        throw new errors_1.ValueError(\"The axis is not within the rank of the tensor \" +\n                            (\"\" + axis));\n                }\n            default:\n                throw new errors_1.ValueError(\"sliceAlongLastAxis() received an unsupported tensor rank: \" +\n                    (\"\" + array.rank));\n        }\n    });\n}\nexports.sliceAlongAxis = sliceAlongAxis;\nfunction concatenate(tensors, axis) {\n    if (axis === void 0) { axis = -1; }\n    var rank;\n    if (axis < 0) {\n        rank = tensors[0].rank;\n        if (rank !== 0) {\n            axis = rank;\n        }\n        else {\n            axis = 0;\n        }\n    }\n    if (axis === tensors[0].rank) {\n        axis = -1;\n    }\n    return tfc.concat(tensors, axis);\n}\nexports.concatenate = concatenate;\nfunction concatAlongFirstAxis(a, b) {\n    switch (a.rank) {\n        case 1:\n            return tfc.concat1d([a, b]);\n        case 2:\n            return tfc.concat2d([a, b], 0);\n        case 3:\n            return tfc.concat3d([a, b], 0);\n        case 4:\n            return tfc.concat4d([a, b], 0);\n        default:\n            throw new errors_1.ValueError('concatAlongFirstAxis() received an unsupported tensor rank: ' +\n                a.rank);\n    }\n}\nexports.concatAlongFirstAxis = concatAlongFirstAxis;\nfunction tile(x, n) {\n    if (!Array.isArray(n)) {\n        n = [n];\n    }\n    if (x.rank !== n.length) {\n        throw new errors_1.ValueError(\"The length of input n (\" + n.length + \") does not match \" +\n            (\"the number of dimensions in input x (\" + x.rank + \")\"));\n    }\n    return tfc.tile(x, n);\n}\nexports.tile = tile;\nfunction randomNormal(shape, mean, stddev, dtype, seed) {\n    if (mean === void 0) { mean = 0.0; }\n    if (stddev === void 0) { stddev = 1.0; }\n    return tfc.randomNormal(shape, mean, stddev, dtype, seed);\n}\nexports.randomNormal = randomNormal;\nfunction dot(x, y) {\n    if (y.rank !== 2) {\n        throw new errors_1.NotImplementedError(\"dot support for y other than rank 2 is not yet implemented: \" +\n            (\"y shape = \" + y.shape));\n    }\n    else {\n        if (x.rank === 2) {\n            return tfc.matMul(x, y);\n        }\n        else if (x.rank === 3) {\n            var xShape0 = x.shape[0];\n            var xShape1 = x.shape[1];\n            var xShape2 = x.shape[2];\n            x = x.reshape([xShape0 * xShape1, xShape2]);\n            return tfc.matMul(x, y).reshape([\n                xShape0, xShape1, y.shape[1]\n            ]);\n        }\n        else {\n            throw new errors_1.NotImplementedError(\"dot support for x of rank \" + x.rank + \" is not yet implemented: \" +\n                (\"x shape = \" + x.shape));\n        }\n    }\n}\nexports.dot = dot;\nfunction sign(x) {\n    return tfjs_core_1.tidy(function () {\n        var zerosLikeX = tfjs_core_1.zerosLike(x);\n        var onesLikeX = tfjs_core_1.onesLike(x);\n        return tfjs_core_1.where(tfc.equal(x, zerosLikeX), zerosLikeX, tfjs_core_1.where(tfc.greater(x, tfjs_core_1.zerosLike(x)), onesLikeX, tfc.mul(state_1.getScalar(-1), onesLikeX)));\n    });\n}\nexports.sign = sign;\nfunction oneHot(indices, numClasses) {\n    return tfjs_core_1.tidy(function () {\n        if (indices.rank !== 1) {\n            throw new Error('Only 1D one-hot tensors are supported in the ' +\n                'deeplearn backend, at present.');\n        }\n        indices = indices.toInt();\n        return tfc.oneHot(indices, numClasses).toFloat();\n    });\n}\nexports.oneHot = oneHot;\nfunction gather(reference, indices, axis) {\n    return tfjs_core_1.tidy(function () {\n        if (Array.isArray(indices)) {\n            indices = tfjs_core_1.tensor1d(indices, 'int32');\n        }\n        else {\n            indices = indices.toInt();\n        }\n        return tfc.gather(reference, indices, axis);\n    });\n}\nexports.gather = gather;\nfunction square(x) {\n    return tfc.mulStrict(x, x);\n}\nexports.square = square;\nfunction pow(x, a) {\n    return tfjs_core_1.tidy(function () {\n        if (typeof (a) === 'number') {\n            a = tfjs_core_1.scalar(Math.round(a), 'int32');\n        }\n        if (a.dtype !== 'int32') {\n            throw new errors_1.NotImplementedError(\"Non-int32 dtype (\" + a.dtype + \") is not supported by pow() yet\");\n        }\n        return tfc.pow(x, a);\n    });\n}\nexports.pow = pow;\nfunction biasAdd(x, bias, dataFormat) {\n    return tfjs_core_1.tidy(function () {\n        if (dataFormat == null) {\n            dataFormat = common_2.imageDataFormat();\n        }\n        common_1.checkDataFormat(dataFormat);\n        if (bias.rank !== 1 && bias.rank !== x.rank) {\n            throw new errors_1.ValueError('Unexpected bias dimensions: ' + bias.rank +\n                '; expected it to be 1 or ' + x.rank);\n        }\n        var biasShape = bias.shape;\n        var y;\n        if (x.rank === 5) {\n            if (dataFormat === 'channelsFirst') {\n                if (biasShape.length === 1) {\n                    y = x.add(bias.reshape([1, biasShape[0], 1, 1, 1]));\n                }\n                else {\n                    y = x.add(bias.reshape([1, biasShape[3], biasShape[0], biasShape[1], biasShape[2]]));\n                }\n            }\n            else if (dataFormat === 'channelsLast') {\n                if (biasShape.length === 1) {\n                    y = x.add(bias.reshape([1, 1, 1, 1, biasShape[0]]));\n                }\n                else {\n                    y = x.add(bias.reshape([1].concat(biasShape)));\n                }\n            }\n        }\n        else if (x.rank === 4) {\n            if (dataFormat === 'channelsFirst') {\n                if (biasShape.length === 1) {\n                    y = x.add(bias.reshape([1, biasShape[0], 1, 1]));\n                }\n                else {\n                    y = x.add(bias.reshape([1, biasShape[2], biasShape[0], biasShape[1]]));\n                }\n            }\n            else if (dataFormat === 'channelsLast') {\n                if (biasShape.length === 1) {\n                    y = x.add(bias.reshape([1, 1, 1, biasShape[0]]));\n                }\n                else {\n                    y = x.add(bias.reshape([1].concat(biasShape)));\n                }\n            }\n        }\n        else if (x.rank === 3) {\n            if (dataFormat === 'channelsFirst') {\n                if (biasShape.length === 1) {\n                    y = x.add(bias.reshape([1, biasShape[0], 1]));\n                }\n                else {\n                    y = x.add(bias.reshape([1, biasShape[1], biasShape[0]]));\n                }\n            }\n            else if (dataFormat === 'channelsLast') {\n                if (biasShape.length === 1) {\n                    y = x.add(bias.reshape([1, 1, biasShape[0]]));\n                }\n                else {\n                    y = x.add(bias.reshape([1].concat(biasShape)));\n                }\n            }\n        }\n        else if (x.rank < 3) {\n            y = x.add(bias);\n        }\n        else {\n            throw new errors_1.ValueError(\"Unsupported input rank by biasAdd: \" + x.rank);\n        }\n        return y;\n    });\n}\nexports.biasAdd = biasAdd;\nfunction elu(x, alpha) {\n    if (alpha === void 0) { alpha = 1; }\n    if (alpha !== 1) {\n        throw new errors_1.NotImplementedError(\"Support for alpha values other than 1 (\" + alpha + \") is not implemented \" +\n            \"yet.\");\n    }\n    return tfc.elu(x);\n}\nexports.elu = elu;\nfunction softsign(x) {\n    return tfjs_core_1.tidy(function () { return tfc.div(x, tfc.add(state_1.getScalar(1), tfc.abs(x))); });\n}\nexports.softsign = softsign;\nfunction dropout(x, level, noiseShape, seed) {\n    return tfjs_core_1.tidy(function () {\n        if (noiseShape != null && !tfjs_core_1.util.arraysEqual(x.shape, noiseShape)) {\n            throw new errors_1.NotImplementedError('Non-default noise shape is not implemented yet: ' +\n                JSON.stringify(noiseShape));\n        }\n        if (seed != null) {\n            throw new errors_1.NotImplementedError('seed is not implemented for dropout yet.');\n        }\n        var multiplier = tfc.step(tfc.add(tfc.neg(level), tfc.randomUniform(x.shape, 0, 1, 'float32')));\n        multiplier = tfc.mul(tfc.div(state_1.getScalar(1), tfc.sub(state_1.getScalar(1), level)), multiplier);\n        return tfc.mul(x, multiplier);\n    });\n}\nexports.dropout = dropout;\nfunction hardSigmoid(x) {\n    return tfjs_core_1.tidy(function () {\n        var y = tfc.add(state_1.getScalar(0.5), tfc.mul(state_1.getScalar(0.2), x));\n        return tfc.clipByValue(y, 0, 1);\n    });\n}\nexports.hardSigmoid = hardSigmoid;\nfunction inTrainPhase(x, alt, training) {\n    if (training === void 0) { training = false; }\n    return training ? x() : alt();\n}\nexports.inTrainPhase = inTrainPhase;\n\n},{\"../backend/state\":185,\"../common\":189,\"../errors\":196,\"../utils/math_utils\":226,\"./common\":184,\"@tensorflow/tfjs-core\":59}],187:[function(require,module,exports){\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 tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar state_1 = require(\"./backend/state\");\nvar logs_1 = require(\"./logs\");\nvar generic_utils = require(\"./utils/generic_utils\");\nvar BaseCallback = (function () {\n    function BaseCallback() {\n        this.validationData = null;\n    }\n    BaseCallback.prototype.setParams = function (params) {\n        this.params = params;\n    };\n    BaseCallback.prototype.onEpochBegin = function (epoch, logs) {\n        return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {\n            return [2];\n        }); });\n    };\n    BaseCallback.prototype.onEpochEnd = function (epoch, logs) {\n        return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {\n            return [2];\n        }); });\n    };\n    BaseCallback.prototype.onBatchBegin = function (batch, logs) {\n        return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {\n            return [2];\n        }); });\n    };\n    BaseCallback.prototype.onBatchEnd = function (batch, logs) {\n        return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {\n            return [2];\n        }); });\n    };\n    BaseCallback.prototype.onTrainBegin = function (logs) {\n        return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {\n            return [2];\n        }); });\n    };\n    BaseCallback.prototype.onTrainEnd = function (logs) {\n        return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {\n            return [2];\n        }); });\n    };\n    BaseCallback.prototype.setModel = function (model) {\n    };\n    return BaseCallback;\n}());\nexports.BaseCallback = BaseCallback;\nvar CallbackList = (function () {\n    function CallbackList(callbacks, queueLength) {\n        if (queueLength === void 0) { queueLength = 10; }\n        if (callbacks == null) {\n            callbacks = [];\n        }\n        this.callbacks = callbacks;\n        this.queueLength = queueLength;\n    }\n    CallbackList.prototype.append = function (callback) {\n        this.callbacks.push(callback);\n    };\n    CallbackList.prototype.setParams = function (params) {\n        for (var _i = 0, _a = this.callbacks; _i < _a.length; _i++) {\n            var callback = _a[_i];\n            callback.setParams(params);\n        }\n    };\n    CallbackList.prototype.setModel = function (model) {\n        for (var _i = 0, _a = this.callbacks; _i < _a.length; _i++) {\n            var callback = _a[_i];\n            callback.setModel(model);\n        }\n    };\n    CallbackList.prototype.onEpochBegin = function (epoch, logs) {\n        return __awaiter(this, void 0, void 0, function () {\n            var _i, _a, callback;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        if (logs == null) {\n                            logs = {};\n                        }\n                        _i = 0, _a = this.callbacks;\n                        _b.label = 1;\n                    case 1:\n                        if (!(_i < _a.length)) return [3, 4];\n                        callback = _a[_i];\n                        return [4, callback.onEpochBegin(epoch, logs)];\n                    case 2:\n                        _b.sent();\n                        _b.label = 3;\n                    case 3:\n                        _i++;\n                        return [3, 1];\n                    case 4: return [2];\n                }\n            });\n        });\n    };\n    CallbackList.prototype.onEpochEnd = function (epoch, logs) {\n        return __awaiter(this, void 0, void 0, function () {\n            var _i, _a, callback;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        if (logs == null) {\n                            logs = {};\n                        }\n                        _i = 0, _a = this.callbacks;\n                        _b.label = 1;\n                    case 1:\n                        if (!(_i < _a.length)) return [3, 4];\n                        callback = _a[_i];\n                        return [4, callback.onEpochEnd(epoch, logs)];\n                    case 2:\n                        _b.sent();\n                        _b.label = 3;\n                    case 3:\n                        _i++;\n                        return [3, 1];\n                    case 4: return [2];\n                }\n            });\n        });\n    };\n    CallbackList.prototype.onBatchBegin = function (batch, logs) {\n        return __awaiter(this, void 0, void 0, function () {\n            var _i, _a, callback;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        if (logs == null) {\n                            logs = {};\n                        }\n                        _i = 0, _a = this.callbacks;\n                        _b.label = 1;\n                    case 1:\n                        if (!(_i < _a.length)) return [3, 4];\n                        callback = _a[_i];\n                        return [4, callback.onBatchBegin(batch, logs)];\n                    case 2:\n                        _b.sent();\n                        _b.label = 3;\n                    case 3:\n                        _i++;\n                        return [3, 1];\n                    case 4: return [2];\n                }\n            });\n        });\n    };\n    CallbackList.prototype.onBatchEnd = function (batch, logs) {\n        return __awaiter(this, void 0, void 0, function () {\n            var _i, _a, callback;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        if (logs == null) {\n                            logs = {};\n                        }\n                        _i = 0, _a = this.callbacks;\n                        _b.label = 1;\n                    case 1:\n                        if (!(_i < _a.length)) return [3, 4];\n                        callback = _a[_i];\n                        return [4, callback.onBatchEnd(batch, logs)];\n                    case 2:\n                        _b.sent();\n                        _b.label = 3;\n                    case 3:\n                        _i++;\n                        return [3, 1];\n                    case 4: return [2];\n                }\n            });\n        });\n    };\n    CallbackList.prototype.onTrainBegin = function (logs) {\n        return __awaiter(this, void 0, void 0, function () {\n            var _i, _a, callback;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        if (logs == null) {\n                            logs = {};\n                        }\n                        _i = 0, _a = this.callbacks;\n                        _b.label = 1;\n                    case 1:\n                        if (!(_i < _a.length)) return [3, 4];\n                        callback = _a[_i];\n                        return [4, callback.onTrainBegin(logs)];\n                    case 2:\n                        _b.sent();\n                        _b.label = 3;\n                    case 3:\n                        _i++;\n                        return [3, 1];\n                    case 4: return [2];\n                }\n            });\n        });\n    };\n    CallbackList.prototype.onTrainEnd = function (logs) {\n        return __awaiter(this, void 0, void 0, function () {\n            var _i, _a, callback;\n            return __generator(this, function (_b) {\n                switch (_b.label) {\n                    case 0:\n                        if (logs == null) {\n                            logs = {};\n                        }\n                        _i = 0, _a = this.callbacks;\n                        _b.label = 1;\n                    case 1:\n                        if (!(_i < _a.length)) return [3, 4];\n                        callback = _a[_i];\n                        return [4, callback.onTrainEnd(logs)];\n                    case 2:\n                        _b.sent();\n                        _b.label = 3;\n                    case 3:\n                        _i++;\n                        return [3, 1];\n                    case 4: return [2];\n                }\n            });\n        });\n    };\n    return CallbackList;\n}());\nexports.CallbackList = CallbackList;\nvar BaseLogger = (function (_super) {\n    __extends(BaseLogger, _super);\n    function BaseLogger() {\n        return _super.call(this) || this;\n    }\n    BaseLogger.prototype.onEpochBegin = function (epoch, logs) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                this.seen = 0;\n                this.totals = {};\n                return [2];\n            });\n        });\n    };\n    BaseLogger.prototype.onBatchEnd = function (batch, logs) {\n        return __awaiter(this, void 0, void 0, function () {\n            var _this = this;\n            var batchSize, _loop_1, this_1, key;\n            return __generator(this, function (_a) {\n                if (logs == null) {\n                    logs = {};\n                }\n                batchSize = logs['size'] == null ? 0 : logs['size'];\n                this.seen += batchSize;\n                _loop_1 = function (key) {\n                    var value = logs[key];\n                    if (typeof value === 'number') {\n                        if (!this_1.totals.hasOwnProperty(key)) {\n                            this_1.totals[key] = 0;\n                        }\n                        this_1.totals[key] = this_1.totals[key] + value * batchSize;\n                    }\n                    else {\n                        var oldTotalsToDispose = void 0;\n                        if (key in this_1.totals) {\n                            oldTotalsToDispose = this_1.totals[key];\n                        }\n                        else {\n                            this_1.totals[key] = state_1.getScalar(0);\n                        }\n                        this_1.totals[key] = tfjs_core_1.tidy(function () { return tfjs_core_1.add(_this.totals[key], tfjs_core_1.mul(value, state_1.getScalar(batchSize))); });\n                        if (oldTotalsToDispose != null) {\n                            oldTotalsToDispose.dispose();\n                        }\n                    }\n                };\n                this_1 = this;\n                for (key in logs) {\n                    _loop_1(key);\n                }\n                return [2];\n            });\n        });\n    };\n    BaseLogger.prototype.onEpochEnd = function (epoch, logs) {\n        return __awaiter(this, void 0, void 0, function () {\n            var _this = this;\n            var _loop_2, this_2, _i, _a, key;\n            return __generator(this, function (_b) {\n                if (logs != null) {\n                    _loop_2 = function (key) {\n                        if (this_2.totals[key] == null) {\n                            return \"continue\";\n                        }\n                        if (typeof this_2.totals[key] === 'number') {\n                            logs[key] = this_2.totals[key] / this_2.seen;\n                        }\n                        else {\n                            tfjs_core_1.tidy(function () {\n                                logs[key] = tfjs_core_1.mul(tfjs_core_1.div(state_1.getScalar(1), state_1.getScalar(_this.seen)), _this.totals[key]);\n                                _this.totals[key].dispose();\n                                tfjs_core_1.keep(logs[key]);\n                            });\n                        }\n                    };\n                    this_2 = this;\n                    for (_i = 0, _a = this.params['metrics']; _i < _a.length; _i++) {\n                        key = _a[_i];\n                        _loop_2(key);\n                    }\n                }\n                return [2];\n            });\n        });\n    };\n    return BaseLogger;\n}(BaseCallback));\nexports.BaseLogger = BaseLogger;\nvar History = (function (_super) {\n    __extends(History, _super);\n    function History() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    History.prototype.onTrainBegin = function (logs) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                this.epoch = [];\n                this.history = {};\n                return [2];\n            });\n        });\n    };\n    History.prototype.onEpochEnd = function (epoch, logs) {\n        return __awaiter(this, void 0, void 0, function () {\n            var key;\n            return __generator(this, function (_a) {\n                if (logs == null) {\n                    logs = {};\n                }\n                this.epoch.push(epoch);\n                for (key in logs) {\n                    if (this.history[key] == null) {\n                        this.history[key] = [];\n                    }\n                    this.history[key].push(logs[key]);\n                }\n                return [2];\n            });\n        });\n    };\n    History.prototype.syncData = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var promises, keys, indices, key, valueArray, i, valueScalar, values, n, tensorToDispose;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        promises = [];\n                        keys = [];\n                        indices = [];\n                        for (key in this.history) {\n                            valueArray = this.history[key];\n                            for (i = 0; i < valueArray.length; ++i) {\n                                if (typeof valueArray[i] !== 'number') {\n                                    valueScalar = valueArray[i];\n                                    promises.push(valueScalar.data());\n                                    keys.push(key);\n                                    indices.push(i);\n                                }\n                            }\n                        }\n                        return [4, Promise.all(promises)];\n                    case 1:\n                        values = _a.sent();\n                        for (n = 0; n < values.length; ++n) {\n                            tensorToDispose = this.history[keys[n]][indices[n]];\n                            tensorToDispose.dispose();\n                            this.history[keys[n]][indices[n]] = values[n][0];\n                        }\n                        return [2];\n                }\n            });\n        });\n    };\n    return History;\n}(BaseCallback));\nexports.History = History;\nvar CustomCallback = (function (_super) {\n    __extends(CustomCallback, _super);\n    function CustomCallback(config) {\n        var _this = _super.call(this) || this;\n        _this.trainBegin = config.onTrainBegin;\n        _this.trainEnd = config.onTrainEnd;\n        _this.epochBegin = config.onEpochBegin;\n        _this.epochEnd = config.onEpochEnd;\n        _this.batchBegin = config.onBatchBegin;\n        _this.batchEnd = config.onBatchEnd;\n        return _this;\n    }\n    CustomCallback.prototype.onEpochBegin = function (epoch, logs) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (!(this.epochBegin != null)) return [3, 3];\n                        return [4, logs_1.resolveScalarsInLogs(logs)];\n                    case 1:\n                        _a.sent();\n                        return [4, this.epochBegin(epoch, logs)];\n                    case 2:\n                        _a.sent();\n                        _a.label = 3;\n                    case 3: return [2];\n                }\n            });\n        });\n    };\n    CustomCallback.prototype.onEpochEnd = function (epoch, logs) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (!(this.epochEnd != null)) return [3, 3];\n                        return [4, logs_1.resolveScalarsInLogs(logs)];\n                    case 1:\n                        _a.sent();\n                        return [4, this.epochEnd(epoch, logs)];\n                    case 2:\n                        _a.sent();\n                        _a.label = 3;\n                    case 3: return [2];\n                }\n            });\n        });\n    };\n    CustomCallback.prototype.onBatchBegin = function (batch, logs) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (!(this.batchBegin != null)) return [3, 3];\n                        return [4, logs_1.resolveScalarsInLogs(logs)];\n                    case 1:\n                        _a.sent();\n                        return [4, this.batchBegin(batch, logs)];\n                    case 2:\n                        _a.sent();\n                        _a.label = 3;\n                    case 3: return [2];\n                }\n            });\n        });\n    };\n    CustomCallback.prototype.onBatchEnd = function (batch, logs) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (!(this.batchEnd != null)) return [3, 3];\n                        return [4, logs_1.resolveScalarsInLogs(logs)];\n                    case 1:\n                        _a.sent();\n                        return [4, this.batchEnd(batch, logs)];\n                    case 2:\n                        _a.sent();\n                        _a.label = 3;\n                    case 3: return [2];\n                }\n            });\n        });\n    };\n    CustomCallback.prototype.onTrainBegin = function (logs) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (!(this.trainBegin != null)) return [3, 3];\n                        return [4, logs_1.resolveScalarsInLogs(logs)];\n                    case 1:\n                        _a.sent();\n                        return [4, this.trainBegin(logs)];\n                    case 2:\n                        _a.sent();\n                        _a.label = 3;\n                    case 3: return [2];\n                }\n            });\n        });\n    };\n    CustomCallback.prototype.onTrainEnd = function (logs) {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (!(this.trainEnd != null)) return [3, 3];\n                        return [4, logs_1.resolveScalarsInLogs(logs)];\n                    case 1:\n                        _a.sent();\n                        return [4, this.trainEnd(logs)];\n                    case 2:\n                        _a.sent();\n                        _a.label = 3;\n                    case 3: return [2];\n                }\n            });\n        });\n    };\n    return CustomCallback;\n}(BaseCallback));\nexports.CustomCallback = CustomCallback;\nfunction standardizeCallbacks(callbacks) {\n    if (callbacks == null) {\n        return null;\n    }\n    if (callbacks instanceof BaseCallback) {\n        return [callbacks];\n    }\n    if (Array.isArray(callbacks) && callbacks[0] instanceof BaseCallback) {\n        return callbacks;\n    }\n    var callbackConfigs = generic_utils.toList(callbacks);\n    return callbackConfigs.map(function (callbackConfig) { return new CustomCallback(callbackConfig); });\n}\nexports.standardizeCallbacks = standardizeCallbacks;\n\n},{\"./backend/state\":185,\"./logs\":217,\"./utils/generic_utils\":224,\"@tensorflow/tfjs-core\":59}],188:[function(require,module,exports){\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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar base_callbacks_1 = require(\"./base_callbacks\");\nvar training_1 = require(\"./engine/training\");\nvar Callback = (function (_super) {\n    __extends(Callback, _super);\n    function Callback() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.model = null;\n        return _this;\n    }\n    Callback.prototype.setModel = function (model) {\n        if (!(model instanceof training_1.Model)) {\n            throw new Error('model must be a Model, not some other Container');\n        }\n        this.model = model;\n    };\n    return Callback;\n}(base_callbacks_1.BaseCallback));\nexports.Callback = Callback;\n\n},{\"./base_callbacks\":187,\"./engine/training\":195}],189:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar generic_utils_1 = require(\"./utils/generic_utils\");\nvar nameMap = new Map();\nexports.VALID_DATA_FORMAT_VALUES = ['channelsFirst', 'channelsLast'];\nfunction checkDataFormat(value) {\n    generic_utils_1.checkStringTypeUnionValue(exports.VALID_DATA_FORMAT_VALUES, 'DataFormat', value);\n}\nexports.checkDataFormat = checkDataFormat;\nexports.VALID_PADDING_MODE_VALUES = ['valid', 'same', 'causal'];\nfunction checkPaddingMode(value) {\n    generic_utils_1.checkStringTypeUnionValue(exports.VALID_PADDING_MODE_VALUES, 'PaddingMode', value);\n}\nexports.checkPaddingMode = checkPaddingMode;\nexports.VALID_POOL_MODE_VALUES = ['max', 'avg'];\nfunction checkPoolMode(value) {\n    generic_utils_1.checkStringTypeUnionValue(exports.VALID_POOL_MODE_VALUES, 'PoolMode', value);\n}\nexports.checkPoolMode = checkPoolMode;\nvar _nameScopeStack = [];\nvar _nameScopeDivider = '/';\nfunction nameScope(name, fn) {\n    _nameScopeStack.push(name);\n    try {\n        var val = fn();\n        _nameScopeStack.pop();\n        return val;\n    }\n    catch (e) {\n        _nameScopeStack.pop();\n        throw e;\n    }\n}\nexports.nameScope = nameScope;\nfunction currentNameScopePrefix() {\n    if (_nameScopeStack.length === 0) {\n        return '';\n    }\n    else {\n        return _nameScopeStack.join(_nameScopeDivider) + _nameScopeDivider;\n    }\n}\nfunction getScopedTensorName(tensorName) {\n    if (!isValidTensorName(tensorName)) {\n        throw new Error('Not a valid tensor name: \\'' + tensorName + '\\'');\n    }\n    return currentNameScopePrefix() + tensorName;\n}\nexports.getScopedTensorName = getScopedTensorName;\nfunction getUniqueTensorName(scopedName) {\n    if (!isValidTensorName(scopedName)) {\n        throw new Error('Not a valid tensor name: \\'' + scopedName + '\\'');\n    }\n    if (!nameMap.has(scopedName)) {\n        nameMap.set(scopedName, 0);\n    }\n    var index = nameMap.get(scopedName);\n    nameMap.set(scopedName, nameMap.get(scopedName) + 1);\n    if (index > 0) {\n        var result = scopedName + '_' + index;\n        nameMap.set(result, 1);\n        return result;\n    }\n    else {\n        return scopedName;\n    }\n}\nexports.getUniqueTensorName = getUniqueTensorName;\nvar tensorNameRegex = new RegExp(/^[A-Za-z][A-Za-z0-9\\._\\/]*$/);\nfunction isValidTensorName(name) {\n    return name.match(tensorNameRegex) ? true : false;\n}\nexports.isValidTensorName = isValidTensorName;\n\n},{\"./utils/generic_utils\":224}],190:[function(require,module,exports){\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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfc = require(\"@tensorflow/tfjs-core\");\nvar tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar common_1 = require(\"./backend/common\");\nvar state_1 = require(\"./backend/state\");\nvar generic_utils_1 = require(\"./utils/generic_utils\");\nfunction calcL2Norms(w, axis) {\n    return tfjs_core_1.tidy(function () { return tfc.sqrt(tfc.sum(tfc.mulStrict(w, w), axis, true)); });\n}\nvar Constraint = (function (_super) {\n    __extends(Constraint, _super);\n    function Constraint() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Constraint.prototype.getConfig = function () {\n        return {};\n    };\n    return Constraint;\n}(tfjs_core_1.serialization.Serializable));\nexports.Constraint = Constraint;\nvar MaxNorm = (function (_super) {\n    __extends(MaxNorm, _super);\n    function MaxNorm(config) {\n        var _this = _super.call(this) || this;\n        _this.defaultMaxValue = 2;\n        _this.defaultAxis = 0;\n        _this.maxValue =\n            config.maxValue != null ? config.maxValue : _this.defaultMaxValue;\n        _this.axis = config.axis != null ? config.axis : _this.defaultAxis;\n        return _this;\n    }\n    MaxNorm.prototype.apply = function (w) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            var norms = calcL2Norms(w, _this.axis);\n            var desired = tfc.clipByValue(norms, 0, _this.maxValue);\n            return tfc.mul(w, tfc.div(desired, tfc.add(state_1.getScalar(common_1.epsilon()), norms)));\n        });\n    };\n    MaxNorm.prototype.getConfig = function () {\n        return { maxValue: this.maxValue, axis: this.axis };\n    };\n    MaxNorm.className = 'MaxNorm';\n    return MaxNorm;\n}(Constraint));\nexports.MaxNorm = MaxNorm;\ntfjs_core_1.serialization.SerializationMap.register(MaxNorm);\nvar UnitNorm = (function (_super) {\n    __extends(UnitNorm, _super);\n    function UnitNorm(config) {\n        var _this = _super.call(this) || this;\n        _this.defaultAxis = 0;\n        _this.axis = config.axis != null ? config.axis : _this.defaultAxis;\n        return _this;\n    }\n    UnitNorm.prototype.apply = function (w) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () { return tfc.div(w, tfc.add(state_1.getScalar(common_1.epsilon()), calcL2Norms(w, _this.axis))); });\n    };\n    UnitNorm.prototype.getConfig = function () {\n        return { axis: this.axis };\n    };\n    UnitNorm.className = 'UnitNorm';\n    return UnitNorm;\n}(Constraint));\nexports.UnitNorm = UnitNorm;\ntfjs_core_1.serialization.SerializationMap.register(UnitNorm);\nvar NonNeg = (function (_super) {\n    __extends(NonNeg, _super);\n    function NonNeg() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    NonNeg.prototype.apply = function (w) {\n        return tfc.relu(w);\n    };\n    NonNeg.className = 'NonNeg';\n    return NonNeg;\n}(Constraint));\nexports.NonNeg = NonNeg;\ntfjs_core_1.serialization.SerializationMap.register(NonNeg);\nvar MinMaxNorm = (function (_super) {\n    __extends(MinMaxNorm, _super);\n    function MinMaxNorm(config) {\n        var _this = _super.call(this) || this;\n        _this.defaultMinValue = 0.0;\n        _this.defaultMaxValue = 1.0;\n        _this.defaultRate = 1.0;\n        _this.defaultAxis = 0;\n        _this.minValue =\n            config.minValue != null ? config.minValue : _this.defaultMinValue;\n        _this.maxValue =\n            config.maxValue != null ? config.maxValue : _this.defaultMaxValue;\n        _this.rate = config.rate != null ? config.rate : _this.defaultRate;\n        _this.axis = config.axis != null ? config.axis : _this.defaultAxis;\n        return _this;\n    }\n    MinMaxNorm.prototype.apply = function (w) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            var norms = calcL2Norms(w, _this.axis);\n            var desired = tfc.add(tfc.mul(state_1.getScalar(_this.rate), tfc.clipByValue(norms, _this.minValue, _this.maxValue)), tfc.mul(state_1.getScalar(1.0 - _this.rate), norms));\n            return tfc.mul(w, tfc.div(desired, tfc.add(state_1.getScalar(common_1.epsilon()), norms)));\n        });\n    };\n    MinMaxNorm.prototype.getConfig = function () {\n        return {\n            minValue: this.minValue,\n            maxValue: this.maxValue,\n            rate: this.rate,\n            axis: this.axis\n        };\n    };\n    MinMaxNorm.className = 'MinMaxNorm';\n    return MinMaxNorm;\n}(Constraint));\nexports.MinMaxNorm = MinMaxNorm;\ntfjs_core_1.serialization.SerializationMap.register(MinMaxNorm);\nexports.CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP = {\n    'maxNorm': 'MaxNorm',\n    'minMaxNorm': 'MinMaxNorm',\n    'nonNeg': 'NonNeg',\n    'unitNorm': 'UnitNorm'\n};\nfunction serializeConstraint(constraint) {\n    return generic_utils_1.serializeKerasObject(constraint);\n}\nexports.serializeConstraint = serializeConstraint;\nfunction deserializeConstraint(config, customObjects) {\n    if (customObjects === void 0) { customObjects = {}; }\n    return generic_utils_1.deserializeKerasObject(config, tfjs_core_1.serialization.SerializationMap.getMap().classNameMap, customObjects, 'constraint');\n}\nexports.deserializeConstraint = deserializeConstraint;\nfunction getConstraint(identifier) {\n    if (identifier == null) {\n        return null;\n    }\n    if (typeof identifier === 'string') {\n        var className = identifier in exports.CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP ?\n            exports.CONSTRAINT_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier] :\n            identifier;\n        var config = { className: className, config: {} };\n        return deserializeConstraint(config);\n    }\n    else if (identifier instanceof Constraint) {\n        return identifier;\n    }\n    else {\n        return deserializeConstraint(identifier);\n    }\n}\nexports.getConstraint = getConstraint;\n\n},{\"./backend/common\":184,\"./backend/state\":185,\"./utils/generic_utils\":224,\"@tensorflow/tfjs-core\":59}],191:[function(require,module,exports){\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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar state_1 = require(\"../backend/state\");\nvar errors_1 = require(\"../errors\");\nvar serialization_1 = require(\"../layers/serialization\");\nvar generic_utils = require(\"../utils/generic_utils\");\nvar serialization_utils_1 = require(\"../utils/serialization_utils\");\nvar types_utils = require(\"../utils/types_utils\");\nvar variables_1 = require(\"../variables\");\nvar version_1 = require(\"../version\");\nvar input_layer_1 = require(\"./input_layer\");\nvar topology_1 = require(\"./topology\");\nfunction preprocessWeightsForLoading(layer, weights, originalKerasVersion, originalBackend) {\n    if (!originalKerasVersion.startsWith('2.')) {\n        throw new errors_1.ValueError('Unsupported Keras version in weights being loaded: ' +\n            originalKerasVersion);\n    }\n    return weights;\n}\nfunction loadTensor(dtype, shape, value) {\n    var dataType = generic_utils.stringToDType(dtype);\n    return tfjs_core_1.Tensor.make(shape, { values: shape.length === 0 ? value : tfjs_core_1.util.flatten(value) }, dataType);\n}\nfunction loadWeightsFromJson(weightsJSON, layers, skipMismatch) {\n    if (skipMismatch === void 0) { skipMismatch = false; }\n    var originalKerasVersion = weightsJSON['keras_version'];\n    var originalBackend = weightsJSON['backend'];\n    var layerNames = layers.map(function (layer) { return layer.name; });\n    var index = {};\n    for (var _i = 0, layers_1 = layers; _i < layers_1.length; _i++) {\n        var layer = layers_1[_i];\n        if (layer.name != null) {\n            if (index[layer.name] == null) {\n                index[layer.name] = [];\n            }\n            index[layer.name].push(layer);\n        }\n    }\n    var nameToWeights = weightsJSON['weights'];\n    var weightValueTuples = [];\n    for (var k = 0; k < layerNames.length; ++k) {\n        var name_1 = layerNames[k];\n        var layerWeights = nameToWeights[name_1];\n        if (layerWeights == null) {\n            layerWeights = [];\n        }\n        var weightValues = [];\n        for (var n = 0; n < layerWeights.length; ++n) {\n            var weightEntry = layerWeights[n];\n            weightValues.push(new variables_1.LayerVariable(loadTensor(weightEntry['dtype'], weightEntry['shape'], weightEntry['value'])));\n        }\n        for (var _a = 0, _b = index[name_1]; _a < _b.length; _a++) {\n            var layer = _b[_a];\n            var symbolicWeights = layer.weights;\n            weightValues = preprocessWeightsForLoading(layer, weightValues, originalKerasVersion, originalBackend);\n            if (weightValues.length !== symbolicWeights.length) {\n                if (skipMismatch) {\n                    console.warn(\"Skipping loading of weights of layer \" + layer.name + \" \" +\n                        (\"due to mismatch in number of weights: (\" + weightValues.length + \" \") +\n                        (\"vs \" + symbolicWeights.length + \").\"));\n                }\n                else {\n                    throw new errors_1.ValueError(\"Layer #\" + k + \" (named \\\"\" + layer.name + \"\\\") expects \" +\n                        (symbolicWeights.length + \" weight(s), but the saved weights \") +\n                        (\"have \" + weightValues.length + \" element(s).\"));\n                }\n            }\n            for (var i = 0; i < weightValues.length; ++i) {\n                if (skipMismatch) {\n                    if (!tfjs_core_1.util.arraysEqual(symbolicWeights[i].shape, weightValues[i].shape)) {\n                        console.warn(\"Skipping loading of weights for layer \" + layer.name + \" due \" +\n                            (\"to mismatch in shape (\" + symbolicWeights[i].shape + \" vs \") +\n                            (weightValues[i].shape + \")\"));\n                        continue;\n                    }\n                }\n                weightValueTuples.push([symbolicWeights[i], weightValues[i].read()]);\n            }\n        }\n    }\n    variables_1.batchSetValue(weightValueTuples);\n}\nexports.loadWeightsFromJson = loadWeightsFromJson;\nfunction loadWeightsFromNamedTensorMap(weights, layers) {\n    var nameToWeight = {};\n    var totalWeightsCount = 0;\n    for (var _i = 0, layers_2 = layers; _i < layers_2.length; _i++) {\n        var layer = layers_2[_i];\n        for (var _a = 0, _b = layer.weights; _a < _b.length; _a++) {\n            var weight = _b[_a];\n            if (nameToWeight[weight.originalName] != null) {\n                throw new errors_1.ValueError(\"Duplicate weight name: \" + weight.originalName);\n            }\n            nameToWeight[weight.originalName] = weight;\n            totalWeightsCount++;\n        }\n    }\n    var weightValueTuples = [];\n    for (var name_2 in weights) {\n        weightValueTuples.push([nameToWeight[name_2], weights[name_2]]);\n        delete nameToWeight[name_2];\n    }\n    var unsetNames = [];\n    for (var name_3 in nameToWeight) {\n        unsetNames.push(name_3);\n    }\n    if (unsetNames.length > 0) {\n        throw new errors_1.ValueError(unsetNames.length + \" of \" + totalWeightsCount + \" weights are not set: \" +\n            (\"\" + unsetNames));\n    }\n    variables_1.batchSetValue(weightValueTuples);\n}\nexports.loadWeightsFromNamedTensorMap = loadWeightsFromNamedTensorMap;\nvar Container = (function (_super) {\n    __extends(Container, _super);\n    function Container(config) {\n        var _this = _super.call(this, {}) || this;\n        _this.containerNodes = new Set();\n        _this.name = config.name;\n        if (_this.name == null) {\n            var prefix = _this.getClassName().toLowerCase();\n            _this.name = state_1.getUid(prefix);\n        }\n        _this.supportsMasking = false;\n        _this.trainable = true;\n        _this.updatable = true;\n        if (Array.isArray(config.inputs)) {\n            _this.inputs = config.inputs.slice();\n        }\n        else {\n            _this.inputs = [config.inputs];\n        }\n        if (Array.isArray(config.outputs)) {\n            _this.outputs = config.outputs.slice();\n        }\n        else {\n            _this.outputs = [config.outputs];\n        }\n        if (generic_utils.unique(_this.inputs).length !== _this.inputs.length) {\n            throw new errors_1.ValueError('The list of inputs passed to the model is ' +\n                'redundant. All inputs should only appear once. Found: ' +\n                _this.inputs.map(function (x) { return x.name; }));\n        }\n        if (generic_utils.unique(_this.outputs).length !== _this.outputs.length) {\n            console.warn('The list of outputs passed to the model is redundant. ' +\n                'All outputs should only appear once. Found: ' +\n                _this.outputs.map(function (x) { return x.name; }));\n        }\n        _this.inputLayers = [];\n        _this.inputLayersNodeIndices = [];\n        _this.inputLayersTensorIndices = [];\n        _this.outputLayers = [];\n        _this.outputLayersNodeIndices = [];\n        _this.outputLayersTensorIndices = [];\n        _this.layers = [];\n        for (var _i = 0, _a = _this.outputs; _i < _a.length; _i++) {\n            var x = _a[_i];\n            var layer = x.sourceLayer;\n            var nodeIndex = x.nodeIndex;\n            var tensorIndex = x.tensorIndex;\n            _this.outputLayers.push(layer);\n            _this.outputLayersNodeIndices.push(nodeIndex);\n            _this.outputLayersTensorIndices.push(tensorIndex);\n        }\n        for (var _b = 0, _c = _this.inputs; _b < _c.length; _b++) {\n            var x = _c[_b];\n            var layer = x.sourceLayer;\n            var nodeIndex = x.nodeIndex;\n            var tensorIndex = x.tensorIndex;\n            generic_utils.assert(nodeIndex === 0, 'input layer has >1 nodes');\n            generic_utils.assert(tensorIndex === 0, 'input layer has >1 tensors');\n            _this.inputLayers.push(layer);\n            _this.inputLayersNodeIndices.push(nodeIndex);\n            _this.inputLayersTensorIndices.push(tensorIndex);\n        }\n        _this.inputNames = [];\n        _this.outputNames = [];\n        _this.feedInputShapes = [];\n        _this.feedInputNames = [];\n        _this.feedOutputNames = [];\n        for (var i = 0; i < _this.inputLayers.length; i++) {\n            var layer = _this.inputLayers[i];\n            if (!(layer instanceof input_layer_1.InputLayer)) {\n                throw new TypeError('Input layers to a Model must be InputLayer objects. ' +\n                    (\"Received inputs: \" + config.inputs + \". \") +\n                    (\"Input \" + i + \" (0-based) originates \") +\n                    (\"from layer type \" + layer.getClassName() + \".\"));\n            }\n            _this.inputNames.push(layer.name);\n            _this.feedInputShapes.push(layer.batchInputShape);\n            _this.feedInputNames.push(layer.name);\n        }\n        for (var _d = 0, _e = _this.outputLayers; _d < _e.length; _d++) {\n            var layer = _e[_d];\n            _this.outputNames.push(layer.name);\n        }\n        _this.internalInputShapes = _this.inputs.map(function (x) { return x.shape; });\n        _this.internalOutputShapes = _this.outputs.map(function (x) { return x.shape; });\n        var nodesDepths = {};\n        var nodeIDToNode = {};\n        var layersDepths = {};\n        var layerIDToLayer = {};\n        var layerIndices = {};\n        var nodesInDecreasingDepth = [];\n        var buildMapOfGraph = function (tensor, finishedNodes, nodesInProgress, layer, nodeIndex, tensorIndex) {\n            if (layer == null || nodeIndex == null || tensorIndex == null) {\n                layer = tensor.sourceLayer;\n                nodeIndex = tensor.nodeIndex;\n                tensorIndex = tensor.tensorIndex;\n            }\n            var node = layer.inboundNodes[nodeIndex];\n            if (nodesInProgress.indexOf(node) !== -1) {\n                throw new errors_1.RuntimeError(\"The tensor \" + tensor.name + \" at layer \\\"\" + layer.name + \"\\\" \" +\n                    'is part of a cycle.');\n            }\n            if (finishedNodes.indexOf(node) !== -1) {\n                return;\n            }\n            _this.containerNodes.add(Container.nodeKey(layer, nodeIndex));\n            if (!(layer.id in layerIndices)) {\n                layerIndices[layer.id] = Object.keys(layerIndices).length;\n            }\n            if (nodesInProgress.indexOf(node) === -1) {\n                nodesInProgress.push(node);\n            }\n            var numInboundLayers = node.inboundLayers.length;\n            for (var i = 0; i < numInboundLayers; i++) {\n                var x = node.inputTensors[i];\n                var layer_1 = node.inboundLayers[i];\n                var nodeIndex_1 = node.nodeIndices[i];\n                var tensorIndex_1 = node.tensorIndices[i];\n                buildMapOfGraph(x, finishedNodes, nodesInProgress, layer_1, nodeIndex_1, tensorIndex_1);\n            }\n            finishedNodes.push(node);\n            while (nodesInProgress.indexOf(node) >= 0) {\n                nodesInProgress.splice(nodesInProgress.indexOf(node), 1);\n            }\n            nodesInDecreasingDepth.push(node);\n        };\n        var finishedNodes = [];\n        var nodesInProgress = [];\n        for (var _f = 0, _g = _this.outputs; _f < _g.length; _f++) {\n            var x = _g[_f];\n            buildMapOfGraph(x, finishedNodes, nodesInProgress);\n        }\n        var reversedNodesInDecreasingDepth = nodesInDecreasingDepth.slice().reverse();\n        for (var _h = 0, reversedNodesInDecreasingDepth_1 = reversedNodesInDecreasingDepth; _h < reversedNodesInDecreasingDepth_1.length; _h++) {\n            var node = reversedNodesInDecreasingDepth_1[_h];\n            nodeIDToNode[node.id] = node;\n            if (!(node.id in nodesDepths)) {\n                nodesDepths[node.id] = 0;\n            }\n            var depth = nodesDepths[node.id];\n            var previousDepth = (layersDepths[node.outboundLayer.id] == null ?\n                0 :\n                layersDepths[node.outboundLayer.id]);\n            depth = Math.max(depth, previousDepth);\n            layersDepths[node.outboundLayer.id] = depth;\n            layerIDToLayer[node.outboundLayer.id] = node.outboundLayer;\n            nodesDepths[node.id] = depth;\n            for (var i = 0; i < node.inboundLayers.length; i++) {\n                var inboundLayer = node.inboundLayers[i];\n                var nodeIndex = node.nodeIndices[i];\n                var inboundNode = inboundLayer.inboundNodes[nodeIndex];\n                var previousDepth_1 = (nodesDepths[inboundNode.id] == null ? 0 :\n                    nodesDepths[inboundNode.id]);\n                nodesDepths[inboundNode.id] = Math.max(depth + 1, previousDepth_1);\n                nodeIDToNode[inboundNode.id] = inboundNode;\n            }\n        }\n        var nodesByDepth = {};\n        for (var nodeID in nodesDepths) {\n            var depth = nodesDepths[nodeID];\n            if (!(depth in nodesByDepth)) {\n                nodesByDepth[depth] = [];\n            }\n            nodesByDepth[depth].push(nodeIDToNode[nodeID]);\n        }\n        var layersByDepth = {};\n        for (var layerID in layersDepths) {\n            var depth = layersDepths[layerID];\n            if (!(depth in layersByDepth)) {\n                layersByDepth[depth] = [];\n            }\n            layersByDepth[depth].push(layerIDToLayer[layerID]);\n        }\n        var depthKeys = Object.keys(layersByDepth)\n            .map(function (x) { return parseInt(x, 10); })\n            .sort(generic_utils.reverseNumberCompare);\n        _this.layers = [];\n        for (var _j = 0, depthKeys_1 = depthKeys; _j < depthKeys_1.length; _j++) {\n            var depth = depthKeys_1[_j];\n            var layersForDepth = layersByDepth[depth];\n            layersForDepth.sort(function (a, b) {\n                var aIndex = layerIndices[a.id];\n                var bIndex = layerIndices[b.id];\n                if (aIndex < bIndex) {\n                    return -1;\n                }\n                if (aIndex > bIndex) {\n                    return 1;\n                }\n                return 0;\n            });\n            for (var _k = 0, layersForDepth_1 = layersForDepth; _k < layersForDepth_1.length; _k++) {\n                var layer = layersForDepth_1[_k];\n                _this.layers.push(layer);\n            }\n        }\n        _this.layersByDepth = layersByDepth;\n        depthKeys = Object.keys(nodesByDepth)\n            .map(function (x) { return parseInt(x, 10); })\n            .sort(generic_utils.reverseNumberCompare);\n        var computableTensors = _this.inputs.slice();\n        var layersWithCompleteInput = [];\n        for (var _l = 0, depthKeys_2 = depthKeys; _l < depthKeys_2.length; _l++) {\n            var depth = depthKeys_2[_l];\n            for (var _m = 0, _o = nodesByDepth[depth]; _m < _o.length; _m++) {\n                var node = _o[_m];\n                var layer = node.outboundLayer;\n                if (layer != null) {\n                    for (var _p = 0, _q = node.inputTensors; _p < _q.length; _p++) {\n                        var x = _q[_p];\n                        if (computableTensors.indexOf(x) === -1) {\n                            throw new errors_1.RuntimeError(\"Graph disconnected: cannot obtain value for tensor \" + x +\n                                (\" at layer \\\"\" + layer.name + \"\\\". \") +\n                                'The following previous layers were accessed without ' +\n                                (\"issue: \" + layersWithCompleteInput));\n                        }\n                    }\n                    for (var _r = 0, _s = node.outputTensors; _r < _s.length; _r++) {\n                        var x = _s[_r];\n                        computableTensors.push(x);\n                    }\n                    layersWithCompleteInput.push(layer.name);\n                }\n            }\n        }\n        _this.nodesByDepth = nodesByDepth;\n        var allNames = _this.layers.map(function (x) { return x.name; });\n        var _loop_1 = function (name_4) {\n            var numOccurrences = allNames.filter(function (x) { return x === name_4; }).length;\n            if (numOccurrences !== 1) {\n                throw new errors_1.RuntimeError(\"The name \\\"\" + name_4 + \"\\\" is used \" + numOccurrences + \" times \" +\n                    'in the model. All layer names should be unique. Layer names: ' +\n                    JSON.stringify(allNames));\n            }\n        };\n        for (var _t = 0, allNames_1 = allNames; _t < allNames_1.length; _t++) {\n            var name_4 = allNames_1[_t];\n            _loop_1(name_4);\n        }\n        _this.outboundNodes = [];\n        _this.inboundNodes = [];\n        new topology_1.Node({\n            outboundLayer: _this,\n            inboundLayers: [],\n            nodeIndices: [],\n            tensorIndices: [],\n            inputTensors: _this.inputs,\n            outputTensors: _this.outputs,\n            inputMasks: _this.inputs.map(function (x) { return null; }),\n            outputMasks: _this.outputs.map(function (x) { return null; }),\n            inputShapes: _this.inputs.map(function (x) { return x.shape; }),\n            outputShapes: _this.outputs.map(function (x) { return x.shape; })\n        });\n        _this.built = true;\n        return _this;\n    }\n    Object.defineProperty(Container.prototype, \"trainableWeights\", {\n        get: function () {\n            if (this._trainableWeights.length > 0) {\n                throw new errors_1.ValueError('Container instance unexpectedly contains _trainableWeights.' +\n                    'The trainable weights of a Container are a union of the ' +\n                    'trainable weights of its consituent Layers. Its own ' +\n                    '_trainableWeights must remain an empty Array.');\n            }\n            if (!this.trainable) {\n                return [];\n            }\n            var weights = [];\n            for (var _i = 0, _a = this.layers; _i < _a.length; _i++) {\n                var layer = _a[_i];\n                weights = weights.concat(layer.trainableWeights);\n            }\n            return weights;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Container.prototype, \"nonTrainableWeights\", {\n        get: function () {\n            var weights = [];\n            for (var _i = 0, _a = this.layers; _i < _a.length; _i++) {\n                var layer = _a[_i];\n                weights.push.apply(weights, layer.nonTrainableWeights);\n            }\n            if (!this.trainable) {\n                var trainableWeights = [];\n                for (var _b = 0, _c = this.layers; _b < _c.length; _b++) {\n                    var layer = _c[_b];\n                    trainableWeights.push.apply(trainableWeights, layer.trainableWeights);\n                }\n                return trainableWeights.concat(weights);\n            }\n            return weights;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Container.prototype, \"weights\", {\n        get: function () {\n            return this.trainableWeights.concat(this.nonTrainableWeights);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Container.prototype.loadWeights = function (weightsJSON, skipMismatch, isNamedTensorMap) {\n        if (skipMismatch === void 0) { skipMismatch = false; }\n        if (isNamedTensorMap === void 0) { isNamedTensorMap = false; }\n        if (isNamedTensorMap) {\n            loadWeightsFromNamedTensorMap(weightsJSON, this.layers);\n        }\n        else {\n            loadWeightsFromJson(weightsJSON, this.layers, skipMismatch);\n        }\n    };\n    Container.prototype.updatedConfig = function () {\n        var theConfig = this.getConfig();\n        var modelConfig = {\n            className: this.getClassName(),\n            config: theConfig,\n            kerasVersion: \"tfjs-layers \" + version_1.version,\n            backend: 'TensorFlow.js'\n        };\n        return modelConfig;\n    };\n    Container.prototype.toJSON = function (unused, returnString) {\n        if (returnString === void 0) { returnString = true; }\n        var modelConfig = serialization_utils_1.convertTsToPythonic(this.updatedConfig());\n        return returnString ? JSON.stringify(modelConfig) : modelConfig;\n    };\n    Container.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            inputs = generic_utils.toList(inputs);\n            var masks;\n            if ('mask' in kwargs) {\n                masks = generic_utils.toList(kwargs['mask']);\n            }\n            else {\n                masks = generic_utils.pyListRepeat(null, inputs.length);\n            }\n            return _this.runInternalGraph(inputs, masks)[0];\n        });\n    };\n    Container.prototype.computeMask = function (inputs, mask) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            inputs = generic_utils.toList(inputs);\n            var masks;\n            if (mask == null) {\n                masks = generic_utils.pyListRepeat(null, inputs.length);\n            }\n            else {\n                masks = generic_utils.toList(mask);\n            }\n            return _this.runInternalGraph(inputs, masks)[1];\n        });\n    };\n    Container.prototype.computeOutputShape = function (inputShape) {\n        var inputShapes = types_utils.normalizeShapeList(inputShape);\n        if (inputShapes.length !== this.inputLayers.length) {\n            throw new errors_1.ValueError(\"Invalid inputShape argument \" + inputShape + \": \" +\n                (\"model has \" + this.inputLayers.length + \" tensor inputs.\"));\n        }\n        var layersToOutputShapes = {};\n        for (var i = 0; i < inputShapes.length; i++) {\n            var layer = this.inputLayers[i];\n            var inputShape_1 = inputShapes[i];\n            var shapeKey = layer.name + '_0_0';\n            layersToOutputShapes[shapeKey] = inputShape_1;\n        }\n        var depthKeys = Object.keys(this.nodesByDepth)\n            .map(function (x) { return parseInt(x, 10); })\n            .sort(generic_utils.reverseNumberCompare);\n        if (depthKeys.length > 1) {\n            for (var _i = 0, depthKeys_3 = depthKeys; _i < depthKeys_3.length; _i++) {\n                var depth = depthKeys_3[_i];\n                var nodes = this.nodesByDepth[depth];\n                for (var _a = 0, nodes_1 = nodes; _a < nodes_1.length; _a++) {\n                    var node = nodes_1[_a];\n                    var layer = node.outboundLayer;\n                    if (this.inputLayers.map(function (x) { return x.id; }).indexOf(layer.id) !== -1) {\n                        continue;\n                    }\n                    var inputShapes_1 = [];\n                    for (var j = 0; j < node.inboundLayers.length; j++) {\n                        var inboundLayer = node.inboundLayers[j];\n                        var nodeIndex_2 = node.nodeIndices[j];\n                        var tensorIndex = node.tensorIndices[j];\n                        var shapeKey = inboundLayer.name + \"_\" + nodeIndex_2 + \"_\" + tensorIndex;\n                        var inputShape_2 = layersToOutputShapes[shapeKey];\n                        inputShapes_1.push(inputShape_2);\n                    }\n                    var outputShape = layer.computeOutputShape(generic_utils.singletonOrArray(inputShapes_1));\n                    var outputShapes_1 = types_utils.normalizeShapeList(outputShape);\n                    var nodeIndex = layer.inboundNodes.indexOf(node);\n                    for (var j = 0; j < outputShapes_1.length; j++) {\n                        var shapeKey = layer.name + \"_\" + nodeIndex + \"_\" + j;\n                        layersToOutputShapes[shapeKey] = outputShapes_1[j];\n                    }\n                }\n            }\n        }\n        var outputShapes = [];\n        var outputShapeKeys = [];\n        for (var i = 0; i < this.outputLayers.length; i++) {\n            var layer = this.outputLayers[i];\n            var nodeIndex = this.outputLayersNodeIndices[i];\n            var tensorIndex = this.outputLayersTensorIndices[i];\n            var shapeKey = layer.name + \"_\" + nodeIndex + \"_\" + tensorIndex;\n            outputShapeKeys.push(shapeKey);\n        }\n        for (var i = 0; i < outputShapeKeys.length; i++) {\n            var key = outputShapeKeys[i];\n            generic_utils.assert(key in layersToOutputShapes);\n            outputShapes.push(layersToOutputShapes[key]);\n        }\n        return generic_utils.singletonOrArray(outputShapes);\n    };\n    Container.prototype.runInternalGraph = function (inputs, masks) {\n        if (masks == null) {\n            masks = generic_utils.pyListRepeat(null, inputs.length);\n        }\n        var tensorMap = {};\n        for (var i = 0; i < this.inputs.length; ++i) {\n            var x = this.inputs[i];\n            var y = inputs[i];\n            var mask = masks[i];\n            tensorMap[x.id] = [y, mask];\n        }\n        var depthKeys = Object.keys(this.nodesByDepth)\n            .map(function (x) { return parseInt(x, 10); })\n            .sort(generic_utils.reverseNumberCompare);\n        for (var _i = 0, depthKeys_4 = depthKeys; _i < depthKeys_4.length; _i++) {\n            var depth = depthKeys_4[_i];\n            var nodes = this.nodesByDepth[depth];\n            for (var _a = 0, nodes_2 = nodes; _a < nodes_2.length; _a++) {\n                var node = nodes_2[_a];\n                var layer = node.outboundLayer;\n                var referenceInputTensors = node.inputTensors;\n                var referenceOutputTensors = node.outputTensors;\n                var computedData = new Array();\n                for (var _b = 0, referenceInputTensors_1 = referenceInputTensors; _b < referenceInputTensors_1.length; _b++) {\n                    var x = referenceInputTensors_1[_b];\n                    if (x.id in tensorMap) {\n                        computedData.push(tensorMap[x.id]);\n                    }\n                }\n                if (computedData.length === referenceInputTensors.length) {\n                    var kwargs = {};\n                    var computedTensors = void 0;\n                    var computedMasks = void 0;\n                    var outputTensors_1 = void 0;\n                    var outputMasks_1 = void 0;\n                    if (node.callArgs != null) {\n                        kwargs = node.callArgs;\n                    }\n                    if (computedData.length === 1) {\n                        var _c = computedData[0], computedTensor = _c[0], computedMask = _c[1];\n                        if (kwargs.mask == null) {\n                            kwargs['mask'] = computedMask;\n                        }\n                        outputTensors_1 =\n                            generic_utils.toList(layer.call(computedTensor, kwargs));\n                        outputMasks_1 = generic_utils.toList(layer.computeMask(computedTensor, computedMask));\n                        computedTensors = [computedTensor];\n                        computedMasks = [computedMask];\n                    }\n                    else {\n                        computedTensors = computedData.map(function (x) { return x[0]; });\n                        computedMasks = computedData.map(function (x) { return x[1]; });\n                        if (kwargs.mask == null) {\n                            kwargs['mask'] = computedMasks;\n                        }\n                        outputTensors_1 =\n                            generic_utils.toList(layer.call(computedTensors, kwargs));\n                        outputMasks_1 = generic_utils.toList(layer.computeMask(computedTensors, computedMasks));\n                    }\n                    if (layer.activityRegularizer) {\n                        throw new errors_1.NotImplementedError('Model invocation with concrete Tensor value(s) in the ' +\n                            'presence of activity regularizer(s) is not supported yet.');\n                    }\n                    for (var i = 0; i < referenceOutputTensors.length; ++i) {\n                        var x = referenceOutputTensors[i];\n                        var y = outputTensors_1[i];\n                        var mask = outputMasks_1[i];\n                        tensorMap[x.id] = [y, mask];\n                    }\n                }\n            }\n        }\n        var outputTensors = [];\n        var outputMasks = [];\n        var outputShapes = [];\n        for (var _d = 0, _e = this.outputs; _d < _e.length; _d++) {\n            var x = _e[_d];\n            generic_utils.assert(x.id in tensorMap, \"Could not compute output \" + x.name + \" : \" + x.id);\n            var _f = tensorMap[x.id], tensor = _f[0], mask = _f[1];\n            outputShapes.push(tensor.shape);\n            outputTensors.push(tensor);\n            outputMasks.push(mask);\n        }\n        return [outputTensors, outputMasks, outputShapes];\n    };\n    Container.prototype.buildNodeConversionMap = function (layers) {\n        var nodeConversionMap = {};\n        var keptNodes;\n        for (var _i = 0, _a = this.layers; _i < _a.length; _i++) {\n            var layer = _a[_i];\n            keptNodes = layer instanceof Container ? 1 : 0;\n            for (var originalNodeIndex = 0; originalNodeIndex < layer.inboundNodes.length; originalNodeIndex++) {\n                var nodeKey = Container.nodeKey(layer, originalNodeIndex);\n                if (nodeKey in this.containerNodes) {\n                    nodeConversionMap[nodeKey] = keptNodes;\n                    keptNodes += 1;\n                }\n            }\n        }\n        return nodeConversionMap;\n    };\n    Container.prototype.getLayer = function (name, index) {\n        if (index != null) {\n            if (this.layers.length <= index) {\n                throw new errors_1.ValueError(\"Was asked to retrieve layer at index \" + index + \", but model only \" +\n                    (\"has \" + this.layers.length + \" layer(s).\"));\n            }\n            else {\n                return this.layers[index];\n            }\n        }\n        else {\n            if (name == null) {\n                throw new errors_1.ValueError('Provide either a layer name or layer index');\n            }\n        }\n        for (var _i = 0, _a = this.layers; _i < _a.length; _i++) {\n            var layer = _a[_i];\n            if (layer.name === name) {\n                return layer;\n            }\n        }\n        throw new errors_1.ValueError(\"No such layer: \" + name);\n    };\n    Container.prototype.calculateLosses = function () {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            var losses = [];\n            for (var _i = 0, _a = _this.layers; _i < _a.length; _i++) {\n                var layer = _a[_i];\n                for (var nodeIndex = 0; nodeIndex < layer.inboundNodes.length; ++nodeIndex) {\n                    var nodeKey = Container.nodeKey(layer, nodeIndex);\n                    if (_this.containerNodes.has(nodeKey)) {\n                        losses.push.apply(losses, layer.calculateLosses());\n                    }\n                }\n            }\n            return losses;\n        });\n    };\n    Container.prototype.getConfig = function () {\n        var config = { name: this.name };\n        var nodeConversionMap = this.buildNodeConversionMap(this.layers);\n        var layerConfigs = [];\n        for (var _i = 0, _a = this.layers; _i < _a.length; _i++) {\n            var layer = _a[_i];\n            var layerClassName = layer.getClassName();\n            var layerConfig = layer.getConfig();\n            var filteredInboundNodes = [];\n            for (var originalNodeIndex = 0; originalNodeIndex < layer.inboundNodes.length; originalNodeIndex++) {\n                var node = layer.inboundNodes[originalNodeIndex];\n                var nodeKey = Container.nodeKey(layer, originalNodeIndex);\n                var kwargs = {};\n                if (this.containerNodes.has(nodeKey)) {\n                    if (node.callArgs) {\n                        try {\n                            JSON.stringify(node.callArgs);\n                            kwargs = node.callArgs;\n                        }\n                        catch (err) {\n                            console.warn(\"Layer \" + layer.name + \" was passed \" +\n                                \"non-serializable keyword arguments: \" +\n                                (node.callArgs + \". They will not be included \") +\n                                \"in the serialized model (and thus will be \" +\n                                \"missing at deserialization time).\");\n                            kwargs = {};\n                        }\n                    }\n                    if (node.inboundLayers.length > 0) {\n                        var nodeData = [];\n                        for (var i = 0; i < node.inboundLayers.length; i++) {\n                            var inboundLayer = node.inboundLayers[i];\n                            var nodeIndex = node.nodeIndices[i];\n                            var tensorIndex = node.tensorIndices[i];\n                            var nodeKey_1 = Container.nodeKey(inboundLayer, nodeIndex);\n                            var newNodeIndex = nodeConversionMap[nodeKey_1];\n                            if (newNodeIndex === null || newNodeIndex === undefined) {\n                                newNodeIndex = 0;\n                            }\n                            nodeData.push([inboundLayer.name, newNodeIndex, tensorIndex, kwargs]);\n                        }\n                        filteredInboundNodes.push(nodeData);\n                    }\n                }\n            }\n            layerConfigs.push({\n                name: layer.name,\n                className: layerClassName,\n                config: layerConfig,\n                inboundNodes: filteredInboundNodes\n            });\n        }\n        config['layers'] = layerConfigs;\n        var modelInputs = [];\n        for (var i = 0; i < this.inputLayers.length; i++) {\n            var layer = this.inputLayers[i];\n            var nodeIndex = this.inputLayersNodeIndices[i];\n            var nodeKey = Container.nodeKey(layer, nodeIndex);\n            if (!this.containerNodes.has(nodeKey)) {\n                continue;\n            }\n            var newNodeIndex = nodeConversionMap[nodeKey];\n            if (newNodeIndex === null || newNodeIndex === undefined) {\n                newNodeIndex = 0;\n            }\n            var tensorIndex = this.inputLayersTensorIndices[i];\n            modelInputs.push([layer.name, newNodeIndex, tensorIndex]);\n        }\n        config['inputLayers'] = modelInputs;\n        var modelOutputs = [];\n        for (var i = 0; i < this.outputLayers.length; i++) {\n            var layer = this.outputLayers[i];\n            var nodeIndex = this.outputLayersNodeIndices[i];\n            var nodeKey = Container.nodeKey(layer, nodeIndex);\n            if (!this.containerNodes.has(nodeKey)) {\n                continue;\n            }\n            var newNodeIndex = nodeConversionMap[nodeKey];\n            if (newNodeIndex === null || newNodeIndex === undefined) {\n                newNodeIndex = 0;\n            }\n            var tensorIndex = this.outputLayersTensorIndices[i];\n            modelOutputs.push([layer.name, newNodeIndex, tensorIndex]);\n        }\n        config['outputLayers'] = modelOutputs;\n        return config;\n    };\n    Container.fromConfig = function (cls, config) {\n        var createdLayers = {};\n        var unprocessedNodes = {};\n        function addUnprocessedNode(layer, nodeData) {\n            if (!(layer.name in unprocessedNodes)) {\n                unprocessedNodes[layer.name] = [nodeData];\n            }\n            else {\n                unprocessedNodes[layer.name].push(nodeData);\n            }\n        }\n        function processNode(layer, nodeData) {\n            var inputTensors = [];\n            var kwargs;\n            for (var _i = 0, nodeData_1 = nodeData; _i < nodeData_1.length; _i++) {\n                var inputData = nodeData_1[_i];\n                var inboundLayerName = inputData[0];\n                var inboundNodeIndex = inputData[1];\n                var inboundTensorIndex = inputData[2];\n                if (inputData.length === 3) {\n                    kwargs = {};\n                }\n                else if (inputData.length === 4) {\n                    kwargs = inputData[3];\n                }\n                else {\n                    throw new errors_1.ValueError(\"Improperly formatted model config for layer \" + JSON.stringify(layer) + \": \" + JSON.stringify(inputData));\n                }\n                if (!(inboundLayerName in createdLayers)) {\n                    addUnprocessedNode(layer, nodeData);\n                    return;\n                }\n                var inboundLayer = createdLayers[inboundLayerName];\n                if (inboundLayer.inboundNodes.length <= inboundNodeIndex) {\n                    addUnprocessedNode(layer, nodeData);\n                    return;\n                }\n                var inboundNode = inboundLayer.inboundNodes[inboundNodeIndex];\n                inputTensors.push(inboundNode.outputTensors[inboundTensorIndex]);\n            }\n            if (inputTensors.length > 0) {\n                layer.apply(generic_utils.singletonOrArray(inputTensors), kwargs);\n            }\n        }\n        function processLayer(layerData) {\n            var layerName = layerData.name;\n            var layer = serialization_1.deserialize(layerData, config.customObjects != null ?\n                config.customObjects :\n                {});\n            createdLayers[layerName] = layer;\n            var inboundNodesData = layerData.inboundNodes;\n            for (var _i = 0, inboundNodesData_1 = inboundNodesData; _i < inboundNodesData_1.length; _i++) {\n                var nodeData = inboundNodesData_1[_i];\n                if (!(nodeData instanceof Array)) {\n                    throw new errors_1.ValueError(\"Corrupted configuration, expected array for nodeData: \" + nodeData);\n                }\n                addUnprocessedNode(layer, nodeData);\n            }\n        }\n        var name = config.name;\n        var layersFromConfig = config.layers;\n        for (var _i = 0, layersFromConfig_1 = layersFromConfig; _i < layersFromConfig_1.length; _i++) {\n            var layerData = layersFromConfig_1[_i];\n            processLayer(layerData);\n        }\n        while (!generic_utils.isObjectEmpty(unprocessedNodes)) {\n            for (var _a = 0, layersFromConfig_2 = layersFromConfig; _a < layersFromConfig_2.length; _a++) {\n                var layerData = layersFromConfig_2[_a];\n                var layer = createdLayers[layerData.name];\n                if (layer.name in unprocessedNodes) {\n                    for (var _b = 0, _c = unprocessedNodes[layer.name]; _b < _c.length; _b++) {\n                        var nodeData = _c[_b];\n                        processNode(layer, nodeData);\n                    }\n                    delete unprocessedNodes[layer.name];\n                }\n            }\n        }\n        var inputTensors = [];\n        var outputTensors = [];\n        var inputLayersFromConfig = config.inputLayers;\n        for (var _d = 0, inputLayersFromConfig_1 = inputLayersFromConfig; _d < inputLayersFromConfig_1.length; _d++) {\n            var layerData = inputLayersFromConfig_1[_d];\n            var layerName = layerData[0];\n            var nodeIndex = layerData[1];\n            var tensorIndex = layerData[2];\n            generic_utils.assert(layerName in createdLayers);\n            var layer = createdLayers[layerName];\n            var layerOutputTensors = layer.inboundNodes[nodeIndex].outputTensors;\n            inputTensors.push(layerOutputTensors[tensorIndex]);\n        }\n        var outputLayersFromConfig = config.outputLayers;\n        for (var _e = 0, outputLayersFromConfig_1 = outputLayersFromConfig; _e < outputLayersFromConfig_1.length; _e++) {\n            var layerData = outputLayersFromConfig_1[_e];\n            var layerName = layerData[0];\n            var nodeIndex = layerData[1];\n            var tensorIndex = layerData[2];\n            generic_utils.assert(layerName in createdLayers);\n            var layer = createdLayers[layerName];\n            var layerOutputTensors = layer.inboundNodes[nodeIndex].outputTensors;\n            outputTensors.push(layerOutputTensors[tensorIndex]);\n        }\n        return new cls({ inputs: inputTensors, outputs: outputTensors, name: name });\n    };\n    Object.defineProperty(Container.prototype, \"stateful\", {\n        get: function () {\n            if (this._stateful) {\n                throw new errors_1.ValueError('Container instance unexpectedly has _stateful = true. The ' +\n                    'statefulness of a Container is determined by the Layers it ' +\n                    'contains. Its _stateful property must remain the default false.');\n            }\n            for (var _i = 0, _a = this.layers; _i < _a.length; _i++) {\n                var layer = _a[_i];\n                if (layer.stateful) {\n                    return true;\n                }\n            }\n            return false;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    return Container;\n}(topology_1.Layer));\nexports.Container = Container;\n\n},{\"../backend/state\":185,\"../errors\":196,\"../layers/serialization\":215,\"../utils/generic_utils\":224,\"../utils/serialization_utils\":227,\"../utils/types_utils\":228,\"../variables\":230,\"../version\":231,\"./input_layer\":193,\"./topology\":194,\"@tensorflow/tfjs-core\":59}],192:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar errors_1 = require(\"../errors\");\nvar input_layer_1 = require(\"./input_layer\");\nfunction assertFeedCompatibility(key, val) {\n    if (key.shape != null) {\n        if (key.shape.length !== val.shape.length) {\n            throw new errors_1.ValueError(\"The rank of feed (\" + val.shape.length + \") does not match the rank of \" +\n                (\"the key (\" + key.shape.length + \").\"));\n        }\n        for (var i = 0; i < key.shape.length; ++i) {\n            if (key.shape[i] != null && key.shape[i] !== val.shape[i]) {\n                throw new errors_1.ValueError(\"The \" + i + \"-th dimension of the feed (\" + val.shape[i] + \") is \" +\n                    (\"incompatible with that of the key (\" + key.shape[i] + \").\"));\n            }\n        }\n    }\n    if (key.dtype == null || key.dtype === val.dtype) {\n        return val;\n    }\n    try {\n        return tfjs_core_1.cast(val, key.dtype);\n    }\n    catch (err) {\n        throw new errors_1.ValueError(\"The dtype of the feed (\" + val.dtype + \") can not be cast to the dtype \" +\n            (\"of the key '\" + key.name + \"' (\" + key.dtype + \").\"));\n    }\n}\nvar FeedDict = (function () {\n    function FeedDict(feeds) {\n        this.id2Value = {};\n        if (feeds instanceof FeedDict) {\n            for (var id in feeds.id2Value) {\n                this.id2Value[id] = feeds.id2Value[id];\n            }\n        }\n        else {\n            if (feeds == null) {\n                return;\n            }\n            for (var _i = 0, feeds_1 = feeds; _i < feeds_1.length; _i++) {\n                var feed = feeds_1[_i];\n                this.add(feed.key, feed.value);\n            }\n        }\n    }\n    FeedDict.prototype.add = function (key, value) {\n        if (this.id2Value[key.id] == null) {\n            this.id2Value[key.id] = assertFeedCompatibility(key, value);\n        }\n        else {\n            throw new errors_1.ValueError(\"Duplicate key: name=\" + key.name + \", id=\" + key.id);\n        }\n        return this;\n    };\n    FeedDict.prototype.addFeed = function (feed) {\n        this.add(feed.key, feed.value);\n    };\n    FeedDict.prototype.hasKey = function (key) {\n        return this.id2Value[key.id] != null;\n    };\n    FeedDict.prototype.getValue = function (key) {\n        if (this.id2Value[key.id] == null) {\n            throw new errors_1.ValueError(\"Nonexistent key: \" + JSON.stringify(key));\n        }\n        else {\n            return this.id2Value[key.id];\n        }\n    };\n    return FeedDict;\n}());\nexports.FeedDict = FeedDict;\nfunction execute(fetches, feedDict, kwargs) {\n    var arrayFetches = Array.isArray(fetches);\n    var fetchArray = arrayFetches ? fetches : [fetches];\n    var outputs = [];\n    var internalFeedDict = new FeedDict(feedDict);\n    for (var _i = 0, fetchArray_1 = fetchArray; _i < fetchArray_1.length; _i++) {\n        var fetch_1 = fetchArray_1[_i];\n        outputs.push(executeInternal(fetch_1, internalFeedDict, kwargs));\n    }\n    return arrayFetches ? outputs : outputs[0];\n}\nexports.execute = execute;\nfunction executeInternal(fetch, internalFeedDict, kwargs) {\n    if (internalFeedDict.hasKey(fetch)) {\n        return internalFeedDict.getValue(fetch);\n    }\n    if (fetch.sourceLayer instanceof input_layer_1.InputLayer) {\n        throw new errors_1.ValueError(\"Missing a feed value for SymbolicTensor from InputLayer \" +\n            (\"'\" + input_layer_1.InputLayer.name + \"'\"));\n    }\n    var inputs = fetch.inputs;\n    var inputValues = [];\n    for (var _i = 0, inputs_1 = inputs; _i < inputs_1.length; _i++) {\n        var input = inputs_1[_i];\n        var inputVal = executeInternal(input, internalFeedDict, kwargs);\n        inputValues.push(inputVal);\n    }\n    var output = fetch.sourceLayer.apply(inputValues, kwargs);\n    if (!Array.isArray(output)) {\n        output = [output];\n    }\n    var layerOutputs = getNodeOutputs(fetch);\n    var outputSymbolicTensors = Array.isArray(layerOutputs) ? layerOutputs : [layerOutputs];\n    for (var i = 0; i < outputSymbolicTensors.length; ++i) {\n        internalFeedDict.add(outputSymbolicTensors[i], output[i]);\n    }\n    return output.length === 1 ? output[0] : output[fetch.outputTensorIndex];\n}\nfunction getNodeOutputs(fetch) {\n    var layerOutputs;\n    if (fetch.sourceLayer.inboundNodes.length === 1) {\n        layerOutputs = fetch.sourceLayer.output;\n    }\n    else {\n        var nodeIndex = null;\n        for (var i = 0; i < fetch.sourceLayer.inboundNodes.length; ++i) {\n            for (var _i = 0, _a = fetch.sourceLayer.inboundNodes[i]\n                .outputTensors; _i < _a.length; _i++) {\n                var outputTensor = _a[_i];\n                if (outputTensor.id === fetch.id) {\n                    nodeIndex = i;\n                    break;\n                }\n            }\n        }\n        layerOutputs = fetch.sourceLayer.getOutputAt(nodeIndex);\n    }\n    return layerOutputs;\n}\n\n},{\"../errors\":196,\"./input_layer\":193,\"@tensorflow/tfjs-core\":59}],193:[function(require,module,exports){\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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar state_1 = require(\"../backend/state\");\nvar errors_1 = require(\"../errors\");\nvar topology_1 = require(\"./topology\");\nvar InputLayer = (function (_super) {\n    __extends(InputLayer, _super);\n    function InputLayer(config) {\n        var _this = _super.call(this, {\n            dtype: config.dtype,\n            name: config.name != null ? config.name : state_1.getUid('input').toString()\n        }) || this;\n        if (config.batchSize == null) {\n            config.batchSize = null;\n        }\n        if (config.sparse == null) {\n            config.sparse = false;\n        }\n        _this.trainable = false;\n        _this.built = true;\n        _this.sparse = config.sparse;\n        if (config.inputShape != null && config.batchInputShape != null) {\n            throw new errors_1.ValueError('Only provide the inputShape OR ' +\n                'batchInputShape argument to inputLayer, not both at the same time.');\n        }\n        var batchInputShape = config.batchInputShape;\n        if (batchInputShape == null) {\n            if (config.inputShape == null) {\n                throw new errors_1.ValueError('An InputLayer should be passed either a ' +\n                    '`batchInputShape` or an `inputShape`.');\n            }\n            else {\n                batchInputShape = [config.batchSize].concat(config.inputShape);\n            }\n        }\n        else {\n            if (config.batchSize != null) {\n                throw new errors_1.ValueError('Cannot specify batchSize if batchInputShape is' +\n                    'specified when creating an InputLayer.');\n            }\n        }\n        var dtype = config.dtype || 'float32';\n        _this.batchInputShape = batchInputShape;\n        _this.dtype = dtype;\n        _this.inputSpec = [{ shape: batchInputShape }];\n        var inputTensor = new topology_1.SymbolicTensor(_this.dtype, _this.batchInputShape, _this, [], {}, _this.name);\n        inputTensor.nodeIndex = 0;\n        inputTensor.tensorIndex = 0;\n        new topology_1.Node({\n            outboundLayer: _this,\n            inboundLayers: [],\n            nodeIndices: [],\n            tensorIndices: [],\n            inputTensors: [inputTensor],\n            outputTensors: [inputTensor],\n            inputMasks: [null],\n            outputMasks: [null],\n            inputShapes: [batchInputShape],\n            outputShapes: [batchInputShape]\n        });\n        return _this;\n    }\n    InputLayer.prototype.apply = function (inputs, kwargs) {\n        throw new errors_1.ValueError('Cannot pass any input to an ' +\n            (\"InputLayer's apply() method. InputLayer name: \" + this.name));\n    };\n    InputLayer.prototype.getConfig = function () {\n        return {\n            batchInputShape: this.batchInputShape,\n            dtype: this.dtype,\n            sparse: this.sparse,\n            name: this.name\n        };\n    };\n    InputLayer.className = 'InputLayer';\n    return InputLayer;\n}(topology_1.Layer));\nexports.InputLayer = InputLayer;\ntfjs_core_1.serialization.SerializationMap.register(InputLayer);\nfunction Input(config) {\n    if (config.batchShape == null && config.shape == null) {\n        throw new Error('Please provide to Input either a `shape`' +\n            ' or a `batchShape` argument. Note that ' +\n            '`shape` does not include the batch ' +\n            'dimension.');\n    }\n    if (config.batchShape != null && config.shape != null) {\n        throw new errors_1.ValueError('Please provide either a `shape` or `batchShape` ' +\n            'argument to Input, but not both.');\n    }\n    var batchShape = config.batchShape;\n    if (config.shape != null && batchShape == null) {\n        batchShape = [null].concat(config.shape);\n    }\n    var dtype = config.dtype;\n    if (dtype == null) {\n        dtype = 'float32';\n    }\n    var inputLayer = new InputLayer({\n        batchInputShape: batchShape,\n        name: config.name,\n        dtype: dtype,\n        sparse: config.sparse\n    });\n    var outputs = inputLayer.inboundNodes[0].outputTensors;\n    return outputs[0];\n}\nexports.Input = Input;\n\n},{\"../backend/state\":185,\"../errors\":196,\"./topology\":194,\"@tensorflow/tfjs-core\":59}],194:[function(require,module,exports){\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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar state_1 = require(\"../backend/state\");\nvar common_1 = require(\"../common\");\nvar errors_1 = require(\"../errors\");\nvar generic_utils = require(\"../utils/generic_utils\");\nvar types_utils = require(\"../utils/types_utils\");\nvar variable_utils = require(\"../utils/variable_utils\");\nvar variables_1 = require(\"../variables\");\nvar InputSpec = (function () {\n    function InputSpec(config) {\n        this.dtype = config.dtype;\n        this.shape = config.shape;\n        if (config.shape != null) {\n            this.ndim = config.shape.length;\n        }\n        else {\n            this.ndim = config.ndim;\n        }\n        this.maxNDim = config.maxNDim;\n        this.minNDim = config.minNDim;\n        this.axes = config.axes || {};\n    }\n    return InputSpec;\n}());\nexports.InputSpec = InputSpec;\nvar SymbolicTensor = (function () {\n    function SymbolicTensor(dtype, shape, sourceLayer, inputs, callArgs, name, outputTensorIndex) {\n        this.dtype = dtype;\n        this.shape = shape;\n        this.sourceLayer = sourceLayer;\n        this.inputs = inputs;\n        this.callArgs = callArgs;\n        this.outputTensorIndex = outputTensorIndex;\n        this.id = state_1.getNextUniqueTensorId();\n        if (name != null) {\n            this.originalName = common_1.getScopedTensorName(name);\n            this.name = common_1.getUniqueTensorName(this.originalName);\n        }\n        this.rank = shape.length;\n    }\n    return SymbolicTensor;\n}());\nexports.SymbolicTensor = SymbolicTensor;\nvar _nextNodeID = 0;\nvar Node = (function () {\n    function Node(config, callArgs) {\n        this.callArgs = callArgs;\n        this.id = _nextNodeID++;\n        this.outboundLayer = config.outboundLayer;\n        this.inboundLayers = config.inboundLayers;\n        this.nodeIndices = config.nodeIndices;\n        this.tensorIndices = config.tensorIndices;\n        this.inputTensors = config.inputTensors;\n        this.outputTensors = config.outputTensors;\n        this.inputMasks = config.inputMasks;\n        this.outputMasks = config.outputMasks;\n        this.inputShapes = config.inputShapes;\n        this.outputShapes = config.outputShapes;\n        for (var _i = 0, _a = config.inboundLayers; _i < _a.length; _i++) {\n            var layer = _a[_i];\n            if (layer != null) {\n                layer.outboundNodes.push(this);\n            }\n        }\n        config.outboundLayer.inboundNodes.push(this);\n    }\n    Node.prototype.getConfig = function () {\n        var inboundNames = [];\n        for (var _i = 0, _a = this.inboundLayers; _i < _a.length; _i++) {\n            var layer = _a[_i];\n            if (layer != null) {\n                inboundNames.push(layer.name);\n            }\n            else {\n                inboundNames.push(null);\n            }\n        }\n        return {\n            outboundLayer: this.outboundLayer ? this.outboundLayer.name : null,\n            inboundLayers: inboundNames,\n            nodeIndices: this.nodeIndices,\n            tensorIndices: this.tensorIndices\n        };\n    };\n    return Node;\n}());\nexports.Node = Node;\nvar _nextLayerID = 0;\nvar Layer = (function (_super) {\n    __extends(Layer, _super);\n    function Layer(config) {\n        var _this = _super.call(this) || this;\n        _this._callHook = null;\n        _this._addedWeightNames = [];\n        _this._stateful = false;\n        _this.id = _nextLayerID++;\n        _this.activityRegularizer = null;\n        _this.inputSpec = null;\n        _this.supportsMasking = false;\n        _this._trainableWeights = [];\n        _this._nonTrainableWeights = [];\n        _this._losses = [];\n        _this._updates = [];\n        _this._built = false;\n        _this.inboundNodes = [];\n        _this.outboundNodes = [];\n        var name = config.name;\n        if (!name) {\n            var prefix = _this.getClassName();\n            name = generic_utils.toSnakeCase(prefix) + '_' + state_1.getUid(prefix);\n        }\n        _this.name = name;\n        _this.trainable = config.trainable == null ? true : config.trainable;\n        _this.updatable = config.updatable == null ? true : config.updatable;\n        if (config.inputShape != null || config.batchInputShape != null) {\n            var batchInputShape = void 0;\n            if (config.batchInputShape != null) {\n                batchInputShape = config.batchInputShape;\n            }\n            else if (config.inputShape != null) {\n                var batchSize = null;\n                if (config.batchSize != null) {\n                    batchSize = config.batchSize;\n                }\n                batchInputShape = [batchSize].concat(config.inputShape);\n            }\n            _this.batchInputShape = batchInputShape;\n            var dtype = config.dtype;\n            if (dtype == null) {\n                dtype = config.inputDType;\n            }\n            if (dtype == null) {\n                dtype = 'float32';\n            }\n            _this.dtype = dtype;\n        }\n        if (config.weights != null) {\n            _this.initialWeights = config.weights;\n        }\n        else {\n            _this.initialWeights = null;\n        }\n        return _this;\n    }\n    Layer.nodeKey = function (layer, nodeIndex) {\n        return layer.name + '_ib-' + nodeIndex.toString();\n    };\n    Layer.prototype.getNodeAtIndex = function (nodeIndex, attrName) {\n        if (this.inboundNodes.length === 0) {\n            throw new errors_1.RuntimeError('The layer has never been called ' +\n                (\"and thus has no defined \" + attrName + \".\"));\n        }\n        if (this.inboundNodes.length <= nodeIndex) {\n            throw new errors_1.ValueError(\"Asked to get \" + attrName + \" at node \" + nodeIndex + \", \" +\n                (\"but the layer has only \" + this.inboundNodes.length + \" inbound nodes.\"));\n        }\n        return this.inboundNodes[nodeIndex];\n    };\n    Layer.prototype.getInputAt = function (nodeIndex) {\n        return generic_utils.singletonOrArray(this.getNodeAtIndex(nodeIndex, 'input').inputTensors);\n    };\n    Layer.prototype.getOutputAt = function (nodeIndex) {\n        return generic_utils.singletonOrArray(this.getNodeAtIndex(nodeIndex, 'output').outputTensors);\n    };\n    Object.defineProperty(Layer.prototype, \"input\", {\n        get: function () {\n            if (this.inboundNodes.length > 1) {\n                throw new errors_1.AttributeError(\"Layer \" + this.name +\n                    ' has multiple inbound nodes, ' +\n                    'hence the notion of \"layer input\" ' +\n                    'is ill-defined. ' +\n                    'Use `getInputAt(nodeIndex)` instead.');\n            }\n            else if (this.inboundNodes.length === 0) {\n                throw new errors_1.AttributeError(\"Layer \" + this.name +\n                    ' is not connected, no input to return.');\n            }\n            return generic_utils.singletonOrArray(this.getNodeAtIndex(0, 'input').inputTensors);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Layer.prototype, \"output\", {\n        get: function () {\n            if (this.inboundNodes.length === 0) {\n                throw new errors_1.AttributeError(\"Layer \" + this.name +\n                    ' has no inbound nodes.');\n            }\n            if (this.inboundNodes.length > 1) {\n                throw new errors_1.AttributeError(\"Layer \" + this.name +\n                    ' has multiple inbound nodes, ' +\n                    'hence the notion of \"layer output\" ' +\n                    'is ill-defined. ' +\n                    'Use `getOutputAt(nodeIndex)` instead.');\n            }\n            return generic_utils.singletonOrArray(this.getNodeAtIndex(0, 'output').outputTensors);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Layer.prototype, \"losses\", {\n        get: function () {\n            return this._losses;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Layer.prototype.calculateLosses = function () {\n        return this.losses.map(function (lossFn) { return lossFn(); });\n    };\n    Object.defineProperty(Layer.prototype, \"updates\", {\n        get: function () {\n            return this._updates;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Layer.prototype, \"built\", {\n        get: function () {\n            return this._built;\n        },\n        set: function (built) {\n            this._built = built;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Layer.prototype, \"trainableWeights\", {\n        get: function () {\n            if (this.trainable) {\n                return this._trainableWeights;\n            }\n            else {\n                return [];\n            }\n        },\n        set: function (weights) {\n            this._trainableWeights = weights;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Layer.prototype, \"nonTrainableWeights\", {\n        get: function () {\n            if (!this.trainable) {\n                return this._trainableWeights.concat(this._nonTrainableWeights);\n            }\n            else {\n                return this._nonTrainableWeights;\n            }\n        },\n        set: function (weights) {\n            this._nonTrainableWeights = weights;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Layer.prototype, \"weights\", {\n        get: function () {\n            return this.trainableWeights.concat(this.nonTrainableWeights);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Layer.prototype, \"stateful\", {\n        get: function () {\n            return this._stateful;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Layer.prototype.assertInputCompatibility = function (inputs) {\n        inputs = generic_utils.toList(inputs);\n        if (this.inputSpec == null || this.inputSpec.length === 0) {\n            return;\n        }\n        var inputSpec = generic_utils.toList(this.inputSpec);\n        if (inputs.length !== inputSpec.length) {\n            throw new errors_1.ValueError(\"Layer \" + this.name + \" expects \" + inputSpec.length + \" inputs, \" +\n                (\"but it received \" + inputs.length + \" input tensors. \") +\n                (\"Input received: \" + inputs));\n        }\n        for (var inputIndex = 0; inputIndex < inputs.length; inputIndex++) {\n            var x = inputs[inputIndex];\n            var spec = inputSpec[inputIndex];\n            if (spec == null) {\n                continue;\n            }\n            var ndim = x.rank;\n            if (spec.ndim != null) {\n                if (ndim !== spec.ndim) {\n                    throw new errors_1.ValueError(\"Input \" + inputIndex + \" is incompatible with layer \" + this.name + \": \" +\n                        (\"expected ndim=\" + spec.ndim + \", found ndim=\" + ndim));\n                }\n            }\n            if (spec.maxNDim != null) {\n                if (ndim > spec.maxNDim) {\n                    throw new errors_1.ValueError(\"Input \" + inputIndex + \" is incompatible with layer \" + this.name +\n                        (\": expected max_ndim=\" + spec.maxNDim + \", found ndim=\" + ndim));\n                }\n            }\n            if (spec.minNDim != null) {\n                if (ndim < spec.minNDim) {\n                    throw new errors_1.ValueError(\"Input \" + inputIndex + \" is incompatible with layer \" + this.name +\n                        (\": expected min_ndim=\" + spec.minNDim + \", found ndim=\" + ndim + \".\"));\n                }\n            }\n            if (spec.dtype != null) {\n                if (x.dtype !== spec.dtype) {\n                    throw new errors_1.ValueError(\"Input \" + inputIndex + \" is incompatible with layer \" + this.name + \" \" +\n                        (\": expected dtype=\" + spec.dtype + \", found dtype=\" + x.dtype + \".\"));\n                }\n            }\n            if (spec.axes) {\n                var xShape = x.shape;\n                for (var key in spec.axes) {\n                    var axis = Number(key);\n                    var value = spec.axes[key];\n                    var xShapeAtAxis = axis >= 0 ? xShape[axis] : xShape[xShape.length + axis];\n                    if (value != null && [value, null].indexOf(xShapeAtAxis) === -1) {\n                        throw new errors_1.ValueError(\"Input \" + inputIndex + \" is incompatible with layer \" +\n                            (this.name + \": expected axis \" + axis + \" of input shape to \") +\n                            (\"have value \" + value + \" but got shape \" + xShape + \".\"));\n                    }\n                }\n            }\n            if (spec.shape != null) {\n                for (var i = 0; i < spec.shape.length; ++i) {\n                    var specDim = spec.shape[i];\n                    var dim = x.shape[i];\n                    if (specDim != null && dim != null) {\n                        if (specDim !== dim) {\n                            throw new errors_1.ValueError(\"Input \" + inputIndex + \" is incompatible with layer \" +\n                                (this.name + \": expected shape=\" + spec.shape + \", \") +\n                                'found shape=${xShape}.');\n                        }\n                    }\n                }\n            }\n        }\n    };\n    Layer.prototype.call = function (inputs, kwargs) {\n        return inputs;\n    };\n    Layer.prototype.invokeCallHook = function (inputs, kwargs) {\n        if (this._callHook != null) {\n            this._callHook(inputs, kwargs);\n        }\n    };\n    Layer.prototype.setCallHook = function (callHook) {\n        this._callHook = callHook;\n    };\n    Layer.prototype.clearCallHook = function () {\n        this._callHook = null;\n    };\n    Layer.prototype.apply = function (inputs, kwargs) {\n        var _this = this;\n        kwargs = kwargs || {};\n        var inputsList = generic_utils.toList(inputs);\n        var allAreSymbolic = true;\n        for (var _i = 0, inputsList_1 = inputsList; _i < inputsList_1.length; _i++) {\n            var input = inputsList_1[_i];\n            if (!(input instanceof SymbolicTensor)) {\n                allAreSymbolic = false;\n                break;\n            }\n        }\n        var noneAreSymbolic = true;\n        for (var _a = 0, inputsList_2 = inputsList; _a < inputsList_2.length; _a++) {\n            var input = inputsList_2[_a];\n            if (input instanceof SymbolicTensor) {\n                noneAreSymbolic = false;\n                break;\n            }\n        }\n        if (allAreSymbolic === noneAreSymbolic) {\n            throw new errors_1.ValueError('Arguments to apply() must be all ' +\n                'SymbolicTensors or all Tensors');\n        }\n        return common_1.nameScope(this.name, function () {\n            if (!_this.built) {\n                _this.assertInputCompatibility(inputs);\n                var inputShapes = [];\n                for (var _i = 0, _a = generic_utils.toList(inputs); _i < _a.length; _i++) {\n                    var xElem = _a[_i];\n                    inputShapes.push(xElem.shape);\n                }\n                _this.build(generic_utils.singletonOrArray(inputShapes));\n                _this.built = true;\n                if (_this.initialWeights) {\n                    _this.setWeights(_this.initialWeights);\n                }\n            }\n            _this.assertInputCompatibility(inputs);\n            if (noneAreSymbolic) {\n                var output = _this.call(inputs, kwargs);\n                var outputList = generic_utils.toList(output);\n                var outputListCopy = [];\n                for (var _b = 0, outputList_1 = outputList; _b < outputList_1.length; _b++) {\n                    var x = outputList_1[_b];\n                    if (inputsList.indexOf(x) !== -1) {\n                        x = x.clone();\n                    }\n                    outputListCopy.push(x);\n                }\n                output = generic_utils.singletonOrArray(outputListCopy);\n                if (_this.activityRegularizer != null) {\n                    throw new errors_1.NotImplementedError('Layer invocation in the presence of activity ' +\n                        'regularizer(s) is not supported yet.');\n                }\n                return output;\n            }\n            else {\n                var inputShape = collectInputShape(inputs);\n                var outputShape = _this.computeOutputShape(inputShape);\n                var output = void 0;\n                var outputDType_1 = guessOutputDType(inputs);\n                _this.warnOnIncompatibleInputShape(Array.isArray(inputs) ? inputShape[0] :\n                    inputShape);\n                if (outputShape != null && outputShape.length > 0 &&\n                    Array.isArray(outputShape[0])) {\n                    output = outputShape\n                        .map(function (shape, index) { return new SymbolicTensor(outputDType_1, shape, _this, generic_utils.toList(inputs), kwargs, _this.name, index); });\n                }\n                else {\n                    output = new SymbolicTensor(outputDType_1, outputShape, _this, generic_utils.toList(inputs), kwargs, _this.name);\n                }\n                _this.addInboundNode(inputs, output, null, null, inputShape, outputShape, kwargs);\n                if (_this.activityRegularizer != null) {\n                    throw new errors_1.NotImplementedError('Layer invocation in the presence of activity ' +\n                        'regularizer(s) is not supported yet.');\n                }\n                return output;\n            }\n        });\n    };\n    Layer.prototype.warnOnIncompatibleInputShape = function (inputShape) {\n        if (this.batchInputShape == null) {\n            return;\n        }\n        else if (inputShape.length !== this.batchInputShape.length) {\n            console.warn(\"The rank of the input tensor provided (shape: \" +\n                (JSON.stringify(inputShape) + \") does not match that of the \") +\n                (\"batchInputShape (\" + JSON.stringify(this.batchInputShape) + \") \") +\n                (\"of the layer \" + this.name));\n        }\n        else {\n            var dimMismatch_1 = false;\n            this.batchInputShape.forEach(function (dimension, i) {\n                if (dimension != null && inputShape[i] != null &&\n                    inputShape[i] !== dimension) {\n                    dimMismatch_1 = true;\n                }\n            });\n            if (dimMismatch_1) {\n                console.warn(\"The shape of the input tensor \" +\n                    (\"(\" + JSON.stringify(inputShape) + \") does not \") +\n                    (\"match the expectation of layer \" + this.name + \": \") +\n                    (\"\" + JSON.stringify(this.batchInputShape)));\n            }\n        }\n    };\n    Object.defineProperty(Layer.prototype, \"outputShape\", {\n        get: function () {\n            if (this.inboundNodes == null || this.inboundNodes.length === 0) {\n                throw new errors_1.AttributeError(\"The layer \" + this.name + \" has never been called and thus has no \" +\n                    \"defined output shape.\");\n            }\n            var allOutputShapes = [];\n            for (var _i = 0, _a = this.inboundNodes; _i < _a.length; _i++) {\n                var node = _a[_i];\n                var shapeString = JSON.stringify(node.outputShapes);\n                if (allOutputShapes.indexOf(shapeString) === -1) {\n                    allOutputShapes.push(shapeString);\n                }\n            }\n            if (allOutputShapes.length === 1) {\n                var outputShapes = this.inboundNodes[0].outputShapes;\n                if (Array.isArray(outputShapes) && Array.isArray(outputShapes[0]) &&\n                    outputShapes.length === 1) {\n                    return outputShapes[0];\n                }\n                else {\n                    return outputShapes;\n                }\n            }\n            else {\n                throw new errors_1.AttributeError(\"The layer \" + this.name + \" has multiple inbound nodes with different \" +\n                    \"output shapes. Hence the notion of \\\"outut shape\\\" is ill-defined \" +\n                    \"for the layer.\");\n            }\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Layer.prototype.countParams = function () {\n        if (!this.built) {\n            throw new errors_1.RuntimeError(\"You tried to call countParams() on \" + this.name + \", \" +\n                \"but the layer is not built yet. Build it first by calling \" +\n                \"build(batchInputShape).\");\n        }\n        return variable_utils.countParamsInWeights(this.weights);\n    };\n    Layer.prototype.build = function (inputShape) {\n        this.built = true;\n    };\n    Layer.prototype.getWeights = function (trainableOnly) {\n        if (trainableOnly === void 0) { trainableOnly = false; }\n        return variables_1.batchGetValue(trainableOnly ? this.trainableWeights : this.weights);\n    };\n    Layer.prototype.setWeights = function (weights) {\n        var _this = this;\n        tfjs_core_1.tidy(function () {\n            var params = _this.weights;\n            if (params.length !== weights.length) {\n                throw new errors_1.ValueError(\"You called setWeights(weights) on layer \\\"\" + _this.name + \"\\\" \" +\n                    (\"with a weight list of length \" + weights.length + \", \") +\n                    (\"but the layer was expecting \" + params.length + \" weights. \") +\n                    (\"Provided weights: \" + weights + \"...\"));\n            }\n            if (params.length === 0) {\n                return;\n            }\n            var weightValueTuples = [];\n            var paramValues = variables_1.batchGetValue(params);\n            for (var i = 0; i < paramValues.length; ++i) {\n                var pv = paramValues[i];\n                var p = params[i];\n                var w = weights[i];\n                if (!tfjs_core_1.util.arraysEqual(pv.shape, w.shape)) {\n                    throw new errors_1.ValueError(\"Layer weight shape \" + pv.shape + \" \" +\n                        (\"not compatible with provided weight shape \" + w.shape));\n                }\n                weightValueTuples.push([p, w]);\n            }\n            variables_1.batchSetValue(weightValueTuples);\n        });\n    };\n    Layer.prototype.addWeight = function (name, shape, dtype, initializer, regularizer, trainable, constraint) {\n        if (this._addedWeightNames.indexOf(name) !== -1) {\n            throw new errors_1.ValueError(\"Duplicate weight name \" + name + \" for layer \" + this.name);\n        }\n        this._addedWeightNames.push(name);\n        if (dtype == null) {\n            dtype = 'float32';\n        }\n        var weight = new variables_1.LayerVariable(initializer.apply(shape, dtype), dtype, name, trainable, constraint);\n        if (regularizer != null) {\n            this.addLoss(function () { return regularizer.apply(weight.read()); });\n        }\n        if (trainable == null) {\n            trainable = true;\n        }\n        if (trainable) {\n            this._trainableWeights.push(weight);\n        }\n        else {\n            this._nonTrainableWeights.push(weight);\n        }\n        return weight;\n    };\n    Layer.prototype.addLoss = function (losses) {\n        if (losses == null || Array.isArray(losses) && losses.length === 0) {\n            return;\n        }\n        losses = generic_utils.toList(losses);\n        if (this._losses !== undefined && this._losses !== null) {\n            (_a = this.losses).push.apply(_a, losses);\n        }\n        var _a;\n    };\n    Layer.prototype.computeOutputShape = function (inputShape) {\n        return inputShape;\n    };\n    Layer.prototype.computeMask = function (inputs, mask) {\n        var _this = this;\n        if (!this.supportsMasking) {\n            if (mask != null) {\n                if (Array.isArray(mask)) {\n                    mask.forEach(function (maskElement) {\n                        if (maskElement != null) {\n                            throw new TypeError(\"Layer \" + _this.name + \" does not support masking,\" +\n                                'but was passed an inputMask.');\n                        }\n                    });\n                }\n                else {\n                    throw new TypeError(\"Layer \" + this.name + \" does not support masking,\" +\n                        'but was passed an inputMask.');\n                }\n            }\n            return null;\n        }\n        return mask;\n    };\n    Layer.prototype.addInboundNode = function (inputTensors, outputTensors, inputMasks, outputMasks, inputShapes, outputShapes, kwargs) {\n        if (kwargs === void 0) { kwargs = null; }\n        var inputTensorList = generic_utils.toList(inputTensors);\n        outputTensors = generic_utils.toList(outputTensors);\n        inputMasks = generic_utils.toList(inputMasks);\n        outputMasks = generic_utils.toList(outputMasks);\n        inputShapes = types_utils.normalizeShapeList(inputShapes);\n        outputShapes = types_utils.normalizeShapeList(outputShapes);\n        var inboundLayers = [];\n        var nodeIndices = [];\n        var tensorIndices = [];\n        for (var _i = 0, inputTensorList_1 = inputTensorList; _i < inputTensorList_1.length; _i++) {\n            var x = inputTensorList_1[_i];\n            inboundLayers.push(x.sourceLayer);\n            nodeIndices.push(x.nodeIndex);\n            tensorIndices.push(x.tensorIndex);\n        }\n        new Node({\n            outboundLayer: this,\n            inboundLayers: inboundLayers,\n            nodeIndices: nodeIndices,\n            tensorIndices: tensorIndices,\n            inputTensors: inputTensorList,\n            outputTensors: outputTensors,\n            inputMasks: inputMasks,\n            outputMasks: outputMasks,\n            inputShapes: inputShapes,\n            outputShapes: outputShapes\n        }, kwargs);\n        for (var i = 0; i < outputTensors.length; i++) {\n            outputTensors[i].sourceLayer = this;\n            outputTensors[i].nodeIndex = this.inboundNodes.length - 1;\n            outputTensors[i].tensorIndex = i;\n        }\n    };\n    Layer.prototype.getConfig = function () {\n        var config = { name: this.name, trainable: this.trainable };\n        if (this.batchInputShape != null) {\n            config['batchInputShape'] = this.batchInputShape;\n        }\n        if (this.dtype != null) {\n            config['dtype'] = this.dtype;\n        }\n        return config;\n    };\n    return Layer;\n}(tfjs_core_1.serialization.Serializable));\nexports.Layer = Layer;\nfunction collectInputShape(inputTensors) {\n    inputTensors =\n        generic_utils.toList(inputTensors);\n    var shapes = [];\n    for (var _i = 0, inputTensors_1 = inputTensors; _i < inputTensors_1.length; _i++) {\n        var x = inputTensors_1[_i];\n        shapes.push(x.shape);\n    }\n    return generic_utils.singletonOrArray(shapes);\n}\nfunction guessOutputDType(inputTensors) {\n    return 'float32';\n}\nfunction getSourceInputs(tensor, layer, nodeIndex) {\n    if (layer == null || (nodeIndex != null && nodeIndex > 0)) {\n        layer = tensor.sourceLayer;\n        nodeIndex = tensor.nodeIndex;\n    }\n    if (layer.inboundNodes.length === 0) {\n        return [tensor];\n    }\n    else {\n        var node = layer.inboundNodes[nodeIndex];\n        if (node.inboundLayers.length === 0) {\n            return node.inputTensors;\n        }\n        else {\n            var sourceTensors = [];\n            for (var i = 0; i < node.inboundLayers.length; i++) {\n                var x = node.inputTensors[i];\n                var layer_1 = node.inboundLayers[i];\n                var nodeIndex_1 = node.nodeIndices[i];\n                var previousSources = getSourceInputs(x, layer_1, nodeIndex_1);\n                for (var _i = 0, previousSources_1 = previousSources; _i < previousSources_1.length; _i++) {\n                    var x_1 = previousSources_1[_i];\n                    if (sourceTensors.indexOf(x_1) === -1) {\n                        sourceTensors.push(x_1);\n                    }\n                }\n            }\n            return sourceTensors;\n        }\n    }\n}\nexports.getSourceInputs = getSourceInputs;\n\n},{\"../backend/state\":185,\"../common\":189,\"../errors\":196,\"../utils/generic_utils\":224,\"../utils/types_utils\":228,\"../utils/variable_utils\":229,\"../variables\":230,\"@tensorflow/tfjs-core\":59}],195:[function(require,module,exports){\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 tfc = require(\"@tensorflow/tfjs-core\");\nvar tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar state_1 = require(\"../backend/state\");\nvar K = require(\"../backend/tfjs_backend\");\nvar base_callbacks_1 = require(\"../base_callbacks\");\nvar common_1 = require(\"../common\");\nvar errors_1 = require(\"../errors\");\nvar logs_1 = require(\"../logs\");\nvar losses = require(\"../losses\");\nvar Metrics = require(\"../metrics\");\nvar optimizers = require(\"../optimizers\");\nvar generic_utils_1 = require(\"../utils/generic_utils\");\nvar layer_utils_1 = require(\"../utils/layer_utils\");\nvar math_utils_1 = require(\"../utils/math_utils\");\nvar container_1 = require(\"./container\");\nvar executor_1 = require(\"./executor\");\nfunction isDataTensor(x) {\n    return x instanceof tfjs_core_1.Tensor;\n}\nexports.isDataTensor = isDataTensor;\nfunction isDataArray(x) {\n    return Array.isArray(x);\n}\nexports.isDataArray = isDataArray;\nfunction isDataDict(x) {\n    return !isDataTensor(x) && !isDataArray(x);\n}\nexports.isDataDict = isDataDict;\nfunction standardizeInputData(data, names, shapes, checkBatchAxis, exceptionPrefix) {\n    if (checkBatchAxis === void 0) { checkBatchAxis = true; }\n    if (exceptionPrefix === void 0) { exceptionPrefix = ''; }\n    if (names == null || names.length === 0) {\n        if (data != null) {\n            var gotUnexpectedData = false;\n            if (isDataArray(data) && data.length > 0) {\n                gotUnexpectedData = true;\n            }\n            else if (isDataDict(data)) {\n                for (var key in data) {\n                    if (data.hasOwnProperty(key)) {\n                        gotUnexpectedData = true;\n                        break;\n                    }\n                }\n            }\n            else {\n                gotUnexpectedData = true;\n            }\n            if (gotUnexpectedData) {\n                throw new errors_1.ValueError(\"Error when checking model \" + exceptionPrefix + \" expected no data, \" +\n                    (\"but got \" + data));\n            }\n        }\n        return [];\n    }\n    if (data == null) {\n        return names.map(function (name) { return null; });\n    }\n    var arrays;\n    if (isDataDict(data)) {\n        data = data;\n        arrays = [];\n        for (var _i = 0, names_1 = names; _i < names_1.length; _i++) {\n            var name_1 = names_1[_i];\n            if (data[name_1] == null) {\n                throw new errors_1.ValueError(\"No data provided for \\\"\" + name_1 + \"\\\". Need data for each key in: \" +\n                    (\"\" + names));\n            }\n            arrays.push(data[name_1]);\n        }\n    }\n    else if (isDataArray(data)) {\n        data = data;\n        if (data.length !== names.length) {\n            throw new errors_1.ValueError(\"Error when checking model \" + exceptionPrefix + \": the Array of \" +\n                \"Tensors that you are passing to your model is not the size the \" +\n                (\"model expected. Expected to see \" + names.length + \" Tensor(s), but \") +\n                (\"instead got the following list of Tensor(s): \" + data));\n        }\n        arrays = data;\n    }\n    else {\n        data = data;\n        if (names.length > 1) {\n            throw new errors_1.ValueError(\"The model \" + exceptionPrefix + \" expects \" + names.length + \" Tensor(s), \" +\n                (\"but only received one Tensor. Found: Tensor with shape \" + data.shape));\n        }\n        arrays = [data];\n    }\n    for (var i = 0; i < names.length; ++i) {\n        var array = arrays[i];\n        if (array.shape.length === 1) {\n            arrays[i] = K.expandDims(array, 1);\n        }\n    }\n    if (shapes != null) {\n        for (var i = 0; i < names.length; ++i) {\n            if (shapes[i] == null) {\n                continue;\n            }\n            var array = arrays[i];\n            if (array.shape.length !== shapes[i].length) {\n                throw new errors_1.ValueError(\"Error when checking \" + exceptionPrefix + \": expected \" + names[i] + \" \" +\n                    (\"to have \" + shapes[i].length + \" dimension(s). but got array with \") +\n                    (\"shape \" + array.shape));\n            }\n            for (var j = 0; j < shapes[i].length; ++j) {\n                if (j === 0 && !checkBatchAxis) {\n                    continue;\n                }\n                var dim = array.shape[j];\n                var refDim = shapes[i][j];\n                if (refDim != null && refDim >= 0 && dim !== refDim) {\n                    throw new errors_1.ValueError(\"Error when checking \" + exceptionPrefix + \": expected \" + names[i] + \" \" +\n                        (\"to have shape [\" + shapes[i] + \"], but got array with shape \") +\n                        (\"[\" + array.shape + \"].\"));\n                }\n            }\n        }\n    }\n    return arrays;\n}\nexports.standardizeInputData = standardizeInputData;\nfunction checkArrayLengths(inputs, targets, weights) {\n    var setX = generic_utils_1.unique(inputs.map(function (input) { return input.shape[0]; }));\n    setX.sort();\n    var setY = generic_utils_1.unique(targets.map(function (target) { return target.shape[0]; }));\n    setY.sort();\n    if (setX.length > 1) {\n        throw new errors_1.ValueError(\"All input Tensors (x) should have the same number of samples. \" +\n            \"Got array shapes: \" +\n            (\"\" + JSON.stringify(inputs.map(function (input) { return input.shape; }))));\n    }\n    if (setY.length > 1) {\n        throw new errors_1.ValueError(\"All target Tensors (y) should have the same number of samples. \" +\n            \"Got array shapes: \" +\n            (\"\" + JSON.stringify(targets.map(function (target) { return target.shape; }))));\n    }\n    if (setX.length > 0 && setY.length > 0 && !tfjs_core_1.util.arraysEqual(setX, setY)) {\n        throw new errors_1.ValueError(\"Input Tensors should have the same number of samples as target \" +\n            (\"Tensors. Found \" + setX[0] + \" input sample(s) and \" + setY[0] + \" target \") +\n            \"sample(s).\");\n    }\n}\nexports.checkArrayLengths = checkArrayLengths;\nfunction checkLossAndTargetCompatibility(targets, lossFns, outputShapes) {\n    var keyLosses = [\n        losses.meanSquaredError, losses.binaryCrossentropy,\n        losses.categoricalCrossentropy\n    ];\n    for (var i = 0; i < targets.length; ++i) {\n        var y = targets[i];\n        var loss = lossFns[i];\n        var shape = outputShapes[i];\n        if (loss == null) {\n            continue;\n        }\n        if (loss === losses.categoricalCrossentropy) {\n            if (y.shape[y.shape.length - 1] === 1) {\n                throw new errors_1.ValueError(\"You are passing a target array of shape \" + y.shape + \" while using \" +\n                    \"a loss 'categorical_crossentropy'. 'categorical_crossentropy'\" +\n                    \"expects targets to be binary matrices (1s and 0s) of shape \" +\n                    \"[samples, classes].\");\n            }\n        }\n        if (keyLosses.indexOf(loss) !== -1) {\n            var slicedYShape = y.shape.slice(1);\n            var slicedShape = shape.slice(1);\n            for (var j = 0; j < slicedYShape.length; ++j) {\n                var targetDim = slicedYShape[j];\n                var outDim = slicedShape[j];\n                if (outDim != null && targetDim !== outDim) {\n                    throw new errors_1.ValueError(\"A target Tensor with shape \" + y.shape + \" was passed for an \" +\n                        (\"output of shape \" + shape + \", while using a loss function that \") +\n                        \"expects targets to have the same shape as the output.\");\n                }\n            }\n        }\n    }\n}\nfunction makeBatches(size, batchSize) {\n    var output = [];\n    var batchStart = 0;\n    var batchEnd = null;\n    while (batchStart < size) {\n        batchEnd = batchStart + batchSize;\n        if (batchEnd >= size) {\n            batchEnd = size;\n        }\n        output.push([batchStart, batchEnd]);\n        batchStart = batchEnd;\n    }\n    return output;\n}\nexports.makeBatches = makeBatches;\nfunction sliceArrays(arrays, start, stop) {\n    if (arrays == null) {\n        return [null];\n    }\n    else if (Array.isArray(arrays)) {\n        return arrays.map(function (array) { return K.sliceAlongFirstAxis(array, start, stop - start); });\n    }\n    else {\n        return K.sliceAlongFirstAxis(arrays, start, stop - start);\n    }\n}\nfunction sliceArraysByIndices(arrays, indices) {\n    return tfc.tidy(function () {\n        if (arrays == null) {\n            return null;\n        }\n        else if (Array.isArray(arrays)) {\n            return arrays.map(function (array) { return sliceArraysByIndices(array, indices); });\n        }\n        else {\n            return K.gather(arrays, indices.dtype === 'int32' ? indices : indices.toInt());\n        }\n    });\n}\nexports.sliceArraysByIndices = sliceArraysByIndices;\nfunction checkInputData(data, names, shapes, checkBatchAxis, exceptionPrefix) {\n    if (checkBatchAxis === void 0) { checkBatchAxis = true; }\n    if (exceptionPrefix === void 0) { exceptionPrefix = ''; }\n    var arrays;\n    if (Array.isArray(data)) {\n        if (data.length !== names.length) {\n            throw new errors_1.ValueError(\"Error when checking model \" + exceptionPrefix + \": the Array of \" +\n                \"Tensors that you are passing to your model is not the size the \" +\n                (\"the model expected. Expected to see \" + names.length + \" Tensor(s),\") +\n                (\" but instead got \" + data.length + \" Tensors(s).\"));\n        }\n        arrays = data;\n    }\n    else {\n        if (names.length > 1) {\n            throw new errors_1.ValueError(\"The model expects \" + names.length + \" \" + exceptionPrefix + \" Tensors, \" +\n                \"but only received one Tensor. Found: array with shape \" +\n                (JSON.stringify(data.shape) + \".\"));\n        }\n        arrays = [data];\n    }\n    if (shapes != null) {\n        for (var i = 0; i < names.length; ++i) {\n            if (shapes[i] == null) {\n                continue;\n            }\n            var array = arrays[i];\n            if (array.shape.length !== shapes[i].length) {\n                throw new errors_1.ValueError(\"Error when checking \" + exceptionPrefix + \": expected \" + names[i] + \" \" +\n                    (\"to have \" + shapes[i].length + \" dimension(s), but got array with \") +\n                    (\"shape \" + JSON.stringify(array.shape)));\n            }\n            for (var j = 0; j < shapes[i].length; ++j) {\n                if (j === 0 && !checkBatchAxis) {\n                    continue;\n                }\n                var dim = array.shape[j];\n                var refDim = shapes[i][j];\n                if (refDim != null) {\n                    if (refDim !== dim) {\n                        throw new errors_1.ValueError(\"Error when checking \" + exceptionPrefix + \": expected \" +\n                            (names[i] + \" to have shape \" + JSON.stringify(shapes[i]) + \" but \") +\n                            (\"got array with shape \" + JSON.stringify(array.shape) + \".\"));\n                    }\n                }\n            }\n        }\n    }\n}\nfunction collectMetrics(metrics, outputNames) {\n    if (metrics == null || Array.isArray(metrics) && metrics.length === 0) {\n        return outputNames.map(function (name) { return []; });\n    }\n    if (Array.isArray(metrics)) {\n        return outputNames.map(function (name) { return metrics; });\n    }\n    else if (metrics != null) {\n        var nestedMetrics = [];\n        for (var _i = 0, outputNames_1 = outputNames; _i < outputNames_1.length; _i++) {\n            var name_2 = outputNames_1[_i];\n            var outputMetrics = metrics.hasOwnProperty(name_2) ? metrics[name_2] : [];\n            if (!Array.isArray(outputMetrics)) {\n                outputMetrics = [outputMetrics];\n            }\n            nestedMetrics.push(outputMetrics);\n        }\n        return nestedMetrics;\n    }\n    else {\n        throw new TypeError('Type of metrics argument not understood. Expected an Array or ' +\n            'Object, found: ' + metrics);\n    }\n}\nvar ModelLoggingVerbosity;\n(function (ModelLoggingVerbosity) {\n    ModelLoggingVerbosity[ModelLoggingVerbosity[\"SILENT\"] = 0] = \"SILENT\";\n    ModelLoggingVerbosity[ModelLoggingVerbosity[\"VERBOSE\"] = 1] = \"VERBOSE\";\n})(ModelLoggingVerbosity = exports.ModelLoggingVerbosity || (exports.ModelLoggingVerbosity = {}));\nvar Model = (function (_super) {\n    __extends(Model, _super);\n    function Model(config) {\n        return _super.call(this, config) || this;\n    }\n    Model.prototype.summary = function (lineLength, positions, printFn) {\n        if (printFn === void 0) { printFn = console.log; }\n        if (!this.built) {\n            throw new errors_1.ValueError(\"This model has never been called, thus its weights have not been \" +\n                \"created yet. So no summary can be displayed. Build the model \" +\n                \"first (e.g., by calling it on some test data).\");\n        }\n        layer_utils_1.printSummary(this, lineLength, positions, printFn);\n    };\n    Model.prototype.compile = function (config) {\n        var _this = this;\n        if (config.loss == null) {\n            config.loss = [];\n        }\n        this.loss = config.loss;\n        if (typeof config.optimizer === 'string') {\n            this.optimizer = optimizers.getOptimizer(config.optimizer);\n        }\n        else {\n            if (!(config.optimizer instanceof tfjs_core_1.Optimizer)) {\n                throw new errors_1.ValueError(\"User-defined optimizer must be an instance of tf.Optimizer.\");\n            }\n            this.optimizer = config.optimizer;\n        }\n        var lossFunctions = [];\n        if (!Array.isArray(config.loss) && typeof config.loss !== 'string' &&\n            typeof config.loss !== 'function') {\n            config.loss = config.loss;\n            for (var name_3 in config.loss) {\n                if (this.outputNames.indexOf(name_3) === -1) {\n                    throw new errors_1.ValueError(\"Unknown entry in loss dictionary: \\\"\" + name_3 + \"\\\". Only expect the \" +\n                        (\"following keys: \" + this.outputNames));\n                }\n            }\n            for (var name_4 in this.outputNames) {\n                if (config.loss[name_4] == null) {\n                    console.warn(\"Output \\\"\" + name_4 + \"\\\" is missing from loss dictionary. We assume \" +\n                        \"this was done on purpose, and we will not be expecting data \" +\n                        (\"to be passed to \" + name_4 + \" during training\"));\n                }\n                lossFunctions.push(losses.get(config.loss[name_4]));\n            }\n        }\n        else if (Array.isArray(config.loss)) {\n            if (config.loss.length !== this.outputs.length) {\n                throw new errors_1.ValueError(\"When passing an Array as loss, it should have one entry per \" +\n                    (\"model output. The model has \" + this.outputs.length + \" output(s), \") +\n                    (\"but you passed loss=\" + config.loss + \".\"));\n            }\n            var theLosses = config.loss;\n            lossFunctions = theLosses.map(function (l) { return losses.get(l); });\n        }\n        else {\n            var lossFunction_1 = losses.get(config.loss);\n            this.outputs.map(function (layer) {\n                lossFunctions.push(lossFunction_1);\n            });\n        }\n        this.lossFunctions = lossFunctions;\n        this.feedOutputNames = [];\n        this.feedOutputShapes = [];\n        this.feedLossFns = [];\n        for (var i = 0; i < this.outputs.length; ++i) {\n            var shape = this.internalOutputShapes[i];\n            var name_5 = this.outputNames[i];\n            this.feedOutputNames.push(name_5);\n            this.feedOutputShapes.push(shape);\n            this.feedLossFns.push(this.lossFunctions[i]);\n        }\n        var skipTargetIndices = [];\n        this.metrics = config.metrics;\n        this.metricsNames = ['loss'];\n        this.metricsTensors = [];\n        common_1.nameScope('loss', function () {\n            for (var i = 0; i < _this.outputs.length; ++i) {\n                if (skipTargetIndices.indexOf(i) !== -1) {\n                    continue;\n                }\n                var weightedLoss = _this.lossFunctions[i];\n                if (_this.outputs.length > 1) {\n                    _this.metricsTensors.push([weightedLoss, i]);\n                    _this.metricsNames.push(_this.outputNames[i] + '_loss');\n                }\n            }\n        });\n        var nestedMetrics = collectMetrics(config.metrics, this.outputNames);\n        var appendMetric = function (outputIndex, metricName, metricTensor) {\n            if (_this.outputNames.length > 1) {\n                metricName = _this.outputNames[outputIndex] + '_' + metricName;\n            }\n            _this.metricsNames.push(metricName);\n            _this.metricsTensors.push([metricTensor, outputIndex]);\n        };\n        common_1.nameScope('metric', function () {\n            var _loop_1 = function (i) {\n                if (skipTargetIndices.indexOf(i) !== -1) {\n                    return \"continue\";\n                }\n                var outputMetrics = nestedMetrics[i];\n                var handleMetrics = function (metrics) {\n                    var metricNamePrefix = '';\n                    var metricName;\n                    var accFn;\n                    var weightedMetricFn;\n                    var _loop_2 = function (metric) {\n                        if (['accuracy', 'acc', 'crossentropy', 'ce'].indexOf(metric) !==\n                            -1) {\n                            var outputShape = _this.internalOutputShapes[i];\n                            if (outputShape[outputShape.length - 1] === 1 ||\n                                _this.lossFunctions[i] === losses.binaryCrossentropy) {\n                                if (['accuracy', 'acc'].indexOf(metric) !== -1) {\n                                    accFn = Metrics.binaryAccuracy;\n                                }\n                                else if (['crossentropy', 'ce'].indexOf(metric) !== -1) {\n                                    accFn = Metrics.binaryCrossentropy;\n                                }\n                            }\n                            else if (_this.lossFunctions[i] ===\n                                losses.sparseCategoricalCrossentropy) {\n                                if (['accuracy', 'acc'].indexOf(metric) !== -1) {\n                                    accFn = Metrics.sparseCategoricalAccuracy;\n                                }\n                                else if (['crossentropy', 'ce'].indexOf(metric) !== -1) {\n                                    accFn = Metrics.sparseCategoricalCrossentropy;\n                                }\n                            }\n                            else {\n                                if (['accuracy', 'acc'].indexOf(metric) !== -1) {\n                                    accFn = Metrics.categoricalAccuracy;\n                                }\n                                else if (['crossentropy', 'ce'].indexOf(metric) !== -1) {\n                                    accFn = Metrics.categoricalCrossentropy;\n                                }\n                            }\n                            var suffix = void 0;\n                            if (['accuracy', 'acc'].indexOf(metric) !== -1) {\n                                suffix = 'acc';\n                            }\n                            else if (['crossentropy', 'ce'].indexOf(metric) !== -1) {\n                                suffix = 'ce';\n                            }\n                            weightedMetricFn = accFn;\n                            metricName = metricNamePrefix + suffix;\n                        }\n                        else {\n                            var metricFn = Metrics.get(metric);\n                            weightedMetricFn = metricFn;\n                            metricName = metricNamePrefix + metric;\n                        }\n                        var metricResult;\n                        common_1.nameScope(metricName, function () {\n                            metricResult = weightedMetricFn;\n                        });\n                        appendMetric(i, metricName, metricResult);\n                    };\n                    for (var _i = 0, metrics_1 = metrics; _i < metrics_1.length; _i++) {\n                        var metric = metrics_1[_i];\n                        _loop_2(metric);\n                    }\n                };\n                handleMetrics(outputMetrics);\n            };\n            for (var i = 0; i < _this.outputs.length; ++i) {\n                _loop_1(i);\n            }\n        });\n        this.collectedTrainableWeights = this.trainableWeights;\n    };\n    Model.prototype.checkTrainableWeightsConsistency = function () {\n        if (this.collectedTrainableWeights == null) {\n            return;\n        }\n        if (this.trainableWeights.length !==\n            this.collectedTrainableWeights.length) {\n            console.warn('Discrepancy between trainableweights and collected trainable ' +\n                'weights. Did you set `model.trainable` without calling ' +\n                '`model.compile()` afterwards?');\n        }\n    };\n    Model.prototype.evaluate = function (x, y, config) {\n        if (config === void 0) { config = {}; }\n        var batchSize = config.batchSize == null ? 32 : config.batchSize;\n        var standardizedOuts = this.standardizeUserData(x, y, true, batchSize);\n        var ins = standardizedOuts[0].concat(standardizedOuts[1]);\n        this.makeTestFunction();\n        var f = this.testFunction;\n        var testOuts = this.testLoop(f, ins, batchSize, config.verbose, config.steps);\n        return generic_utils_1.singletonOrArray(testOuts);\n    };\n    Model.prototype.checkNumSamples = function (ins, batchSize, steps, stepsName) {\n        if (stepsName === void 0) { stepsName = 'steps'; }\n        var numSamples;\n        if (steps != null) {\n            numSamples = null;\n            if (batchSize != null) {\n                throw new errors_1.ValueError(\"If \" + stepsName + \" is set, batchSize must be null or undefined.\" +\n                    (\"Got batchSize = \" + batchSize));\n            }\n        }\n        else if (ins != null) {\n            if (Array.isArray(ins)) {\n                numSamples = ins[0].shape[0];\n            }\n            else {\n                numSamples = ins.shape[0];\n            }\n        }\n        else {\n            throw new errors_1.ValueError(\"Either the input data should have a defined shape, or \" +\n                (stepsName + \" shoud be specified.\"));\n        }\n        return numSamples;\n    };\n    Model.prototype.execute = function (inputs, outputs) {\n        if (Array.isArray(outputs) && outputs.length === 0) {\n            throw new errors_1.ValueError('`outputs` is an empty Array, which is not allowed.');\n        }\n        var outputsIsArray = Array.isArray(outputs);\n        var outputNames = (outputsIsArray ? outputs :\n            [outputs]);\n        var outputSymbolicTensors = this.retrieveSymbolicTensors(outputNames);\n        var feedDict = new executor_1.FeedDict();\n        if (inputs instanceof tfjs_core_1.Tensor) {\n            inputs = [inputs];\n        }\n        if (Array.isArray(inputs)) {\n            if (inputs.length !== this.inputs.length) {\n                throw new errors_1.ValueError(\"The number of inputs provided (\" + inputs.length + \") \" +\n                    \"does not match the number of inputs of this model \" +\n                    (\"(\" + this.inputs.length + \").\"));\n            }\n            for (var i = 0; i < this.inputs.length; ++i) {\n                feedDict.add(this.inputs[i], inputs[i]);\n            }\n        }\n        else {\n            for (var _i = 0, _a = this.inputs; _i < _a.length; _i++) {\n                var input = _a[_i];\n                var tensorValue = inputs[input.name];\n                if (tensorValue == null) {\n                    throw new errors_1.ValueError(\"No value is provided for the model's input \" + input.name);\n                }\n                feedDict.add(input, tensorValue);\n            }\n        }\n        var executeOutputs = executor_1.execute(outputSymbolicTensors, feedDict);\n        return outputsIsArray ? executeOutputs : executeOutputs[0];\n    };\n    Model.prototype.retrieveSymbolicTensors = function (symbolicTensorNames) {\n        var outputSymbolicTensors = generic_utils_1.pyListRepeat(null, symbolicTensorNames.length);\n        var outputsRemaining = symbolicTensorNames.length;\n        for (var _i = 0, _a = this.layers; _i < _a.length; _i++) {\n            var layer = _a[_i];\n            var layerOutputs = Array.isArray(layer.output) ?\n                layer.output :\n                [layer.output];\n            var layerOutputNames = layerOutputs.map(function (output) { return output.name; });\n            for (var i = 0; i < symbolicTensorNames.length; ++i) {\n                var index = layerOutputNames.indexOf(symbolicTensorNames[i]);\n                if (index !== -1) {\n                    outputSymbolicTensors[i] = layerOutputs[index];\n                    outputsRemaining--;\n                }\n                if (outputsRemaining === 0) {\n                    break;\n                }\n            }\n            if (outputsRemaining === 0) {\n                break;\n            }\n        }\n        if (outputsRemaining > 0) {\n            var remainingNames_1 = [];\n            outputSymbolicTensors.forEach(function (tensor, i) {\n                if (tensor == null) {\n                    remainingNames_1.push(symbolicTensorNames[i]);\n                }\n            });\n            throw new errors_1.ValueError(\"Cannot find SymbolicTensors for output name(s): \" +\n                (\"\" + JSON.stringify(remainingNames_1)));\n        }\n        return outputSymbolicTensors;\n    };\n    Model.prototype.predictLoop = function (ins, batchSize, verbose) {\n        var _this = this;\n        if (batchSize === void 0) { batchSize = 32; }\n        if (verbose === void 0) { verbose = false; }\n        return tfc.tidy(function () {\n            var numSamples = _this.checkNumSamples(ins);\n            if (verbose) {\n                throw new errors_1.NotImplementedError('Verbose predictLoop() is not implemented yet.');\n            }\n            var batches = makeBatches(numSamples, batchSize);\n            var outs = [];\n            var _loop_3 = function (batchIndex) {\n                var batchOuts = tfc.tidy(function () {\n                    var batchStart = batches[batchIndex][0];\n                    var batchEnd = batches[batchIndex][1];\n                    var insBatch = sliceArrays(ins, batchStart, batchEnd);\n                    var feeds = [];\n                    if (Array.isArray(insBatch)) {\n                        for (var i = 0; i < insBatch.length; ++i) {\n                            feeds.push({ key: _this.inputs[i], value: insBatch[i] });\n                        }\n                    }\n                    else {\n                        feeds.push({ key: _this.inputs[0], value: insBatch });\n                    }\n                    var feedDict = new executor_1.FeedDict(feeds);\n                    return executor_1.execute(_this.outputs, feedDict);\n                });\n                if (batchIndex === 0) {\n                    for (var _i = 0, batchOuts_1 = batchOuts; _i < batchOuts_1.length; _i++) {\n                        var batchOut = batchOuts_1[_i];\n                        outs.push(batchOut);\n                    }\n                }\n                else {\n                    for (var i = 0; i < batchOuts.length; ++i) {\n                        outs[i] = K.concatAlongFirstAxis(outs[i], batchOuts[i]);\n                    }\n                }\n            };\n            for (var batchIndex = 0; batchIndex < batches.length; ++batchIndex) {\n                _loop_3(batchIndex);\n            }\n            return generic_utils_1.singletonOrArray(outs);\n        });\n    };\n    Model.prototype.predict = function (x, config) {\n        if (config === void 0) { config = {}; }\n        checkInputData(x, this.inputNames, this.feedInputShapes, false);\n        var batchSize = config.batchSize == null ? 32 : config.batchSize;\n        return this.predictLoop(x, batchSize);\n    };\n    Model.prototype.predictOnBatch = function (x) {\n        checkInputData(x, this.inputNames, this.feedInputShapes, true);\n        return this.predictLoop(x, x.shape[0]);\n    };\n    Model.prototype.standardizeUserData = function (x, y, checkBatchAxis, batchSize) {\n        if (checkBatchAxis === void 0) { checkBatchAxis = true; }\n        if (this.optimizer == null) {\n            throw new errors_1.RuntimeError('You must compile a model before training/testing. Use ' +\n                'Model.compile(modelCompileConfig).');\n        }\n        var outputShapes = [];\n        for (var i = 0; i < this.feedOutputShapes.length; ++i) {\n            var outputShape = this.feedOutputShapes[i];\n            var lossFn = this.feedLossFns[i];\n            if (lossFn === losses.sparseCategoricalCrossentropy) {\n                outputShapes.push(outputShape.slice(0, outputShape.length - 1).concat([1]));\n            }\n            else {\n                outputShapes.push(outputShape);\n            }\n        }\n        x = standardizeInputData(x, this.feedInputNames, this.feedInputShapes, false, 'input');\n        y = standardizeInputData(y, this.feedOutputNames, outputShapes, false, 'target');\n        checkArrayLengths(x, y, null);\n        checkLossAndTargetCompatibility(y, this.feedLossFns, this.feedOutputShapes);\n        if (this.stateful && batchSize != null && batchSize > 0) {\n            if (x[0].shape[0] % batchSize !== 0) {\n                throw new errors_1.ValueError(\"In a stateful network, you should only pass inputs with a \" +\n                    \"number of samples that is divisible by the batch size \" +\n                    (batchSize + \". Found: \" + x[0].shape[0] + \" sample(s).\"));\n            }\n        }\n        return [x, y, null];\n    };\n    Model.prototype.fitLoop = function (f, ins, outLabels, batchSize, epochs, verbose, callbacks, valF, valIns, shuffle, callbackMetrics, initialEpoch, stepsPerEpoch, validationSteps) {\n        return __awaiter(this, void 0, void 0, function () {\n            var _this = this;\n            var doValidation, numTrainSamples, indexArray, callbackList, _loop_4, this_1, epoch, state_2;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (batchSize == null) {\n                            batchSize = 32;\n                        }\n                        if (epochs == null) {\n                            epochs = 1;\n                        }\n                        if (shuffle == null) {\n                            shuffle = true;\n                        }\n                        if (initialEpoch == null) {\n                            initialEpoch = 0;\n                        }\n                        doValidation = false;\n                        if (valF != null && valIns != null) {\n                            doValidation = true;\n                        }\n                        if (validationSteps != null) {\n                            doValidation = true;\n                            if (stepsPerEpoch == null) {\n                                throw new errors_1.ValueError('Can only use `validationSteps` when doing step-wise training, ' +\n                                    'i.e., `stepsPerEpoch` must be set.');\n                            }\n                        }\n                        numTrainSamples = this.checkNumSamples(ins, batchSize, stepsPerEpoch, 'steps_per_epoch');\n                        if (numTrainSamples != null) {\n                            indexArray = math_utils_1.range(0, numTrainSamples);\n                        }\n                        this.history = new base_callbacks_1.History();\n                        if (callbacks == null) {\n                            callbacks = [new base_callbacks_1.BaseLogger()];\n                        }\n                        else {\n                            callbacks = [new base_callbacks_1.BaseLogger()].concat(callbacks);\n                        }\n                        callbacks = callbacks.concat([this.history]);\n                        if (verbose > 0) {\n                            throw new errors_1.NotImplementedError('Verbose mode is not implemented yet.');\n                        }\n                        callbackList = new base_callbacks_1.CallbackList(callbacks);\n                        callbackList.setModel(this);\n                        callbackList.setParams({\n                            epochs: epochs,\n                            initialEpoch: initialEpoch,\n                            steps: stepsPerEpoch,\n                            verbose: verbose,\n                            doValidation: doValidation,\n                            metrics: callbackMetrics,\n                        });\n                        return [4, callbackList.onTrainBegin()];\n                    case 1:\n                        _a.sent();\n                        this.stopTraining = false;\n                        _loop_4 = function (epoch) {\n                            var epochLogs, epochIndexArray1D_1, batches_1, _loop_5, batchIndex, state_3;\n                            return __generator(this, function (_a) {\n                                switch (_a.label) {\n                                    case 0: return [4, callbackList.onEpochBegin(epoch)];\n                                    case 1:\n                                        _a.sent();\n                                        epochLogs = {};\n                                        if (!(stepsPerEpoch != null)) return [3, 2];\n                                        throw new errors_1.NotImplementedError('stepsPerEpoch mode is not implemented yet.');\n                                    case 2:\n                                        if (shuffle === 'batch') {\n                                            throw new errors_1.NotImplementedError('batch shuffling is not implemneted yet');\n                                        }\n                                        else if (shuffle) {\n                                            tfjs_core_1.util.shuffle(indexArray);\n                                        }\n                                        epochIndexArray1D_1 = tfjs_core_1.tensor1d(indexArray);\n                                        batches_1 = makeBatches(numTrainSamples, batchSize);\n                                        _loop_5 = function (batchIndex) {\n                                            var batchLogs;\n                                            return __generator(this, function (_a) {\n                                                switch (_a.label) {\n                                                    case 0:\n                                                        batchLogs = {};\n                                                        return [4, callbackList.onBatchBegin(batchIndex, batchLogs)];\n                                                    case 1:\n                                                        _a.sent();\n                                                        tfc.tidy(function () {\n                                                            var batchStart = batches_1[batchIndex][0];\n                                                            var batchEnd = batches_1[batchIndex][1];\n                                                            var batchIds = K.sliceAlongFirstAxis(epochIndexArray1D_1, batchStart, batchEnd - batchStart);\n                                                            batchLogs['batch'] = batchIndex;\n                                                            batchLogs['size'] = batchEnd - batchStart;\n                                                            var insBatch = sliceArraysByIndices(ins, batchIds);\n                                                            var outs = f(insBatch);\n                                                            for (var i = 0; i < outLabels.length; ++i) {\n                                                                var label = outLabels[i];\n                                                                var out = outs[i];\n                                                                batchLogs[label] = out;\n                                                                tfc.keep(out);\n                                                            }\n                                                            if (batchIndex === batches_1.length - 1) {\n                                                                if (doValidation) {\n                                                                    var valOuts = _this.testLoop(valF, valIns, batchSize);\n                                                                    for (var i = 0; i < outLabels.length; ++i) {\n                                                                        var label = outLabels[i];\n                                                                        var out = valOuts[i];\n                                                                        tfc.keep(out);\n                                                                        epochLogs['val_' + label] = out;\n                                                                    }\n                                                                }\n                                                            }\n                                                        });\n                                                        return [4, callbackList.onBatchEnd(batchIndex, batchLogs)];\n                                                    case 2:\n                                                        _a.sent();\n                                                        logs_1.disposeTensorsInLogs(batchLogs);\n                                                        if (this_1.stopTraining) {\n                                                            return [2, \"break\"];\n                                                        }\n                                                        return [2];\n                                                }\n                                            });\n                                        };\n                                        batchIndex = 0;\n                                        _a.label = 3;\n                                    case 3:\n                                        if (!(batchIndex < batches_1.length)) return [3, 6];\n                                        return [5, _loop_5(batchIndex)];\n                                    case 4:\n                                        state_3 = _a.sent();\n                                        if (state_3 === \"break\")\n                                            return [3, 6];\n                                        _a.label = 5;\n                                    case 5:\n                                        ++batchIndex;\n                                        return [3, 3];\n                                    case 6:\n                                        epochIndexArray1D_1.dispose();\n                                        _a.label = 7;\n                                    case 7: return [4, callbackList.onEpochEnd(epoch, epochLogs)];\n                                    case 8:\n                                        _a.sent();\n                                        if (this_1.stopTraining) {\n                                            return [2, \"break\"];\n                                        }\n                                        return [2];\n                                }\n                            });\n                        };\n                        this_1 = this;\n                        epoch = initialEpoch;\n                        _a.label = 2;\n                    case 2:\n                        if (!(epoch < epochs)) return [3, 5];\n                        return [5, _loop_4(epoch)];\n                    case 3:\n                        state_2 = _a.sent();\n                        if (state_2 === \"break\")\n                            return [3, 5];\n                        _a.label = 4;\n                    case 4:\n                        ++epoch;\n                        return [3, 2];\n                    case 5: return [4, callbackList.onTrainEnd()];\n                    case 6:\n                        _a.sent();\n                        return [4, this.history.syncData()];\n                    case 7:\n                        _a.sent();\n                        return [2, this.history];\n                }\n            });\n        });\n    };\n    Model.prototype.testLoop = function (f, ins, batchSize, verbose, steps) {\n        var _this = this;\n        if (verbose === void 0) { verbose = 0; }\n        return tfc.tidy(function () {\n            var numSamples = _this.checkNumSamples(ins, batchSize, steps, 'steps');\n            var outs = [];\n            if (verbose === 1) {\n                throw new errors_1.NotImplementedError('Verbose mode is not implemented yet.');\n            }\n            if (steps != null) {\n                throw new errors_1.NotImplementedError('steps mode in testLoop() is not implemented yet');\n            }\n            else {\n                var batches = makeBatches(numSamples, batchSize);\n                var indexArray = tfjs_core_1.tensor1d(math_utils_1.range(0, numSamples));\n                for (var batchIndex = 0; batchIndex < batches.length; ++batchIndex) {\n                    var batchStart = batches[batchIndex][0];\n                    var batchEnd = batches[batchIndex][1];\n                    var batchIds = K.sliceAlongFirstAxis(indexArray, batchStart, batchEnd - batchStart);\n                    var insBatch = sliceArraysByIndices(ins, batchIds);\n                    var batchOuts = f(insBatch);\n                    if (batchIndex === 0) {\n                        for (var i = 0; i < batchOuts.length; ++i) {\n                            outs.push(state_1.getScalar(0));\n                        }\n                    }\n                    for (var i = 0; i < batchOuts.length; ++i) {\n                        var batchOut = batchOuts[i];\n                        outs[i] =\n                            tfc.add(outs[i], tfc.mul(state_1.getScalar(batchEnd - batchStart), batchOut));\n                    }\n                }\n                for (var i = 0; i < outs.length; ++i) {\n                    outs[i] = tfc.div(outs[i], state_1.getScalar(numSamples));\n                }\n            }\n            return outs;\n        });\n    };\n    Model.prototype.getDedupedMetricsNames = function () {\n        var outLabels = this.metricsNames;\n        var dedupedOutLabels = [];\n        for (var i = 0; i < outLabels.length; ++i) {\n            var label = outLabels[i];\n            var newLabel = label;\n            if (generic_utils_1.count(outLabels, label) > 1) {\n                var dupIndex = generic_utils_1.count(outLabels.slice(0, i), label);\n                newLabel += \"_\" + dupIndex;\n            }\n            dedupedOutLabels.push(newLabel);\n        }\n        return dedupedOutLabels;\n    };\n    Model.prototype.makeTestFunction = function () {\n        var _this = this;\n        this.testFunction = function (data) {\n            return tfc.tidy(function () {\n                var valOutputs = [];\n                var totalLoss;\n                var inputs = data.slice(0, _this.inputs.length);\n                var targets = data.slice(_this.inputs.length, _this.inputs.length + _this.outputs.length);\n                var feeds = [];\n                for (var i = 0; i < _this.inputs.length; ++i) {\n                    feeds.push({ key: _this.inputs[i], value: inputs[i] });\n                }\n                var feedDict = new executor_1.FeedDict(feeds);\n                var outputs = executor_1.execute(_this.outputs, feedDict);\n                for (var i = 0; i < _this.lossFunctions.length; ++i) {\n                    var lossFunction = _this.lossFunctions[i];\n                    var loss = tfc.mean(lossFunction(targets[i], outputs[i]));\n                    if (i === 0) {\n                        totalLoss = loss;\n                    }\n                    else {\n                        totalLoss = tfc.add(totalLoss, loss);\n                    }\n                    valOutputs.push(totalLoss);\n                }\n                for (var i = 0; i < _this.metricsTensors.length; ++i) {\n                    var metric = _this.metricsTensors[i][0];\n                    var outputIndex = _this.metricsTensors[i][1];\n                    var meanMetric = tfc.mean(metric(targets[outputIndex], outputs[outputIndex]));\n                    valOutputs.push(meanMetric);\n                }\n                return valOutputs;\n            });\n        };\n    };\n    Model.prototype.fit = function (x, y, config) {\n        if (config === void 0) { config = {}; }\n        return __awaiter(this, void 0, void 0, function () {\n            var _this = this;\n            var batchSize, standardizedOuts, inputs, targets, doValidation, valX, valY, valIns, needValidationDisposal, valStandardized, splitAt, originalBatchSize, ins, trainFunction, outLabels, valFunction, callbackMetrics, callbacks, out;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        batchSize = config.batchSize == null ? 32 : config.batchSize;\n                        standardizedOuts = this.standardizeUserData(x, y, false, batchSize);\n                        inputs = standardizedOuts[0];\n                        targets = standardizedOuts[1];\n                        doValidation = false;\n                        needValidationDisposal = false;\n                        if (config.validationData != null && config.validationData.length > 0) {\n                            doValidation = true;\n                            if (config.validationData.length === 2) {\n                                valX = config.validationData[0];\n                                valY = config.validationData[1];\n                            }\n                            else if (config.validationData.length === 3) {\n                                throw new errors_1.NotImplementedError('validationData including sample weights is not supported yet.');\n                            }\n                            else {\n                                throw new errors_1.ValueError(\"When passing validation data, it must contain 2 (valX, valY) \" +\n                                    \"or 3 (valX, valY, valSampleWeight) items; \" +\n                                    (config.validationData + \" is invalid.\"));\n                            }\n                            valStandardized = this.standardizeUserData(valX, valY, true, batchSize);\n                            valX = valStandardized[0];\n                            valY = valStandardized[1];\n                            valIns = valX.concat(valY);\n                        }\n                        else if (config.validationSplit != null && config.validationSplit > 0 &&\n                            config.validationSplit < 1) {\n                            doValidation = true;\n                            splitAt = Math.floor(inputs[0].shape[0] * (1 - config.validationSplit));\n                            originalBatchSize = inputs[0].shape[0];\n                            valX = sliceArrays(inputs, splitAt, originalBatchSize);\n                            inputs = sliceArrays(inputs, 0, splitAt);\n                            valY = sliceArrays(targets, splitAt, originalBatchSize);\n                            targets = sliceArrays(targets, 0, splitAt);\n                            needValidationDisposal = true;\n                            valIns = valX.concat(valY);\n                        }\n                        else if (config.validationSteps != null) {\n                            doValidation = true;\n                        }\n                        ins = inputs.concat(targets);\n                        this.checkTrainableWeightsConsistency();\n                        trainFunction = function (data) {\n                            var losses = [];\n                            var lossValues = [];\n                            var inputs = data.slice(0, _this.inputs.length);\n                            var targets = data.slice(_this.inputs.length, _this.inputs.length + _this.outputs.length);\n                            var metricsValues = [];\n                            var totalLossFunction = function () {\n                                var feeds = [];\n                                for (var i = 0; i < _this.inputs.length; ++i) {\n                                    feeds.push({ key: _this.inputs[i], value: inputs[i] });\n                                }\n                                var feedDict = new executor_1.FeedDict(feeds);\n                                var outputs = executor_1.execute(_this.outputs, feedDict, { 'training': true });\n                                var totalLoss;\n                                for (var i = 0; i < _this.lossFunctions.length; ++i) {\n                                    var lossFunction = _this.lossFunctions[i];\n                                    var loss = lossFunction(targets[i], outputs[i]);\n                                    losses.push(loss);\n                                    var meanLoss = tfc.mean(loss);\n                                    lossValues.push(meanLoss);\n                                    if (i === 0) {\n                                        totalLoss = loss;\n                                    }\n                                    else {\n                                        totalLoss = tfc.add(totalLoss, loss);\n                                    }\n                                }\n                                for (var i = 0; i < _this.metricsTensors.length; ++i) {\n                                    var metric = _this.metricsTensors[i][0];\n                                    var outputIndex = _this.metricsTensors[i][1];\n                                    var meanMetric = tfc.mean(metric(targets[outputIndex], outputs[outputIndex]));\n                                    tfc.keep(meanMetric);\n                                    metricsValues.push(meanMetric);\n                                }\n                                totalLoss = tfc.mean(totalLoss);\n                                _this.calculateLosses().forEach(function (regularizerLoss) {\n                                    totalLoss = tfc.add(totalLoss, regularizerLoss);\n                                });\n                                return totalLoss;\n                            };\n                            var variables = _this.collectedTrainableWeights.map(function (param) { return param.read(); });\n                            var returnCost = true;\n                            var totalLossValue = _this.optimizer.minimize(totalLossFunction, returnCost, variables);\n                            return [totalLossValue].concat(metricsValues);\n                        };\n                        outLabels = this.getDedupedMetricsNames();\n                        if (doValidation) {\n                            this.makeTestFunction();\n                            valFunction = this.testFunction;\n                            callbackMetrics =\n                                outLabels.slice().concat(outLabels.map(function (n) { return 'val_' + n; }));\n                        }\n                        else {\n                            valFunction = null;\n                            valIns = [];\n                            callbackMetrics = outLabels.slice();\n                        }\n                        callbacks = base_callbacks_1.standardizeCallbacks(config.callbacks);\n                        return [4, this.fitLoop(trainFunction, ins, outLabels, batchSize, config.epochs, config.verbose, callbacks, valFunction, valIns, config.shuffle, callbackMetrics, config.initialEpoch, null, null)];\n                    case 1:\n                        out = _a.sent();\n                        if (needValidationDisposal) {\n                            valIns.forEach(function (tensor) { return tensor.dispose(); });\n                            inputs.forEach(function (tensor) { return tensor.dispose(); });\n                            targets.forEach(function (tensor) { return tensor.dispose(); });\n                        }\n                        return [2, out];\n                }\n            });\n        });\n    };\n    Model.prototype.getNamedWeights = function (config) {\n        var namedWeights = {};\n        var trainableOnly = config != null && config.trainableOnly;\n        var weights = trainableOnly ? this.trainableWeights : this.weights;\n        var weightValues = this.getWeights(trainableOnly);\n        for (var i = 0; i < weights.length; ++i) {\n            if (trainableOnly && !weights[i].trainable) {\n                continue;\n            }\n            namedWeights[weights[i].originalName] = weightValues[i];\n        }\n        return namedWeights;\n    };\n    Model.prototype.save = function (handlerOrURL, config) {\n        return __awaiter(this, void 0, void 0, function () {\n            var handlers, weightDataAndSpecs, returnString, unusedArg, modelConfig;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (typeof handlerOrURL === 'string') {\n                            handlers = tfjs_core_1.io.getSaveHandlers(handlerOrURL);\n                            if (handlers.length === 0) {\n                                throw new errors_1.ValueError(\"Cannot find any save handlers for URL '\" + handlerOrURL + \"'\");\n                            }\n                            else if (handlers.length > 1) {\n                                throw new errors_1.ValueError(\"Found more than one (\" + handlers.length + \") save handlers for \" +\n                                    (\"URL '\" + handlerOrURL + \"'\"));\n                            }\n                            handlerOrURL = handlers[0];\n                        }\n                        if (handlerOrURL.save == null) {\n                            throw new errors_1.ValueError('Model.save() cannot proceed because the IOHandler provided does ' +\n                                'not have the `save` attribute defined.');\n                        }\n                        return [4, tfjs_core_1.io.encodeWeights(this.getNamedWeights(config))];\n                    case 1:\n                        weightDataAndSpecs = _a.sent();\n                        returnString = false;\n                        unusedArg = null;\n                        modelConfig = this.toJSON(unusedArg, returnString);\n                        return [2, handlerOrURL.save({\n                                modelTopology: modelConfig,\n                                weightData: weightDataAndSpecs.data,\n                                weightSpecs: weightDataAndSpecs.specs\n                            })];\n                }\n            });\n        });\n    };\n    Model.className = 'Model';\n    return Model;\n}(container_1.Container));\nexports.Model = Model;\ntfjs_core_1.serialization.SerializationMap.register(Model);\n\n},{\"../backend/state\":185,\"../backend/tfjs_backend\":186,\"../base_callbacks\":187,\"../common\":189,\"../errors\":196,\"../logs\":217,\"../losses\":218,\"../metrics\":219,\"../optimizers\":221,\"../utils/generic_utils\":224,\"../utils/layer_utils\":225,\"../utils/math_utils\":226,\"./container\":191,\"./executor\":192,\"@tensorflow/tfjs-core\":59}],196:[function(require,module,exports){\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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar AttributeError = (function (_super) {\n    __extends(AttributeError, _super);\n    function AttributeError(message) {\n        var _this = _super.call(this, message) || this;\n        Object.setPrototypeOf(_this, AttributeError.prototype);\n        return _this;\n    }\n    return AttributeError;\n}(Error));\nexports.AttributeError = AttributeError;\nvar RuntimeError = (function (_super) {\n    __extends(RuntimeError, _super);\n    function RuntimeError(message) {\n        var _this = _super.call(this, message) || this;\n        Object.setPrototypeOf(_this, RuntimeError.prototype);\n        return _this;\n    }\n    return RuntimeError;\n}(Error));\nexports.RuntimeError = RuntimeError;\nvar ValueError = (function (_super) {\n    __extends(ValueError, _super);\n    function ValueError(message) {\n        var _this = _super.call(this, message) || this;\n        Object.setPrototypeOf(_this, ValueError.prototype);\n        return _this;\n    }\n    return ValueError;\n}(Error));\nexports.ValueError = ValueError;\nvar NotImplementedError = (function (_super) {\n    __extends(NotImplementedError, _super);\n    function NotImplementedError(message) {\n        var _this = _super.call(this, message) || this;\n        Object.setPrototypeOf(_this, NotImplementedError.prototype);\n        return _this;\n    }\n    return NotImplementedError;\n}(Error));\nexports.NotImplementedError = NotImplementedError;\nvar AssertionError = (function (_super) {\n    __extends(AssertionError, _super);\n    function AssertionError(message) {\n        var _this = _super.call(this, message) || this;\n        Object.setPrototypeOf(_this, AssertionError.prototype);\n        return _this;\n    }\n    return AssertionError;\n}(Error));\nexports.AssertionError = AssertionError;\nvar IndexError = (function (_super) {\n    __extends(IndexError, _super);\n    function IndexError(message) {\n        var _this = _super.call(this, message) || this;\n        Object.setPrototypeOf(_this, IndexError.prototype);\n        return _this;\n    }\n    return IndexError;\n}(Error));\nexports.IndexError = IndexError;\n\n},{}],197:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar input_layer_1 = require(\"./engine/input_layer\");\nvar training_1 = require(\"./engine/training\");\nvar models_1 = require(\"./models\");\nfunction model(config) {\n    return new training_1.Model(config);\n}\nexports.model = model;\nfunction sequential(config) {\n    return new models_1.Sequential(config);\n}\nexports.sequential = sequential;\nfunction loadModel(pathOrIOHandler) {\n    return models_1.loadModelInternal(pathOrIOHandler);\n}\nexports.loadModel = loadModel;\nfunction input(config) {\n    return input_layer_1.Input(config);\n}\nexports.input = input;\n\n},{\"./engine/input_layer\":193,\"./engine/training\":195,\"./models\":220}],198:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar constraints_1 = require(\"./constraints\");\nfunction maxNorm(config) {\n    return new constraints_1.MaxNorm(config);\n}\nexports.maxNorm = maxNorm;\nfunction unitNorm(config) {\n    return new constraints_1.UnitNorm(config);\n}\nexports.unitNorm = unitNorm;\nfunction nonNeg() {\n    return new constraints_1.NonNeg();\n}\nexports.nonNeg = nonNeg;\nfunction minMaxNorm(config) {\n    return new constraints_1.MinMaxNorm(config);\n}\nexports.minMaxNorm = minMaxNorm;\n\n},{\"./constraints\":190}],199:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar initializers_1 = require(\"./initializers\");\nfunction zeros() {\n    return new initializers_1.Zeros();\n}\nexports.zeros = zeros;\nfunction ones() {\n    return new initializers_1.Ones();\n}\nexports.ones = ones;\nfunction constant(config) {\n    return new initializers_1.Constant(config);\n}\nexports.constant = constant;\nfunction randomUniform(config) {\n    return new initializers_1.RandomUniform(config);\n}\nexports.randomUniform = randomUniform;\nfunction randomNormal(config) {\n    return new initializers_1.RandomNormal(config);\n}\nexports.randomNormal = randomNormal;\nfunction truncatedNormal(config) {\n    return new initializers_1.TruncatedNormal(config);\n}\nexports.truncatedNormal = truncatedNormal;\nfunction identity(config) {\n    return new initializers_1.Identity(config);\n}\nexports.identity = identity;\nfunction varianceScaling(config) {\n    return new initializers_1.VarianceScaling(config);\n}\nexports.varianceScaling = varianceScaling;\nfunction glorotUniform(config) {\n    return new initializers_1.GlorotUniform(config);\n}\nexports.glorotUniform = glorotUniform;\nfunction glorotNormal(config) {\n    return new initializers_1.GlorotNormal(config);\n}\nexports.glorotNormal = glorotNormal;\nfunction heNormal(config) {\n    return new initializers_1.HeNormal(config);\n}\nexports.heNormal = heNormal;\nfunction leCunNormal(config) {\n    return new initializers_1.LeCunNormal(config);\n}\nexports.leCunNormal = leCunNormal;\nfunction orthogonal(config) {\n    return new initializers_1.Orthogonal(config);\n}\nexports.orthogonal = orthogonal;\n\n},{\"./initializers\":204}],200:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar input_layer_1 = require(\"./engine/input_layer\");\nvar topology_1 = require(\"./engine/topology\");\nexports.Layer = topology_1.Layer;\nvar exports_1 = require(\"./exports\");\nexports.input = exports_1.input;\nvar advanced_activations_1 = require(\"./layers/advanced_activations\");\nvar convolutional_1 = require(\"./layers/convolutional\");\nvar convolutional_depthwise_1 = require(\"./layers/convolutional_depthwise\");\nvar core_1 = require(\"./layers/core\");\nvar embeddings_1 = require(\"./layers/embeddings\");\nvar merge_1 = require(\"./layers/merge\");\nvar normalization_1 = require(\"./layers/normalization\");\nvar padding_1 = require(\"./layers/padding\");\nvar pooling_1 = require(\"./layers/pooling\");\nvar recurrent_1 = require(\"./layers/recurrent\");\nvar wrappers_1 = require(\"./layers/wrappers\");\nfunction inputLayer(config) {\n    return new input_layer_1.InputLayer(config);\n}\nexports.inputLayer = inputLayer;\nfunction elu(config) {\n    return new advanced_activations_1.ELU(config);\n}\nexports.elu = elu;\nfunction leakyReLU(config) {\n    return new advanced_activations_1.LeakyReLU(config);\n}\nexports.leakyReLU = leakyReLU;\nfunction softmax(config) {\n    return new advanced_activations_1.Softmax(config);\n}\nexports.softmax = softmax;\nfunction thresholdedReLU(config) {\n    return new advanced_activations_1.ThresholdedReLU(config);\n}\nexports.thresholdedReLU = thresholdedReLU;\nfunction conv1d(config) {\n    return new convolutional_1.Conv1D(config);\n}\nexports.conv1d = conv1d;\nfunction conv2d(config) {\n    return new convolutional_1.Conv2D(config);\n}\nexports.conv2d = conv2d;\nfunction conv2dTranspose(config) {\n    return new convolutional_1.Conv2DTranspose(config);\n}\nexports.conv2dTranspose = conv2dTranspose;\nfunction separableConv2d(config) {\n    return new convolutional_1.SeparableConv2D(config);\n}\nexports.separableConv2d = separableConv2d;\nfunction cropping2D(config) {\n    return new convolutional_1.Cropping2D(config);\n}\nexports.cropping2D = cropping2D;\nfunction upSampling2d(config) {\n    return new convolutional_1.UpSampling2D(config);\n}\nexports.upSampling2d = upSampling2d;\nfunction depthwiseConv2d(config) {\n    return new convolutional_depthwise_1.DepthwiseConv2D(config);\n}\nexports.depthwiseConv2d = depthwiseConv2d;\nfunction activation(config) {\n    return new core_1.Activation(config);\n}\nexports.activation = activation;\nfunction dense(config) {\n    return new core_1.Dense(config);\n}\nexports.dense = dense;\nfunction dropout(config) {\n    return new core_1.Dropout(config);\n}\nexports.dropout = dropout;\nfunction flatten(config) {\n    return new core_1.Flatten(config);\n}\nexports.flatten = flatten;\nfunction repeatVector(config) {\n    return new core_1.RepeatVector(config);\n}\nexports.repeatVector = repeatVector;\nfunction reshape(config) {\n    return new core_1.Reshape(config);\n}\nexports.reshape = reshape;\nfunction embedding(config) {\n    return new embeddings_1.Embedding(config);\n}\nexports.embedding = embedding;\nfunction add(config) {\n    return new merge_1.Add(config);\n}\nexports.add = add;\nfunction average(config) {\n    return new merge_1.Average(config);\n}\nexports.average = average;\nfunction concatenate(config) {\n    return new merge_1.Concatenate(config);\n}\nexports.concatenate = concatenate;\nfunction maximum(config) {\n    return new merge_1.Maximum(config);\n}\nexports.maximum = maximum;\nfunction minimum(config) {\n    return new merge_1.Minimum(config);\n}\nexports.minimum = minimum;\nfunction multiply(config) {\n    return new merge_1.Multiply(config);\n}\nexports.multiply = multiply;\nfunction batchNormalization(config) {\n    return new normalization_1.BatchNormalization(config);\n}\nexports.batchNormalization = batchNormalization;\nfunction zeroPadding2d(config) {\n    return new padding_1.ZeroPadding2D(config);\n}\nexports.zeroPadding2d = zeroPadding2d;\nfunction averagePooling1d(config) {\n    return new pooling_1.AveragePooling1D(config);\n}\nexports.averagePooling1d = averagePooling1d;\nfunction avgPool1d(config) {\n    return averagePooling1d(config);\n}\nexports.avgPool1d = avgPool1d;\nfunction avgPooling1d(config) {\n    return averagePooling1d(config);\n}\nexports.avgPooling1d = avgPooling1d;\nfunction averagePooling2d(config) {\n    return new pooling_1.AveragePooling2D(config);\n}\nexports.averagePooling2d = averagePooling2d;\nfunction avgPool2d(config) {\n    return averagePooling2d(config);\n}\nexports.avgPool2d = avgPool2d;\nfunction avgPooling2d(config) {\n    return averagePooling2d(config);\n}\nexports.avgPooling2d = avgPooling2d;\nfunction globalAveragePooling1d(config) {\n    return new pooling_1.GlobalAveragePooling1D(config);\n}\nexports.globalAveragePooling1d = globalAveragePooling1d;\nfunction globalAveragePooling2d(config) {\n    return new pooling_1.GlobalAveragePooling2D(config);\n}\nexports.globalAveragePooling2d = globalAveragePooling2d;\nfunction globalMaxPooling1d(config) {\n    return new pooling_1.GlobalMaxPooling1D(config);\n}\nexports.globalMaxPooling1d = globalMaxPooling1d;\nfunction globalMaxPooling2d(config) {\n    return new pooling_1.GlobalMaxPooling2D(config);\n}\nexports.globalMaxPooling2d = globalMaxPooling2d;\nfunction maxPooling1d(config) {\n    return new pooling_1.MaxPooling1D(config);\n}\nexports.maxPooling1d = maxPooling1d;\nfunction maxPooling2d(config) {\n    return new pooling_1.MaxPooling2D(config);\n}\nexports.maxPooling2d = maxPooling2d;\nfunction gru(config) {\n    return new recurrent_1.GRU(config);\n}\nexports.gru = gru;\nfunction gruCell(config) {\n    return new recurrent_1.GRUCell(config);\n}\nexports.gruCell = gruCell;\nfunction lstm(config) {\n    return new recurrent_1.LSTM(config);\n}\nexports.lstm = lstm;\nfunction lstmCell(config) {\n    return new recurrent_1.LSTMCell(config);\n}\nexports.lstmCell = lstmCell;\nfunction simpleRNN(config) {\n    return new recurrent_1.SimpleRNN(config);\n}\nexports.simpleRNN = simpleRNN;\nfunction simpleRNNCell(config) {\n    return new recurrent_1.SimpleRNNCell(config);\n}\nexports.simpleRNNCell = simpleRNNCell;\nfunction rnn(config) {\n    return new recurrent_1.RNN(config);\n}\nexports.rnn = rnn;\nfunction stackedRNNCells(config) {\n    return new recurrent_1.StackedRNNCells(config);\n}\nexports.stackedRNNCells = stackedRNNCells;\nfunction bidirectional(config) {\n    return new wrappers_1.Bidirectional(config);\n}\nexports.bidirectional = bidirectional;\nfunction timeDistributed(config) {\n    return new wrappers_1.TimeDistributed(config);\n}\nexports.timeDistributed = timeDistributed;\nexports.globalMaxPool1d = globalMaxPooling1d;\nexports.globalMaxPool2d = globalMaxPooling2d;\nexports.maxPool1d = maxPooling1d;\nexports.maxPool2d = maxPooling2d;\n\n},{\"./engine/input_layer\":193,\"./engine/topology\":194,\"./exports\":197,\"./layers/advanced_activations\":205,\"./layers/convolutional\":206,\"./layers/convolutional_depthwise\":207,\"./layers/core\":208,\"./layers/embeddings\":209,\"./layers/merge\":210,\"./layers/normalization\":211,\"./layers/padding\":212,\"./layers/pooling\":213,\"./layers/recurrent\":214,\"./layers/wrappers\":216}],201:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar losses = require(\"./losses\");\nvar metrics = require(\"./metrics\");\nfunction binaryAccuracy(yTrue, yPred) {\n    return metrics.binaryAccuracy(yTrue, yPred);\n}\nexports.binaryAccuracy = binaryAccuracy;\nfunction binaryCrossentropy(yTrue, yPred) {\n    return metrics.binaryCrossentropy(yTrue, yPred);\n}\nexports.binaryCrossentropy = binaryCrossentropy;\nfunction categoricalAccuracy(yTrue, yPred) {\n    return metrics.categoricalAccuracy(yTrue, yPred);\n}\nexports.categoricalAccuracy = categoricalAccuracy;\nfunction categoricalCrossentropy(yTrue, yPred) {\n    return metrics.categoricalCrossentropy(yTrue, yPred);\n}\nexports.categoricalCrossentropy = categoricalCrossentropy;\nfunction cosineProximity(yTrue, yPred) {\n    return losses.cosineProximity(yTrue, yPred);\n}\nexports.cosineProximity = cosineProximity;\nfunction meanAbsoluteError(yTrue, yPred) {\n    return losses.meanAbsoluteError(yTrue, yPred);\n}\nexports.meanAbsoluteError = meanAbsoluteError;\nfunction meanAbsolutePercentageError(yTrue, yPred) {\n    return losses.meanAbsolutePercentageError(yTrue, yPred);\n}\nexports.meanAbsolutePercentageError = meanAbsolutePercentageError;\nfunction MAPE(yTrue, yPred) {\n    return losses.meanAbsolutePercentageError(yTrue, yPred);\n}\nexports.MAPE = MAPE;\nfunction mape(yTrue, yPred) {\n    return losses.meanAbsolutePercentageError(yTrue, yPred);\n}\nexports.mape = mape;\nfunction meanSquaredError(yTrue, yPred) {\n    return losses.meanSquaredError(yTrue, yPred);\n}\nexports.meanSquaredError = meanSquaredError;\nfunction MSE(yTrue, yPred) {\n    return losses.meanSquaredError(yTrue, yPred);\n}\nexports.MSE = MSE;\nfunction mse(yTrue, yPred) {\n    return losses.meanSquaredError(yTrue, yPred);\n}\nexports.mse = mse;\n\n},{\"./losses\":218,\"./metrics\":219}],202:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar regularizers = require(\"./regularizers\");\nvar regularizers_1 = require(\"./regularizers\");\nfunction l1l2(config) {\n    return new regularizers_1.L1L2(config);\n}\nexports.l1l2 = l1l2;\nfunction l1(config) {\n    return regularizers.l1(config);\n}\nexports.l1 = l1;\nfunction l2(config) {\n    return regularizers.l2(config);\n}\nexports.l2 = l2;\n\n},{\"./regularizers\":222}],203:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar constraints = require(\"./exports_constraints\");\nexports.constraints = constraints;\nvar initializers = require(\"./exports_initializers\");\nexports.initializers = initializers;\nvar layers = require(\"./exports_layers\");\nexports.layers = layers;\nvar metrics = require(\"./exports_metrics\");\nexports.metrics = metrics;\nvar regularizers = require(\"./exports_regularizers\");\nexports.regularizers = regularizers;\nvar base_callbacks_1 = require(\"./base_callbacks\");\nexports.CallbackList = base_callbacks_1.CallbackList;\nexports.CustomCallback = base_callbacks_1.CustomCallback;\nvar callbacks_1 = require(\"./callbacks\");\nexports.Callback = callbacks_1.Callback;\nvar topology_1 = require(\"./engine/topology\");\nexports.SymbolicTensor = topology_1.SymbolicTensor;\nvar training_1 = require(\"./engine/training\");\nexports.Model = training_1.Model;\nvar exports_1 = require(\"./exports\");\nexports.input = exports_1.input;\nexports.loadModel = exports_1.loadModel;\nexports.model = exports_1.model;\nexports.sequential = exports_1.sequential;\nvar recurrent_1 = require(\"./layers/recurrent\");\nexports.RNN = recurrent_1.RNN;\nvar models_1 = require(\"./models\");\nexports.Sequential = models_1.Sequential;\nvar variables_1 = require(\"./variables\");\nexports.LayerVariable = variables_1.LayerVariable;\nvar version_1 = require(\"./version\");\nexports.version_layers = version_1.version;\n\n},{\"./base_callbacks\":187,\"./callbacks\":188,\"./engine/topology\":194,\"./engine/training\":195,\"./exports\":197,\"./exports_constraints\":198,\"./exports_initializers\":199,\"./exports_layers\":200,\"./exports_metrics\":201,\"./exports_regularizers\":202,\"./layers/recurrent\":214,\"./models\":220,\"./variables\":230,\"./version\":231}],204:[function(require,module,exports){\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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar state_1 = require(\"./backend/state\");\nvar K = require(\"./backend/tfjs_backend\");\nvar common_1 = require(\"./common\");\nvar errors_1 = require(\"./errors\");\nvar generic_utils_1 = require(\"./utils/generic_utils\");\nvar math_utils_1 = require(\"./utils/math_utils\");\nexports.VALID_FAN_MODE_VALUES = ['fanIn', 'fanOut', 'fanAvg'];\nfunction checkFanMode(value) {\n    generic_utils_1.checkStringTypeUnionValue(exports.VALID_FAN_MODE_VALUES, 'FanMode', value);\n}\nexports.checkFanMode = checkFanMode;\nexports.VALID_DISTRIBUTION_VALUES = ['normal', 'uniform'];\nfunction checkDistribution(value) {\n    generic_utils_1.checkStringTypeUnionValue(exports.VALID_DISTRIBUTION_VALUES, 'Distribution', value);\n}\nexports.checkDistribution = checkDistribution;\nvar Initializer = (function (_super) {\n    __extends(Initializer, _super);\n    function Initializer() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Initializer.prototype.fromConfigUsesCustomObjects = function () {\n        return false;\n    };\n    Initializer.prototype.getConfig = function () {\n        return {};\n    };\n    return Initializer;\n}(tfjs_core_1.serialization.Serializable));\nexports.Initializer = Initializer;\nvar Zeros = (function (_super) {\n    __extends(Zeros, _super);\n    function Zeros() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Zeros.prototype.apply = function (shape, dtype) {\n        return tfjs_core_1.zeros(shape, dtype);\n    };\n    Zeros.className = 'Zeros';\n    return Zeros;\n}(Initializer));\nexports.Zeros = Zeros;\ntfjs_core_1.serialization.SerializationMap.register(Zeros);\nvar Ones = (function (_super) {\n    __extends(Ones, _super);\n    function Ones() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    Ones.prototype.apply = function (shape, dtype) {\n        return tfjs_core_1.ones(shape, dtype);\n    };\n    Ones.className = 'Ones';\n    return Ones;\n}(Initializer));\nexports.Ones = Ones;\ntfjs_core_1.serialization.SerializationMap.register(Ones);\nvar Constant = (function (_super) {\n    __extends(Constant, _super);\n    function Constant(config) {\n        var _this = _super.call(this) || this;\n        if (typeof config !== 'object') {\n            throw new errors_1.ValueError(\"Expected argument of type ConstantConfig but got \" + config);\n        }\n        if (config.value === undefined) {\n            throw new errors_1.ValueError(\"config must have value set but got \" + config);\n        }\n        _this.value = config.value;\n        return _this;\n    }\n    Constant.prototype.apply = function (shape, dtype) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () { return tfjs_core_1.mul(tfjs_core_1.scalar(_this.value), tfjs_core_1.ones(shape, dtype)); });\n    };\n    Constant.prototype.getConfig = function () {\n        return {\n            value: this.value,\n        };\n    };\n    Constant.className = 'Constant';\n    return Constant;\n}(Initializer));\nexports.Constant = Constant;\ntfjs_core_1.serialization.SerializationMap.register(Constant);\nvar RandomUniform = (function (_super) {\n    __extends(RandomUniform, _super);\n    function RandomUniform(config) {\n        var _this = _super.call(this) || this;\n        _this.DEFAULT_MINVAL = -0.05;\n        _this.DEFAULT_MAXVAL = 0.05;\n        _this.minval = config.minval || _this.DEFAULT_MINVAL;\n        _this.maxval = config.maxval || _this.DEFAULT_MAXVAL;\n        _this.seed = config.seed;\n        return _this;\n    }\n    RandomUniform.prototype.apply = function (shape, dtype) {\n        return tfjs_core_1.randomUniform(shape, this.minval, this.maxval, dtype);\n    };\n    RandomUniform.prototype.getConfig = function () {\n        return { minval: this.minval, maxval: this.maxval, seed: this.seed };\n    };\n    RandomUniform.className = 'RandomUniform';\n    return RandomUniform;\n}(Initializer));\nexports.RandomUniform = RandomUniform;\ntfjs_core_1.serialization.SerializationMap.register(RandomUniform);\nvar RandomNormal = (function (_super) {\n    __extends(RandomNormal, _super);\n    function RandomNormal(config) {\n        var _this = _super.call(this) || this;\n        _this.DEFAULT_MEAN = 0.;\n        _this.DEFAULT_STDDEV = 0.05;\n        _this.mean = config.mean || _this.DEFAULT_MEAN;\n        _this.stddev = config.stddev || _this.DEFAULT_STDDEV;\n        _this.seed = config.seed;\n        return _this;\n    }\n    RandomNormal.prototype.apply = function (shape, dtype) {\n        if (dtype === 'bool') {\n            throw new errors_1.NotImplementedError(\"randomNormal does not support dType bool.\");\n        }\n        return K.randomNormal(shape, this.mean, this.stddev, dtype, this.seed);\n    };\n    RandomNormal.prototype.getConfig = function () {\n        return { mean: this.mean, stddev: this.stddev, seed: this.seed };\n    };\n    RandomNormal.className = 'RandomNormal';\n    return RandomNormal;\n}(Initializer));\nexports.RandomNormal = RandomNormal;\ntfjs_core_1.serialization.SerializationMap.register(RandomNormal);\nvar TruncatedNormal = (function (_super) {\n    __extends(TruncatedNormal, _super);\n    function TruncatedNormal(config) {\n        var _this = _super.call(this) || this;\n        _this.DEFAULT_MEAN = 0.;\n        _this.DEFAULT_STDDEV = 0.05;\n        _this.mean = config.mean || _this.DEFAULT_MEAN;\n        _this.stddev = config.stddev || _this.DEFAULT_STDDEV;\n        _this.seed = config.seed;\n        return _this;\n    }\n    TruncatedNormal.prototype.apply = function (shape, dtype) {\n        if (dtype === 'bool') {\n            throw new errors_1.NotImplementedError(\"truncatedNormal does not support dType bool.\");\n        }\n        return tfjs_core_1.truncatedNormal(shape, this.mean, this.stddev, dtype, this.seed);\n    };\n    TruncatedNormal.prototype.getConfig = function () {\n        return { mean: this.mean, stddev: this.stddev, seed: this.seed };\n    };\n    TruncatedNormal.className = 'TruncatedNormal';\n    return TruncatedNormal;\n}(Initializer));\nexports.TruncatedNormal = TruncatedNormal;\ntfjs_core_1.serialization.SerializationMap.register(TruncatedNormal);\nvar Identity = (function (_super) {\n    __extends(Identity, _super);\n    function Identity(config) {\n        var _this = _super.call(this) || this;\n        _this.gain = config.gain != null ? tfjs_core_1.scalar(config.gain) : state_1.getScalar(1.0);\n        return _this;\n    }\n    Identity.prototype.apply = function (shape, dtype) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            if (shape.length !== 2 || shape[0] !== shape[1]) {\n                throw new errors_1.ValueError('Identity matrix initializer can only be used for' +\n                    ' 2D square matrices.');\n            }\n            else {\n                return tfjs_core_1.mul(_this.gain, tfjs_core_1.eye(shape[0]));\n            }\n        });\n    };\n    Identity.prototype.getConfig = function () {\n        return { gain: this.gain.get() };\n    };\n    Identity.className = 'Identity';\n    return Identity;\n}(Initializer));\nexports.Identity = Identity;\ntfjs_core_1.serialization.SerializationMap.register(Identity);\nfunction computeFans(shape, dataFormat) {\n    if (dataFormat === void 0) { dataFormat = 'channelsLast'; }\n    var fanIn;\n    var fanOut;\n    common_1.checkDataFormat(dataFormat);\n    if (shape.length === 2) {\n        fanIn = shape[0];\n        fanOut = shape[1];\n    }\n    else if ([3, 4, 5].indexOf(shape.length) !== -1) {\n        if (dataFormat === 'channelsFirst') {\n            var receptiveFieldSize = math_utils_1.arrayProd(shape, 2);\n            fanIn = shape[1] * receptiveFieldSize;\n            fanOut = shape[0] * receptiveFieldSize;\n        }\n        else if (dataFormat === 'channelsLast') {\n            var receptiveFieldSize = math_utils_1.arrayProd(shape, 0, shape.length - 2);\n            fanIn = shape[shape.length - 2] * receptiveFieldSize;\n            fanOut = shape[shape.length - 1] * receptiveFieldSize;\n        }\n    }\n    else {\n        var shapeProd = math_utils_1.arrayProd(shape);\n        fanIn = Math.sqrt(shapeProd);\n        fanOut = Math.sqrt(shapeProd);\n    }\n    return [fanIn, fanOut];\n}\nvar VarianceScaling = (function (_super) {\n    __extends(VarianceScaling, _super);\n    function VarianceScaling(config) {\n        var _this = _super.call(this) || this;\n        if (config.scale < 0.0) {\n            throw new errors_1.ValueError(\"scale must be a positive float. Got: \" + config.scale);\n        }\n        _this.scale = config.scale == null ? 1.0 : config.scale;\n        _this.mode = config.mode;\n        checkFanMode(_this.mode);\n        _this.distribution = config.distribution;\n        checkDistribution(_this.distribution);\n        _this.seed = config.seed;\n        return _this;\n    }\n    VarianceScaling.prototype.apply = function (shape, dtype) {\n        var fans = computeFans(shape);\n        var fanIn = fans[0];\n        var fanOut = fans[1];\n        var scale = this.scale;\n        if (this.mode === 'fanIn') {\n            scale /= Math.max(1, fanIn);\n        }\n        else if (this.mode === 'fanOut') {\n            scale /= Math.max(1, fanOut);\n        }\n        else {\n            scale /= Math.max(1, (fanIn + fanOut) / 2);\n        }\n        if (this.distribution === 'normal') {\n            var stddev = Math.sqrt(scale);\n            if (dtype === 'bool') {\n                throw new errors_1.NotImplementedError(this.getClassName() + \" does not support dType bool.\");\n            }\n            return tfjs_core_1.truncatedNormal(shape, 0, stddev, dtype, this.seed);\n        }\n        else {\n            var limit = Math.sqrt(3 * scale);\n            return tfjs_core_1.randomUniform(shape, -limit, limit, dtype);\n        }\n    };\n    VarianceScaling.prototype.getConfig = function () {\n        return {\n            scale: this.scale,\n            mode: this.mode,\n            distribution: this.distribution,\n            seed: this.seed\n        };\n    };\n    VarianceScaling.className = 'VarianceScaling';\n    return VarianceScaling;\n}(Initializer));\nexports.VarianceScaling = VarianceScaling;\ntfjs_core_1.serialization.SerializationMap.register(VarianceScaling);\nvar GlorotUniform = (function (_super) {\n    __extends(GlorotUniform, _super);\n    function GlorotUniform(config) {\n        return _super.call(this, {\n            scale: 1.0,\n            mode: 'fanAvg',\n            distribution: 'uniform',\n            seed: config == null ? null : config.seed\n        }) || this;\n    }\n    GlorotUniform.prototype.getClassName = function () {\n        return VarianceScaling.className;\n    };\n    return GlorotUniform;\n}(VarianceScaling));\nexports.GlorotUniform = GlorotUniform;\nvar GlorotNormal = (function (_super) {\n    __extends(GlorotNormal, _super);\n    function GlorotNormal(config) {\n        return _super.call(this, {\n            scale: 1.0,\n            mode: 'fanAvg',\n            distribution: 'normal',\n            seed: config == null ? null : config.seed\n        }) || this;\n    }\n    GlorotNormal.prototype.getClassName = function () {\n        return VarianceScaling.className;\n    };\n    return GlorotNormal;\n}(VarianceScaling));\nexports.GlorotNormal = GlorotNormal;\nvar HeNormal = (function (_super) {\n    __extends(HeNormal, _super);\n    function HeNormal(config) {\n        return _super.call(this, {\n            scale: 2.0,\n            mode: 'fanIn',\n            distribution: 'normal',\n            seed: config == null ? null : config.seed\n        }) || this;\n    }\n    HeNormal.prototype.getClassName = function () {\n        return VarianceScaling.className;\n    };\n    return HeNormal;\n}(VarianceScaling));\nexports.HeNormal = HeNormal;\nvar LeCunNormal = (function (_super) {\n    __extends(LeCunNormal, _super);\n    function LeCunNormal(config) {\n        return _super.call(this, {\n            scale: 1.0,\n            mode: 'fanIn',\n            distribution: 'normal',\n            seed: config == null ? null : config.seed\n        }) || this;\n    }\n    LeCunNormal.prototype.getClassName = function () {\n        return VarianceScaling.className;\n    };\n    return LeCunNormal;\n}(VarianceScaling));\nexports.LeCunNormal = LeCunNormal;\nvar Orthogonal = (function (_super) {\n    __extends(Orthogonal, _super);\n    function Orthogonal(config) {\n        var _this = _super.call(this) || this;\n        _this.DEFAULT_GAIN = 1;\n        _this.gain = config.gain == null ? _this.DEFAULT_GAIN : config.gain;\n        _this.seed = config.seed;\n        if (_this.seed != null) {\n            throw new errors_1.NotImplementedError('Random seed is not implemented for Orthogonal Initializer yet.');\n        }\n        return _this;\n    }\n    Orthogonal.prototype.apply = function (shape, dtype) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            if (shape.length !== 2) {\n                throw new errors_1.NotImplementedError('The Orthogonal Initializer does not support non-2D shapes yet.');\n            }\n            if (shape[0] * shape[1] > 2000) {\n                console.warn(\"Orthogonal initializer is being called on a matrix with more \" +\n                    (\"than 2000 (\" + shape[0] * shape[1] + \") elements: \") +\n                    \"Slowness may result.\");\n            }\n            var normalizedShape = shape[0] > shape[1] ? [shape[1], shape[0]] : shape;\n            var a = K.randomNormal(normalizedShape, 0, 1, 'float32');\n            var q = tfjs_core_1.linalg.gramSchmidt(a);\n            if (shape[0] > shape[1]) {\n                q = q.transpose();\n            }\n            return tfjs_core_1.mul(state_1.getScalar(_this.gain), q);\n        });\n    };\n    Orthogonal.prototype.getConfig = function () {\n        return {\n            gain: this.gain,\n            seed: this.seed,\n        };\n    };\n    Orthogonal.className = 'Orthogonal';\n    return Orthogonal;\n}(Initializer));\nexports.Orthogonal = Orthogonal;\ntfjs_core_1.serialization.SerializationMap.register(Orthogonal);\nexports.INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP = {\n    'constant': 'Constant',\n    'glorotNormal': 'GlorotNormal',\n    'glorotUniform': 'GlorotUniform',\n    'heNormal': 'HeNormal',\n    'identity': 'Identity',\n    'leCunNormal': 'LeCunNormal',\n    'ones': 'Ones',\n    'orthogonal': 'Orthogonal',\n    'randomNormal': 'RandomNormal',\n    'randomUniform': 'RandomUniform',\n    'truncatedNormal': 'TruncatedNormal',\n    'varianceScaling': 'VarianceScaling',\n    'zeros': 'Zeros'\n};\nfunction deserializeInitializer(config, customObjects) {\n    if (customObjects === void 0) { customObjects = {}; }\n    return generic_utils_1.deserializeKerasObject(config, tfjs_core_1.serialization.SerializationMap.getMap().classNameMap, customObjects, 'initializer');\n}\nfunction serializeInitializer(initializer) {\n    return generic_utils_1.serializeKerasObject(initializer);\n}\nexports.serializeInitializer = serializeInitializer;\nfunction getInitializer(identifier) {\n    if (typeof identifier === 'string') {\n        var className = identifier in exports.INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP ?\n            exports.INITIALIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier] :\n            identifier;\n        if (className === 'GlorotUniform') {\n            return new GlorotUniform();\n        }\n        else if (className === 'GlorotNormal') {\n            return new GlorotNormal();\n        }\n        else if (className === 'HeNormal') {\n            return new HeNormal();\n        }\n        else if (className === 'LeCunNormal') {\n            return new LeCunNormal();\n        }\n        else {\n            var config = { className: className, config: {} };\n            return deserializeInitializer(config);\n        }\n    }\n    else if (identifier instanceof Initializer) {\n        return identifier;\n    }\n    else {\n        return deserializeInitializer(identifier);\n    }\n}\nexports.getInitializer = getInitializer;\n\n},{\"./backend/state\":185,\"./backend/tfjs_backend\":186,\"./common\":189,\"./errors\":196,\"./utils/generic_utils\":224,\"./utils/math_utils\":226,\"@tensorflow/tfjs-core\":59}],205:[function(require,module,exports){\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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar activations_1 = require(\"../activations\");\nvar tfjs_backend_1 = require(\"../backend/tfjs_backend\");\nvar topology_1 = require(\"../engine/topology\");\nvar state_1 = require(\"../backend/state\");\nvar errors_1 = require(\"../errors\");\nvar types_utils_1 = require(\"../utils/types_utils\");\nvar LeakyReLU = (function (_super) {\n    __extends(LeakyReLU, _super);\n    function LeakyReLU(config) {\n        var _this = _super.call(this, config == null ? {} : config) || this;\n        _this.DEFAULT_ALPHA = 0.3;\n        if (config == null) {\n            config = {};\n        }\n        _this.alpha = config.alpha == null ? _this.DEFAULT_ALPHA : config.alpha;\n        return _this;\n    }\n    LeakyReLU.prototype.call = function (inputs, kwargs) {\n        var x = types_utils_1.getExactlyOneTensor(inputs);\n        return tfjs_core_1.leakyRelu(x, this.alpha);\n    };\n    LeakyReLU.prototype.computeOutputShape = function (inputShape) {\n        return inputShape;\n    };\n    LeakyReLU.prototype.getConfig = function () {\n        var config = { alpha: this.alpha };\n        var baseConfig = _super.prototype.getConfig.call(this);\n        Object.assign(config, baseConfig);\n        return config;\n    };\n    LeakyReLU.className = 'LeakyReLU';\n    return LeakyReLU;\n}(topology_1.Layer));\nexports.LeakyReLU = LeakyReLU;\ntfjs_core_1.serialization.SerializationMap.register(LeakyReLU);\nvar ELU = (function (_super) {\n    __extends(ELU, _super);\n    function ELU(config) {\n        var _this = _super.call(this, config == null ? {} : config) || this;\n        _this.DEFAULT_ALPHA = 1.0;\n        if (config == null) {\n            config = {};\n        }\n        if (config.alpha != null && config.alpha !== _this.DEFAULT_ALPHA) {\n            throw new errors_1.NotImplementedError(\"Non-default alpha value (\" + config.alpha + \") is not supported by the \" +\n                \"ELU layer yet.\");\n        }\n        _this.alpha = config.alpha == null ? _this.DEFAULT_ALPHA : config.alpha;\n        return _this;\n    }\n    ELU.prototype.call = function (inputs, kwargs) {\n        var x = types_utils_1.getExactlyOneTensor(inputs);\n        return tfjs_core_1.elu(x);\n    };\n    ELU.prototype.computeOutputShape = function (inputShape) {\n        return inputShape;\n    };\n    ELU.prototype.getConfig = function () {\n        var config = { alpha: this.alpha };\n        var baseConfig = _super.prototype.getConfig.call(this);\n        Object.assign(config, baseConfig);\n        return config;\n    };\n    ELU.className = 'ELU';\n    return ELU;\n}(topology_1.Layer));\nexports.ELU = ELU;\ntfjs_core_1.serialization.SerializationMap.register(ELU);\nvar ThresholdedReLU = (function (_super) {\n    __extends(ThresholdedReLU, _super);\n    function ThresholdedReLU(config) {\n        var _this = _super.call(this, config == null ? {} : config) || this;\n        _this.DEFAULT_THETA = 1.0;\n        if (config == null) {\n            config = {};\n        }\n        _this.theta = config.theta == null ? _this.DEFAULT_THETA : config.theta;\n        _this.thetaTensor = state_1.getScalar(_this.theta);\n        return _this;\n    }\n    ThresholdedReLU.prototype.call = function (inputs, kwargs) {\n        var x = types_utils_1.getExactlyOneTensor(inputs);\n        return x.mul(tfjs_backend_1.cast(x.greater(this.thetaTensor), 'float32'));\n    };\n    ThresholdedReLU.prototype.computeOutputShape = function (inputShape) {\n        return inputShape;\n    };\n    ThresholdedReLU.prototype.getConfig = function () {\n        var config = { theta: this.theta };\n        var baseConfig = _super.prototype.getConfig.call(this);\n        Object.assign(config, baseConfig);\n        return config;\n    };\n    ThresholdedReLU.className = 'ThresholdedReLU';\n    return ThresholdedReLU;\n}(topology_1.Layer));\nexports.ThresholdedReLU = ThresholdedReLU;\ntfjs_core_1.serialization.SerializationMap.register(ThresholdedReLU);\nvar Softmax = (function (_super) {\n    __extends(Softmax, _super);\n    function Softmax(config) {\n        var _this = _super.call(this, config == null ? {} : config) || this;\n        _this.DEFAULT_AXIS = 1.0;\n        if (config == null) {\n            config = {};\n        }\n        _this.softmax = new activations_1.Softmax().apply;\n        _this.axis = config.axis == null ? _this.DEFAULT_AXIS : config.axis;\n        return _this;\n    }\n    Softmax.prototype.call = function (inputs, kwargs) {\n        var x = types_utils_1.getExactlyOneTensor(inputs);\n        return this.softmax(x, this.axis);\n    };\n    Softmax.prototype.computeOutputShape = function (inputShape) {\n        return inputShape;\n    };\n    Softmax.prototype.getConfig = function () {\n        var config = { axis: this.axis };\n        var baseConfig = _super.prototype.getConfig.call(this);\n        Object.assign(config, baseConfig);\n        return config;\n    };\n    Softmax.className = 'Softmax';\n    return Softmax;\n}(topology_1.Layer));\nexports.Softmax = Softmax;\ntfjs_core_1.serialization.SerializationMap.register(Softmax);\n\n},{\"../activations\":183,\"../backend/state\":185,\"../backend/tfjs_backend\":186,\"../engine/topology\":194,\"../errors\":196,\"../utils/types_utils\":228,\"@tensorflow/tfjs-core\":59}],206:[function(require,module,exports){\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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfc = require(\"@tensorflow/tfjs-core\");\nvar tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar activations_1 = require(\"../activations\");\nvar common_1 = require(\"../backend/common\");\nvar K = require(\"../backend/tfjs_backend\");\nvar common_2 = require(\"../common\");\nvar constraints_1 = require(\"../constraints\");\nvar topology_1 = require(\"../engine/topology\");\nvar errors_1 = require(\"../errors\");\nvar initializers_1 = require(\"../initializers\");\nvar regularizers_1 = require(\"../regularizers\");\nvar conv_utils_1 = require(\"../utils/conv_utils\");\nvar generic_utils = require(\"../utils/generic_utils\");\nvar types_utils_1 = require(\"../utils/types_utils\");\nfunction preprocessConv2DInput(x, dataFormat) {\n    return tfjs_core_1.tidy(function () {\n        common_2.checkDataFormat(dataFormat);\n        if (dataFormat === 'channelsFirst') {\n            return tfc.transpose(x, [0, 2, 3, 1]);\n        }\n        else {\n            return x;\n        }\n    });\n}\nexports.preprocessConv2DInput = preprocessConv2DInput;\nfunction conv1dWithBias(x, kernel, bias, strides, padding, dataFormat, dilationRate) {\n    if (strides === void 0) { strides = 1; }\n    if (padding === void 0) { padding = 'valid'; }\n    if (dilationRate === void 0) { dilationRate = 1; }\n    return tfjs_core_1.tidy(function () {\n        if (dataFormat == null) {\n            dataFormat = common_1.imageDataFormat();\n        }\n        common_2.checkDataFormat(dataFormat);\n        if (x.shape.length !== 3) {\n            throw new errors_1.ValueError(\"The input of a conv1dWithBias operation should be 3, but is \" +\n                (x.shape.length + \" instead.\"));\n        }\n        if (kernel.shape.length !== 3) {\n            throw new errors_1.ValueError(\"The kernel for a conv1dWithBias operation should be 3, but is \" +\n                (kernel.shape.length + \" instead\"));\n        }\n        if (bias != null && bias.shape.length !== 1) {\n            throw new errors_1.ValueError(\"The bias for a conv1dWithBias operation should be 1, but is \" +\n                (kernel.shape.length + \" instead\"));\n        }\n        if (dataFormat === 'channelsFirst') {\n            x = tfc.transpose(x, [0, 2, 1]);\n        }\n        if (padding === 'causal') {\n            throw new errors_1.NotImplementedError('The support for CAUSAL padding mode in conv1dWithBias is not ' +\n                'implemented yet.');\n        }\n        var y = tfc.conv1d(x, kernel, strides, padding === 'same' ? 'same' : 'valid', 'NWC', dilationRate);\n        if (bias != null) {\n            y = K.biasAdd(y, bias);\n        }\n        return y;\n    });\n}\nexports.conv1dWithBias = conv1dWithBias;\nfunction conv1d(x, kernel, strides, padding, dataFormat, dilationRate) {\n    if (strides === void 0) { strides = 1; }\n    if (padding === void 0) { padding = 'valid'; }\n    if (dilationRate === void 0) { dilationRate = 1; }\n    return tfjs_core_1.tidy(function () {\n        common_2.checkDataFormat(dataFormat);\n        return conv1dWithBias(x, kernel, null, strides, padding, dataFormat, dilationRate);\n    });\n}\nexports.conv1d = conv1d;\nfunction conv2d(x, kernel, strides, padding, dataFormat, dilationRate) {\n    if (strides === void 0) { strides = [1, 1]; }\n    if (padding === void 0) { padding = 'valid'; }\n    return tfjs_core_1.tidy(function () {\n        common_2.checkDataFormat(dataFormat);\n        return conv2dWithBias(x, kernel, null, strides, padding, dataFormat, dilationRate);\n    });\n}\nexports.conv2d = conv2d;\nfunction conv2dWithBias(x, kernel, bias, strides, padding, dataFormat, dilationRate) {\n    if (strides === void 0) { strides = [1, 1]; }\n    if (padding === void 0) { padding = 'valid'; }\n    return tfjs_core_1.tidy(function () {\n        if (dataFormat == null) {\n            dataFormat = common_1.imageDataFormat();\n        }\n        common_2.checkDataFormat(dataFormat);\n        if (x.rank !== 3 && x.rank !== 4) {\n            throw new errors_1.ValueError(\"conv2dWithBias expects input to be of rank 3 or 4, but received \" +\n                (x.rank + \".\"));\n        }\n        if (kernel.rank !== 3 && kernel.rank !== 4) {\n            throw new errors_1.ValueError(\"conv2dWithBias expects kernel to be of rank 3 or 4, but received \" +\n                (x.rank + \".\"));\n        }\n        var y = preprocessConv2DInput(x, dataFormat);\n        if (padding === 'causal') {\n            throw new errors_1.NotImplementedError('The support for CAUSAL padding mode in conv1dWithBias is not ' +\n                'implemented yet.');\n        }\n        y = tfc.conv2d(y, kernel, strides, padding === 'same' ? 'same' : 'valid', 'NHWC', dilationRate);\n        if (bias != null) {\n            y = K.biasAdd(y, bias);\n        }\n        if (dataFormat === 'channelsFirst') {\n            y = tfc.transpose(y, [0, 3, 1, 2]);\n        }\n        return y;\n    });\n}\nexports.conv2dWithBias = conv2dWithBias;\nvar BaseConv = (function (_super) {\n    __extends(BaseConv, _super);\n    function BaseConv(rank, config) {\n        var _this = _super.call(this, config) || this;\n        _this.bias = null;\n        _this.DEFAULT_KERNEL_INITIALIZER = 'glorotNormal';\n        _this.DEFAULT_BIAS_INITIALIZER = 'zeros';\n        BaseConv.verifyConfig(config);\n        _this.rank = rank;\n        if (_this.rank !== 1 && _this.rank !== 2) {\n            throw new errors_1.NotImplementedError(\"Convolution layer for rank other than 1 or 2 (\" + _this.rank + \") is \" +\n                \"not implemented yet.\");\n        }\n        _this.kernelSize = conv_utils_1.normalizeArray(config.kernelSize, rank, 'kernelSize');\n        _this.strides = conv_utils_1.normalizeArray(config.strides == null ? 1 : config.strides, rank, 'strides');\n        _this.padding = config.padding == null ? 'valid' : config.padding;\n        common_2.checkPaddingMode(_this.padding);\n        _this.dataFormat =\n            config.dataFormat == null ? 'channelsLast' : config.dataFormat;\n        common_2.checkDataFormat(_this.dataFormat);\n        _this.activation = activations_1.getActivation(config.activation);\n        _this.useBias = config.useBias == null ? true : config.useBias;\n        _this.biasInitializer =\n            initializers_1.getInitializer(config.biasInitializer || _this.DEFAULT_BIAS_INITIALIZER);\n        _this.biasConstraint = constraints_1.getConstraint(config.biasConstraint);\n        _this.biasRegularizer = regularizers_1.getRegularizer(config.biasRegularizer);\n        _this.activityRegularizer = regularizers_1.getRegularizer(config.activityRegularizer);\n        _this.dilationRate = conv_utils_1.normalizeArray(config.dilationRate == null ? 1 : config.dilationRate, rank, 'dilationRate');\n        if (_this.rank === 1 &&\n            (Array.isArray(_this.dilationRate) &&\n                _this.dilationRate.length !== 1)) {\n            throw new errors_1.ValueError(\"dilationRate must be a number or an array of a single number \" +\n                \"for 1D convolution, but received \" +\n                (\"\" + JSON.stringify(_this.dilationRate)));\n        }\n        if (_this.rank === 2) {\n            if (typeof _this.dilationRate === 'number') {\n                _this.dilationRate = [_this.dilationRate, _this.dilationRate];\n            }\n            else if (_this.dilationRate.length !== 2) {\n                throw new errors_1.ValueError(\"dilationRate must be a number or array of two numbers for 2D \" +\n                    (\"convolution, but received \" + JSON.stringify(_this.dilationRate)));\n            }\n        }\n        return _this;\n    }\n    BaseConv.verifyConfig = function (config) {\n        generic_utils.assert('kernelSize' in config, \"required key 'kernelSize' not in config\");\n        if (typeof config.kernelSize !== 'number' &&\n            !generic_utils.checkArrayTypeAndLength(config.kernelSize, 'number', 1, 2))\n            throw new errors_1.ValueError(\"BaseConv expects config.kernelSize to be number or number[] with \" +\n                (\"length 1 or 2, but received \" + JSON.stringify(config.kernelSize) + \".\"));\n    };\n    BaseConv.prototype.getConfig = function () {\n        var config = {\n            kernelSize: this.kernelSize,\n            strides: this.strides,\n            padding: this.padding,\n            dataFormat: this.dataFormat,\n            dilationRate: this.dilationRate,\n            activation: activations_1.serializeActivation(this.activation),\n            useBias: this.useBias,\n            biasInitializer: initializers_1.serializeInitializer(this.biasInitializer),\n            biasRegularizer: regularizers_1.serializeRegularizer(this.biasRegularizer),\n            activityRegularizer: regularizers_1.serializeRegularizer(this.activityRegularizer),\n            biasConstraint: constraints_1.serializeConstraint(this.biasConstraint)\n        };\n        var baseConfig = _super.prototype.getConfig.call(this);\n        Object.assign(config, baseConfig);\n        return config;\n    };\n    return BaseConv;\n}(topology_1.Layer));\nexports.BaseConv = BaseConv;\nvar Conv = (function (_super) {\n    __extends(Conv, _super);\n    function Conv(rank, config) {\n        var _this = _super.call(this, rank, config) || this;\n        _this.kernel = null;\n        Conv.verifyConfig(config);\n        _this.filters = config.filters;\n        _this.kernelInitializer = initializers_1.getInitializer(config.kernelInitializer || _this.DEFAULT_KERNEL_INITIALIZER);\n        _this.kernelConstraint = constraints_1.getConstraint(config.kernelConstraint);\n        _this.kernelRegularizer = regularizers_1.getRegularizer(config.kernelRegularizer);\n        return _this;\n    }\n    Conv.prototype.build = function (inputShape) {\n        inputShape = types_utils_1.getExactlyOneShape(inputShape);\n        var channelAxis = this.dataFormat === 'channelsFirst' ? 1 : inputShape.length - 1;\n        if (inputShape[channelAxis] == null) {\n            throw new errors_1.ValueError(\"The channel dimension of the input should be defined. \" +\n                (\"Found \" + inputShape[channelAxis]));\n        }\n        var inputDim = inputShape[channelAxis];\n        var kernelShape = this.kernelSize.concat([inputDim, this.filters]);\n        this.kernel = this.addWeight('kernel', kernelShape, null, this.kernelInitializer, this.kernelRegularizer, true, this.kernelConstraint);\n        if (this.useBias) {\n            this.bias = this.addWeight('bias', [this.filters], null, this.biasInitializer, this.biasRegularizer, true, this.biasConstraint);\n        }\n        this.inputSpec = [{ ndim: this.rank + 2, axes: (_a = {}, _a[channelAxis] = inputDim, _a) }];\n        this.built = true;\n        var _a;\n    };\n    Conv.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            inputs = types_utils_1.getExactlyOneTensor(inputs);\n            var outputs;\n            var biasValue = _this.bias == null ? null : _this.bias.read();\n            if (_this.rank === 1) {\n                outputs = conv1dWithBias(inputs, _this.kernel.read(), biasValue, _this.strides[0], _this.padding, _this.dataFormat, _this.dilationRate[0]);\n            }\n            else if (_this.rank === 2) {\n                outputs = conv2dWithBias(inputs, _this.kernel.read(), biasValue, _this.strides, _this.padding, _this.dataFormat, _this.dilationRate);\n            }\n            else if (_this.rank === 3) {\n                throw new errors_1.NotImplementedError('3D convolution is not implemented yet.');\n            }\n            if (_this.activation != null) {\n                outputs = _this.activation.apply(outputs);\n            }\n            return outputs;\n        });\n    };\n    Conv.prototype.computeOutputShape = function (inputShape) {\n        inputShape = types_utils_1.getExactlyOneShape(inputShape);\n        var newSpace = [];\n        var space = (this.dataFormat === 'channelsLast') ?\n            inputShape.slice(1, inputShape.length - 1) :\n            inputShape.slice(2);\n        for (var i = 0; i < space.length; ++i) {\n            var newDim = conv_utils_1.convOutputLength(space[i], this.kernelSize[i], this.padding, this.strides[i], typeof this.dilationRate === 'number' ? this.dilationRate :\n                this.dilationRate[i]);\n            newSpace.push(newDim);\n        }\n        var outputShape = [inputShape[0]];\n        if (this.dataFormat === 'channelsLast') {\n            outputShape = outputShape.concat(newSpace);\n            outputShape.push(this.filters);\n        }\n        else {\n            outputShape.push(this.filters);\n            outputShape = outputShape.concat(newSpace);\n        }\n        return outputShape;\n    };\n    Conv.prototype.getConfig = function () {\n        var config = {\n            filters: this.filters,\n            kernelInitializer: initializers_1.serializeInitializer(this.kernelInitializer),\n            kernelRegularizer: regularizers_1.serializeRegularizer(this.kernelRegularizer),\n            kernelConstraint: constraints_1.serializeConstraint(this.kernelConstraint)\n        };\n        var baseConfig = _super.prototype.getConfig.call(this);\n        Object.assign(config, baseConfig);\n        return config;\n    };\n    Conv.verifyConfig = function (config) {\n        if (!('filters' in config) || typeof config.filters !== 'number' ||\n            config.filters < 1) {\n            throw new errors_1.ValueError(\"Convolution layer expected config.filters to be a 'number' > 0 \" +\n                (\"but got \" + JSON.stringify(config.filters)));\n        }\n    };\n    return Conv;\n}(BaseConv));\nexports.Conv = Conv;\nvar Conv2D = (function (_super) {\n    __extends(Conv2D, _super);\n    function Conv2D(config) {\n        var _this = _super.call(this, 2, config) || this;\n        Conv2D.verifyConfig(config);\n        return _this;\n    }\n    Conv2D.prototype.getConfig = function () {\n        var config = _super.prototype.getConfig.call(this);\n        delete config['rank'];\n        return config;\n    };\n    Conv2D.verifyConfig = function (config) {\n        if ((typeof config.kernelSize !== 'number') &&\n            !generic_utils.checkArrayTypeAndLength(config.kernelSize, 'number', 1, 2))\n            throw new errors_1.ValueError(\"Conv2D expects config.kernelSize to be number or number[] with \" +\n                (\"length 1 or 2, but received \" + JSON.stringify(config.kernelSize) + \".\"));\n    };\n    Conv2D.className = 'Conv2D';\n    return Conv2D;\n}(Conv));\nexports.Conv2D = Conv2D;\ntfjs_core_1.serialization.SerializationMap.register(Conv2D);\nvar Conv2DTranspose = (function (_super) {\n    __extends(Conv2DTranspose, _super);\n    function Conv2DTranspose(config) {\n        var _this = _super.call(this, config) || this;\n        _this.inputSpec = [new topology_1.InputSpec({ ndim: 4 })];\n        if (_this.padding !== 'same' && _this.padding !== 'valid') {\n            throw new errors_1.ValueError(\"Conv2DTranspose currently supports only padding modes 'same' \" +\n                (\"and 'valid', but received padding mode \" + _this.padding));\n        }\n        return _this;\n    }\n    Conv2DTranspose.prototype.build = function (inputShape) {\n        inputShape = types_utils_1.getExactlyOneShape(inputShape);\n        if (inputShape.length !== 4) {\n            throw new errors_1.ValueError('Input should have rank 4; Received input shape: ' +\n                JSON.stringify(inputShape));\n        }\n        var channelAxis = this.dataFormat === 'channelsFirst' ? 1 : inputShape.length - 1;\n        if (inputShape[channelAxis] == null) {\n            throw new errors_1.ValueError('The channel dimension of the inputs should be defined. ' +\n                'Found `None`.');\n        }\n        var inputDim = inputShape[channelAxis];\n        var kernelShape = this.kernelSize.concat([this.filters, inputDim]);\n        this.kernel = this.addWeight('kernel', kernelShape, 'float32', this.kernelInitializer, this.kernelRegularizer, true, this.kernelConstraint);\n        if (this.useBias) {\n            this.bias = this.addWeight('bias', [this.filters], 'float32', this.biasInitializer, this.biasRegularizer, true, this.biasConstraint);\n        }\n        this.inputSpec =\n            [new topology_1.InputSpec({ ndim: 4, axes: (_a = {}, _a[channelAxis] = inputDim, _a) })];\n        this.built = true;\n        var _a;\n    };\n    Conv2DTranspose.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfc.tidy(function () {\n            var input = types_utils_1.getExactlyOneTensor(inputs);\n            if (input.shape.length !== 4) {\n                throw new errors_1.ValueError(\"Conv2DTranspose.call() expects input tensor to be rank-4, but \" +\n                    (\"received a tensor of rank-\" + input.shape.length));\n            }\n            var inputShape = input.shape;\n            var batchSize = inputShape[0];\n            var hAxis;\n            var wAxis;\n            if (_this.dataFormat === 'channelsFirst') {\n                hAxis = 2;\n                wAxis = 3;\n            }\n            else {\n                hAxis = 1;\n                wAxis = 2;\n            }\n            var height = inputShape[hAxis];\n            var width = inputShape[wAxis];\n            var kernelH = _this.kernelSize[0];\n            var kernelW = _this.kernelSize[1];\n            var strideH = _this.strides[0];\n            var strideW = _this.strides[1];\n            var outHeight = conv_utils_1.deconvLength(height, strideH, kernelH, _this.padding);\n            var outWidth = conv_utils_1.deconvLength(width, strideW, kernelW, _this.padding);\n            var outputShape = [batchSize, outHeight, outWidth, _this.filters];\n            if (_this.dataFormat !== 'channelsLast') {\n                input = tfc.transpose(input, [0, 2, 3, 1]);\n            }\n            var outputs = tfc.conv2dTranspose(input, _this.kernel.read(), outputShape, _this.strides, _this.padding);\n            if (_this.dataFormat !== 'channelsLast') {\n                outputs = tfc.transpose(outputs, [0, 3, 1, 2]);\n            }\n            if (_this.bias != null) {\n                outputs =\n                    K.biasAdd(outputs, _this.bias.read(), _this.dataFormat);\n            }\n            if (_this.activation != null) {\n                outputs = _this.activation.apply(outputs);\n            }\n            return outputs;\n        });\n    };\n    Conv2DTranspose.prototype.computeOutputShape = function (inputShape) {\n        inputShape = types_utils_1.getExactlyOneShape(inputShape);\n        var outputShape = inputShape.slice();\n        var channelAxis;\n        var heightAxis;\n        var widthAxis;\n        if (this.dataFormat === 'channelsFirst') {\n            channelAxis = 1;\n            heightAxis = 2;\n            widthAxis = 3;\n        }\n        else {\n            channelAxis = 3;\n            heightAxis = 1;\n            widthAxis = 2;\n        }\n        var kernelH = this.kernelSize[0];\n        var kernelW = this.kernelSize[1];\n        var strideH = this.strides[0];\n        var strideW = this.strides[1];\n        outputShape[channelAxis] = this.filters;\n        outputShape[heightAxis] =\n            conv_utils_1.deconvLength(outputShape[heightAxis], strideH, kernelH, this.padding);\n        outputShape[widthAxis] =\n            conv_utils_1.deconvLength(outputShape[widthAxis], strideW, kernelW, this.padding);\n        return outputShape;\n    };\n    Conv2DTranspose.prototype.getConfig = function () {\n        var config = _super.prototype.getConfig.call(this);\n        delete config['dilationRate'];\n        return config;\n    };\n    Conv2DTranspose.className = 'Conv2DTranspose';\n    return Conv2DTranspose;\n}(Conv2D));\nexports.Conv2DTranspose = Conv2DTranspose;\ntfjs_core_1.serialization.SerializationMap.register(Conv2DTranspose);\nvar SeparableConv = (function (_super) {\n    __extends(SeparableConv, _super);\n    function SeparableConv(rank, config) {\n        var _this = _super.call(this, rank, config) || this;\n        _this.DEFAULT_DEPTHWISE_INITIALIZER = 'glorotUniform';\n        _this.DEFAULT_POINTWISE_INITIALIZER = 'glorotUniform';\n        _this.depthwiseKernel = null;\n        _this.pointwiseKernel = null;\n        if (config.filters == null) {\n            throw new errors_1.ValueError('The `filters` configuration field is required by SeparableConv, ' +\n                'but is unspecified.');\n        }\n        if (config.kernelInitializer != null || config.kernelRegularizer != null ||\n            config.kernelConstraint != null) {\n            throw new errors_1.ValueError('Fields kernelInitializer, kernelRegularizer and kernelConstraint ' +\n                'are invalid for SeparableConv2D. Use depthwiseInitializer, ' +\n                'depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, ' +\n                'pointwiseRegularizer and pointwiseConstraint instead.');\n        }\n        if (config.padding != null && config.padding !== 'same' &&\n            config.padding !== 'valid') {\n            throw new errors_1.ValueError(\"SeparableConv\" + _this.rank + \"D supports only padding modes: \" +\n                (\"'same' and 'valid', but received \" + JSON.stringify(config.padding)));\n        }\n        _this.depthMultiplier =\n            config.depthMultiplier == null ? 1 : config.depthMultiplier;\n        _this.depthwiseInitializer = initializers_1.getInitializer(config.depthwiseInitializer || _this.DEFAULT_DEPTHWISE_INITIALIZER);\n        _this.depthwiseRegularizer = regularizers_1.getRegularizer(config.depthwiseRegularizer);\n        _this.depthwiseConstraint = constraints_1.getConstraint(config.depthwiseConstraint);\n        _this.pointwiseInitializer = initializers_1.getInitializer(config.depthwiseInitializer || _this.DEFAULT_POINTWISE_INITIALIZER);\n        _this.pointwiseRegularizer = regularizers_1.getRegularizer(config.pointwiseRegularizer);\n        _this.pointwiseConstraint = constraints_1.getConstraint(config.pointwiseConstraint);\n        return _this;\n    }\n    SeparableConv.prototype.build = function (inputShape) {\n        inputShape = types_utils_1.getExactlyOneShape(inputShape);\n        if (inputShape.length < this.rank + 2) {\n            throw new errors_1.ValueError(\"Inputs to SeparableConv\" + this.rank + \"D should have rank \" +\n                (this.rank + 2 + \", but received input shape: \") +\n                (\"\" + JSON.stringify(inputShape)));\n        }\n        var channelAxis = this.dataFormat === 'channelsFirst' ? 1 : inputShape.length - 1;\n        if (inputShape[channelAxis] == null || inputShape[channelAxis] < 0) {\n            throw new errors_1.ValueError(\"The channel dimension of the inputs should be defined, \" +\n                (\"but found \" + JSON.stringify(inputShape[channelAxis])));\n        }\n        var inputDim = inputShape[channelAxis];\n        var depthwiseKernelShape = this.kernelSize.concat([inputDim, this.depthMultiplier]);\n        var pointwiseKernelShape = [];\n        for (var i = 0; i < this.rank; ++i) {\n            pointwiseKernelShape.push(1);\n        }\n        pointwiseKernelShape.push(inputDim * this.depthMultiplier, this.filters);\n        var trainable = true;\n        this.depthwiseKernel = this.addWeight('depthwise_kernel', depthwiseKernelShape, 'float32', this.depthwiseInitializer, this.depthwiseRegularizer, trainable, this.depthwiseConstraint);\n        this.pointwiseKernel = this.addWeight('pointwise_kernel', pointwiseKernelShape, 'float32', this.pointwiseInitializer, this.pointwiseRegularizer, trainable, this.pointwiseConstraint);\n        if (this.useBias) {\n            this.bias = this.addWeight('bias', [this.filters], 'float32', this.biasInitializer, this.biasRegularizer, trainable, this.biasConstraint);\n        }\n        else {\n            this.bias = null;\n        }\n        this.inputSpec =\n            [new topology_1.InputSpec({ ndim: this.rank + 2, axes: (_a = {}, _a[channelAxis] = inputDim, _a) })];\n        this.built = true;\n        var _a;\n    };\n    SeparableConv.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            inputs = types_utils_1.getExactlyOneTensor(inputs);\n            var output;\n            if (_this.rank === 1) {\n                throw new errors_1.NotImplementedError('1D separable convolution is not implemented yet.');\n            }\n            else if (_this.rank === 2) {\n                if (_this.dataFormat === 'channelsFirst') {\n                    inputs = tfc.transpose(inputs, [0, 2, 3, 1]);\n                }\n                output = tfc.separableConv2d(inputs, _this.depthwiseKernel.read(), _this.pointwiseKernel.read(), _this.strides, _this.padding, _this.dilationRate, 'NHWC');\n            }\n            if (_this.useBias) {\n                output = K.biasAdd(output, _this.bias.read(), _this.dataFormat);\n            }\n            if (_this.activation != null) {\n                output = _this.activation.apply(output);\n            }\n            if (_this.dataFormat === 'channelsFirst') {\n                output = tfc.transpose(output, [0, 3, 1, 2]);\n            }\n            return output;\n        });\n    };\n    SeparableConv.prototype.getConfig = function () {\n        var config = _super.prototype.getConfig.call(this);\n        delete config['rank'];\n        delete config['kernelInitializer'];\n        delete config['kernelRegularizer'];\n        delete config['kernelConstraint'];\n        config['depthwiseInitializer'] =\n            initializers_1.serializeInitializer(this.depthwiseInitializer);\n        config['pointwiseInitializer'] =\n            initializers_1.serializeInitializer(this.pointwiseInitializer);\n        config['depthwiseRegularizer'] =\n            regularizers_1.serializeRegularizer(this.depthwiseRegularizer);\n        config['pointwiseRegularizer'] =\n            regularizers_1.serializeRegularizer(this.pointwiseRegularizer);\n        config['depthwiseConstraint'] =\n            constraints_1.serializeConstraint(this.depthwiseConstraint);\n        config['pointwiseConstraint'] =\n            constraints_1.serializeConstraint(this.pointwiseConstraint);\n        return config;\n    };\n    SeparableConv.className = 'SeparableConv';\n    return SeparableConv;\n}(Conv));\nexports.SeparableConv = SeparableConv;\nvar SeparableConv2D = (function (_super) {\n    __extends(SeparableConv2D, _super);\n    function SeparableConv2D(config) {\n        return _super.call(this, 2, config) || this;\n    }\n    SeparableConv2D.className = 'SeparableConv2D';\n    return SeparableConv2D;\n}(SeparableConv));\nexports.SeparableConv2D = SeparableConv2D;\ntfjs_core_1.serialization.SerializationMap.register(SeparableConv2D);\nvar Conv1D = (function (_super) {\n    __extends(Conv1D, _super);\n    function Conv1D(config) {\n        var _this = _super.call(this, 1, config) || this;\n        Conv1D.verifyConfig(config);\n        _this.inputSpec = [{ ndim: 3 }];\n        return _this;\n    }\n    Conv1D.prototype.getConfig = function () {\n        var config = _super.prototype.getConfig.call(this);\n        delete config['rank'];\n        delete config['dataFormat'];\n        return config;\n    };\n    Conv1D.verifyConfig = function (config) {\n        if (typeof config.kernelSize !== 'number' &&\n            !generic_utils.checkArrayTypeAndLength(config.kernelSize, 'number', 1, 1))\n            throw new errors_1.ValueError(\"Conv1D expects config.kernelSize to be number or number[] with \" +\n                (\"length 1, but received \" + JSON.stringify(config.kernelSize) + \".\"));\n    };\n    Conv1D.className = 'Conv1D';\n    return Conv1D;\n}(Conv));\nexports.Conv1D = Conv1D;\ntfjs_core_1.serialization.SerializationMap.register(Conv1D);\nvar Cropping2D = (function (_super) {\n    __extends(Cropping2D, _super);\n    function Cropping2D(config) {\n        var _this = _super.call(this, config) || this;\n        if (typeof config.cropping === 'number')\n            _this.cropping = [\n                [config.cropping, config.cropping], [config.cropping, config.cropping]\n            ];\n        else if (typeof config.cropping[0] === 'number')\n            _this.cropping = [\n                [config.cropping[0], config.cropping[0]],\n                [config.cropping[1], config.cropping[1]]\n            ];\n        else\n            _this.cropping = config.cropping;\n        _this.dataFormat =\n            config.dataFormat === undefined ? 'channelsLast' : config.dataFormat;\n        _this.inputSpec = [{ ndim: 4 }];\n        return _this;\n    }\n    Cropping2D.prototype.computeOutputShape = function (inputShape) {\n        if (this.dataFormat === 'channelsFirst')\n            return [\n                inputShape[0], inputShape[1],\n                inputShape[2] - this.cropping[0][0] - this.cropping[0][1],\n                inputShape[2] - this.cropping[1][0] - this.cropping[1][1]\n            ];\n        else\n            return [\n                inputShape[0],\n                inputShape[1] - this.cropping[0][0] - this.cropping[0][1],\n                inputShape[2] - this.cropping[1][0] - this.cropping[1][1], inputShape[3]\n            ];\n    };\n    Cropping2D.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            inputs = types_utils_1.getExactlyOneTensor(inputs);\n            if (_this.dataFormat === 'channelsLast') {\n                var hSliced = K.sliceAlongAxis(inputs, _this.cropping[0][0], inputs.shape[1] - _this.cropping[0][0] - _this.cropping[0][1], 2);\n                return K.sliceAlongAxis(hSliced, _this.cropping[1][0], inputs.shape[2] - _this.cropping[1][1] - _this.cropping[1][0], 3);\n            }\n            else {\n                var hSliced = K.sliceAlongAxis(inputs, _this.cropping[0][0], inputs.shape[2] - _this.cropping[0][0] - _this.cropping[0][1], 3);\n                return K.sliceAlongAxis(hSliced, _this.cropping[1][0], inputs.shape[3] - _this.cropping[1][1] - _this.cropping[1][0], 4);\n            }\n        });\n    };\n    Cropping2D.prototype.getConfig = function () {\n        var config = { cropping: this.cropping, dataFormat: this.dataFormat };\n        var baseConfig = _super.prototype.getConfig.call(this);\n        Object.assign(config, baseConfig);\n        return config;\n    };\n    Cropping2D.className = 'Cropping2D';\n    return Cropping2D;\n}(topology_1.Layer));\nexports.Cropping2D = Cropping2D;\ntfjs_core_1.serialization.SerializationMap.register(Cropping2D);\nvar UpSampling2D = (function (_super) {\n    __extends(UpSampling2D, _super);\n    function UpSampling2D(config) {\n        var _this = _super.call(this, config) || this;\n        _this.DEFAULT_SIZE = [2, 2];\n        _this.inputSpec = [{ ndim: 4 }];\n        _this.size = config.size == null ? _this.DEFAULT_SIZE : config.size;\n        _this.dataFormat =\n            config.dataFormat == null ? 'channelsLast' : config.dataFormat;\n        return _this;\n    }\n    UpSampling2D.prototype.computeOutputShape = function (inputShape) {\n        if (this.dataFormat === 'channelsFirst') {\n            var height = inputShape[2] == null ? null : this.size[0] * inputShape[2];\n            var width = inputShape[3] == null ? null : this.size[1] * inputShape[3];\n            return [inputShape[0], inputShape[1], height, width];\n        }\n        else {\n            var height = inputShape[1] == null ? null : this.size[0] * inputShape[1];\n            var width = inputShape[2] == null ? null : this.size[1] * inputShape[2];\n            return [inputShape[0], height, width, inputShape[3]];\n        }\n    };\n    UpSampling2D.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfc.tidy(function () {\n            var input = types_utils_1.getExactlyOneTensor(inputs);\n            var inputShape = input.shape;\n            if (_this.dataFormat === 'channelsFirst') {\n                input = tfc.transpose(input, [0, 2, 3, 1]);\n                var height = _this.size[0] * inputShape[2];\n                var width = _this.size[1] * inputShape[3];\n                var resized = input.resizeNearestNeighbor([height, width]);\n                return tfc.transpose(resized, [0, 3, 1, 2]);\n            }\n            else {\n                var height = _this.size[0] * inputShape[1];\n                var width = _this.size[1] * inputShape[2];\n                return input.resizeNearestNeighbor([height, width]);\n            }\n        });\n    };\n    UpSampling2D.prototype.getConfig = function () {\n        var config = { size: this.size, dataFormat: this.dataFormat };\n        var baseConfig = _super.prototype.getConfig.call(this);\n        Object.assign(config, baseConfig);\n        return config;\n    };\n    UpSampling2D.className = 'UpSampling2D';\n    return UpSampling2D;\n}(topology_1.Layer));\nexports.UpSampling2D = UpSampling2D;\ntfjs_core_1.serialization.SerializationMap.register(UpSampling2D);\n\n},{\"../activations\":183,\"../backend/common\":184,\"../backend/tfjs_backend\":186,\"../common\":189,\"../constraints\":190,\"../engine/topology\":194,\"../errors\":196,\"../initializers\":204,\"../regularizers\":222,\"../utils/conv_utils\":223,\"../utils/generic_utils\":224,\"../utils/types_utils\":228,\"@tensorflow/tfjs-core\":59}],207:[function(require,module,exports){\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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfc = require(\"@tensorflow/tfjs-core\");\nvar tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar common_1 = require(\"../backend/common\");\nvar K = require(\"../backend/tfjs_backend\");\nvar common_2 = require(\"../common\");\nvar constraints_1 = require(\"../constraints\");\nvar errors_1 = require(\"../errors\");\nvar initializers_1 = require(\"../initializers\");\nvar regularizers_1 = require(\"../regularizers\");\nvar conv_utils_1 = require(\"../utils/conv_utils\");\nvar types_utils_1 = require(\"../utils/types_utils\");\nvar convolutional_1 = require(\"./convolutional\");\nfunction depthwiseConv2d(x, depthwiseKernel, strides, padding, dataFormat, dilationRate) {\n    if (strides === void 0) { strides = [1, 1]; }\n    if (padding === void 0) { padding = 'valid'; }\n    return tfjs_core_1.tidy(function () {\n        if (dataFormat == null) {\n            dataFormat = common_1.imageDataFormat();\n        }\n        common_2.checkDataFormat(dataFormat);\n        var y = convolutional_1.preprocessConv2DInput(x, dataFormat);\n        if (x.rank !== 4) {\n            throw new errors_1.ValueError(\"Input for depthwiseConv2d is required to be 4-D, but is instead \" +\n                (x.rank + \"-D\"));\n        }\n        if (depthwiseKernel.rank !== 4) {\n            throw new errors_1.ValueError(\"depthwiseKernel is required to be 4-D, but is instead \" +\n                (depthwiseKernel.rank + \"-D\"));\n        }\n        y = tfc.depthwiseConv2d(y, depthwiseKernel, strides, padding === 'same' ? 'same' : 'valid', 'NHWC', dilationRate);\n        if (dataFormat === 'channelsFirst') {\n            y = tfc.transpose(y, [0, 3, 1, 2]);\n        }\n        return y;\n    });\n}\nexports.depthwiseConv2d = depthwiseConv2d;\nvar DepthwiseConv2D = (function (_super) {\n    __extends(DepthwiseConv2D, _super);\n    function DepthwiseConv2D(config) {\n        var _this = _super.call(this, 2, config) || this;\n        _this.depthwiseKernel = null;\n        _this.depthMultiplier =\n            config.depthMultiplier == null ? 1 : config.depthMultiplier;\n        _this.depthwiseInitializer = initializers_1.getInitializer(config.depthwiseInitializer || _this.DEFAULT_KERNEL_INITIALIZER);\n        _this.depthwiseConstraint = constraints_1.getConstraint(config.depthwiseConstraint);\n        _this.depthwiseRegularizer = regularizers_1.getRegularizer(config.depthwiseRegularizer);\n        return _this;\n    }\n    DepthwiseConv2D.prototype.build = function (inputShape) {\n        inputShape = types_utils_1.getExactlyOneShape(inputShape);\n        if (inputShape.length < 4) {\n            throw new errors_1.ValueError(\"Inputs to DepthwiseConv2D should have rank 4. \" +\n                (\"Received input shape: \" + JSON.stringify(inputShape) + \".\"));\n        }\n        var channelAxis = this.dataFormat === 'channelsFirst' ? 1 : 3;\n        if (inputShape[channelAxis] == null || inputShape[channelAxis] < 0) {\n            throw new errors_1.ValueError('The channel dimension of the inputs to DepthwiseConv2D should ' +\n                (\"be defined, but is not (\" + inputShape[channelAxis] + \").\"));\n        }\n        var inputDim = inputShape[channelAxis];\n        var depthwiseKernelShape = [\n            this.kernelSize[0], this.kernelSize[1], inputDim, this.depthMultiplier\n        ];\n        this.depthwiseKernel = this.addWeight('depthwise_kernel', depthwiseKernelShape, null, this.depthwiseInitializer, this.depthwiseRegularizer, true, this.depthwiseConstraint);\n        if (this.useBias) {\n            this.bias = this.addWeight('bias', [inputDim * this.depthMultiplier], null, this.biasInitializer, this.biasRegularizer, true, this.biasConstraint);\n        }\n        else {\n            this.bias = null;\n        }\n        this.built = true;\n    };\n    DepthwiseConv2D.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            inputs = types_utils_1.getExactlyOneTensor(inputs);\n            var outputs = depthwiseConv2d(inputs, _this.depthwiseKernel.read(), _this.strides, _this.padding, _this.dataFormat, null);\n            if (_this.useBias) {\n                outputs = K.biasAdd(outputs, _this.bias.read(), _this.dataFormat);\n            }\n            if (_this.activation != null) {\n                outputs = _this.activation.apply(outputs);\n            }\n            return outputs;\n        });\n    };\n    DepthwiseConv2D.prototype.computeOutputShape = function (inputShape) {\n        inputShape = types_utils_1.getExactlyOneShape(inputShape);\n        var rows = this.dataFormat === 'channelsFirst' ? inputShape[2] : inputShape[1];\n        var cols = this.dataFormat === 'channelsFirst' ? inputShape[3] : inputShape[2];\n        var outFilters = this.dataFormat === 'channelsFirst' ?\n            inputShape[1] * this.depthMultiplier :\n            inputShape[3] * this.depthMultiplier;\n        var outRows = conv_utils_1.convOutputLength(rows, this.kernelSize[0], this.padding, this.strides[0]);\n        var outCols = conv_utils_1.convOutputLength(cols, this.kernelSize[1], this.padding, this.strides[1]);\n        if (this.dataFormat === 'channelsFirst') {\n            return [inputShape[0], outFilters, outRows, outCols];\n        }\n        else {\n            return [inputShape[0], outRows, outCols, outFilters];\n        }\n    };\n    DepthwiseConv2D.prototype.getConfig = function () {\n        var config = _super.prototype.getConfig.call(this);\n        config['depthMultiplier'] = this.depthMultiplier;\n        config['depthwiseInitializer'] =\n            initializers_1.serializeInitializer(this.depthwiseInitializer);\n        config['depthwiseRegularizer'] =\n            regularizers_1.serializeRegularizer(this.depthwiseRegularizer);\n        config['depthwiseConstraint'] =\n            constraints_1.serializeConstraint(this.depthwiseRegularizer);\n        return config;\n    };\n    DepthwiseConv2D.className = 'DepthwiseConv2D';\n    return DepthwiseConv2D;\n}(convolutional_1.BaseConv));\nexports.DepthwiseConv2D = DepthwiseConv2D;\ntfjs_core_1.serialization.SerializationMap.register(DepthwiseConv2D);\n\n},{\"../backend/common\":184,\"../backend/tfjs_backend\":186,\"../common\":189,\"../constraints\":190,\"../errors\":196,\"../initializers\":204,\"../regularizers\":222,\"../utils/conv_utils\":223,\"../utils/types_utils\":228,\"./convolutional\":206,\"@tensorflow/tfjs-core\":59}],208:[function(require,module,exports){\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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar activations_1 = require(\"../activations\");\nvar K = require(\"../backend/tfjs_backend\");\nvar constraints_1 = require(\"../constraints\");\nvar topology_1 = require(\"../engine/topology\");\nvar state_1 = require(\"../backend/state\");\nvar errors_1 = require(\"../errors\");\nvar initializers_1 = require(\"../initializers\");\nvar regularizers_1 = require(\"../regularizers\");\nvar math_utils = require(\"../utils/math_utils\");\nvar types_utils_1 = require(\"../utils/types_utils\");\nvar Dropout = (function (_super) {\n    __extends(Dropout, _super);\n    function Dropout(config) {\n        var _this = _super.call(this, config) || this;\n        _this.rate = Math.max(Math.min(config.rate, 1), 0);\n        _this.rateScalar = state_1.getScalar(_this.rate);\n        _this.noiseShape = config.noiseShape;\n        _this.seed = config.seed;\n        if (_this.seed != null) {\n            throw new errors_1.NotImplementedError('Non-default seed is not implemented in Dropout layer yet: ' +\n                _this.seed);\n        }\n        _this.supportsMasking = true;\n        return _this;\n    }\n    Dropout.prototype.getNoiseShape = function (input) {\n        if (this.noiseShape == null) {\n            return this.noiseShape;\n        }\n        var inputShape = input.shape;\n        var noiseShape = [];\n        for (var i = 0; i < this.noiseShape.length; ++i) {\n            noiseShape.push(this.noiseShape[i] == null ? inputShape[i] : this.noiseShape[i]);\n        }\n        return noiseShape;\n    };\n    Dropout.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            _this.invokeCallHook(inputs, kwargs);\n            var input = types_utils_1.getExactlyOneTensor(inputs);\n            if (_this.noiseShape != null &&\n                !tfjs_core_1.util.arraysEqual(input.shape, _this.noiseShape)) {\n                throw new errors_1.NotImplementedError('Non-default noise shape is not implemented in Dropout ' +\n                    'layer yet: ' + JSON.stringify(_this.noiseShape));\n            }\n            if (0 < _this.rate && _this.rate < 1) {\n                var training = kwargs['training'] == null ? false : kwargs['training'];\n                var noiseShape_1 = _this.getNoiseShape(input);\n                var output = K.inTrainPhase(function () { return K.dropout(input, _this.rateScalar, noiseShape_1, _this.seed); }, function () { return input; }, training);\n                return output;\n            }\n            return inputs;\n        });\n    };\n    Dropout.prototype.getConfig = function () {\n        var config = {\n            rate: this.rate,\n            noiseShape: this.noiseShape,\n            seed: this.seed,\n        };\n        var baseConfig = _super.prototype.getConfig.call(this);\n        Object.assign(config, baseConfig);\n        return config;\n    };\n    Dropout.className = 'Dropout';\n    return Dropout;\n}(topology_1.Layer));\nexports.Dropout = Dropout;\ntfjs_core_1.serialization.SerializationMap.register(Dropout);\nvar Dense = (function (_super) {\n    __extends(Dense, _super);\n    function Dense(config) {\n        var _this = _super.call(this, config) || this;\n        _this.activation = null;\n        _this.useBias = true;\n        _this.kernel = null;\n        _this.bias = null;\n        _this.DEFAULT_KERNEL_INITIALIZER = 'glorotNormal';\n        _this.DEFAULT_BIAS_INITIALIZER = 'zeros';\n        if (config.batchInputShape == null && config.inputShape == null &&\n            config.inputDim != null) {\n            var batchSize = null;\n            if (config.batchSize != null) {\n                batchSize = config.batchSize;\n            }\n            _this.batchInputShape = [batchSize, config.inputDim];\n        }\n        _this.units = config.units;\n        _this.activation = activations_1.getActivation(config.activation);\n        if (config.useBias != null) {\n            _this.useBias = config.useBias;\n        }\n        _this.kernelInitializer = initializers_1.getInitializer(config.kernelInitializer || _this.DEFAULT_KERNEL_INITIALIZER);\n        _this.biasInitializer =\n            initializers_1.getInitializer(config.biasInitializer || _this.DEFAULT_BIAS_INITIALIZER);\n        _this.kernelConstraint = constraints_1.getConstraint(config.kernelConstraint);\n        _this.biasConstraint = constraints_1.getConstraint(config.biasConstraint);\n        _this.kernelRegularizer = regularizers_1.getRegularizer(config.kernelRegularizer);\n        _this.biasRegularizer = regularizers_1.getRegularizer(config.biasRegularizer);\n        _this.activityRegularizer = regularizers_1.getRegularizer(config.activityRegularizer);\n        _this.inputSpec = [{ minNDim: 2 }];\n        return _this;\n    }\n    Dense.prototype.build = function (inputShape) {\n        inputShape = types_utils_1.getExactlyOneShape(inputShape);\n        var inputLastDim = inputShape[inputShape.length - 1];\n        if (this.kernel == null) {\n            this.kernel = this.addWeight('kernel', [inputLastDim, this.units], null, this.kernelInitializer, this.kernelRegularizer, true, this.kernelConstraint);\n            if (this.useBias) {\n                this.bias = this.addWeight('bias', [this.units], null, this.biasInitializer, this.biasRegularizer, true, this.biasConstraint);\n            }\n        }\n        this.inputSpec = [{ minNDim: 2, axes: (_a = {}, _a[-1] = inputLastDim, _a) }];\n        this.built = true;\n        var _a;\n    };\n    Dense.prototype.computeOutputShape = function (inputShape) {\n        inputShape = types_utils_1.getExactlyOneShape(inputShape);\n        var outputShape = inputShape.slice();\n        outputShape[outputShape.length - 1] = this.units;\n        return outputShape;\n    };\n    Dense.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            _this.invokeCallHook(inputs, kwargs);\n            var input = types_utils_1.getExactlyOneTensor(inputs);\n            var output = K.dot(input, _this.kernel.read());\n            if (_this.bias != null) {\n                output = K.biasAdd(output, _this.bias.read());\n            }\n            if (_this.activation != null) {\n                output = _this.activation.apply(output);\n            }\n            return output;\n        });\n    };\n    Dense.prototype.getConfig = function () {\n        var config = {\n            units: this.units,\n            activation: activations_1.serializeActivation(this.activation),\n            useBias: this.useBias,\n            kernelInitializer: initializers_1.serializeInitializer(this.kernelInitializer),\n            biasInitializer: initializers_1.serializeInitializer(this.biasInitializer),\n            kernelRegularizer: regularizers_1.serializeRegularizer(this.kernelRegularizer),\n            biasRegularizer: regularizers_1.serializeRegularizer(this.biasRegularizer),\n            activityRegularizer: regularizers_1.serializeRegularizer(this.activityRegularizer),\n            kernelConstraint: constraints_1.serializeConstraint(this.kernelConstraint),\n            biasConstraint: constraints_1.serializeConstraint(this.biasConstraint)\n        };\n        var baseConfig = _super.prototype.getConfig.call(this);\n        Object.assign(config, baseConfig);\n        return config;\n    };\n    Dense.className = 'Dense';\n    return Dense;\n}(topology_1.Layer));\nexports.Dense = Dense;\ntfjs_core_1.serialization.SerializationMap.register(Dense);\nvar Flatten = (function (_super) {\n    __extends(Flatten, _super);\n    function Flatten(config) {\n        var _this = _super.call(this, config || {}) || this;\n        _this.inputSpec = [{ minNDim: 3 }];\n        return _this;\n    }\n    Flatten.prototype.computeOutputShape = function (inputShape) {\n        inputShape = types_utils_1.getExactlyOneShape(inputShape);\n        for (var _i = 0, _a = inputShape.slice(1); _i < _a.length; _i++) {\n            var dim = _a[_i];\n            if (dim == null) {\n                throw new errors_1.ValueError(\"The shape of the input to \\\"Flatten\\\" is not fully defined \" +\n                    (\"(got \" + inputShape.slice(1) + \"). Make sure to pass a complete \") +\n                    \"\\\"input_shape\\\" or \\\"batch_input_shape\\\" argument to the first \" +\n                    \"layer in your model.\");\n            }\n        }\n        return [inputShape[0], math_utils.arrayProd(inputShape, 1)];\n    };\n    Flatten.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            _this.invokeCallHook(inputs, kwargs);\n            return K.batchFlatten(types_utils_1.getExactlyOneTensor(inputs));\n        });\n    };\n    Flatten.className = 'Flatten';\n    return Flatten;\n}(topology_1.Layer));\nexports.Flatten = Flatten;\ntfjs_core_1.serialization.SerializationMap.register(Flatten);\nvar Activation = (function (_super) {\n    __extends(Activation, _super);\n    function Activation(config) {\n        var _this = _super.call(this, config) || this;\n        _this.supportsMasking = true;\n        _this.activation = activations_1.getActivation(config.activation);\n        return _this;\n    }\n    Activation.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            _this.invokeCallHook(inputs, kwargs);\n            var input = types_utils_1.getExactlyOneTensor(inputs);\n            return _this.activation.apply(input);\n        });\n    };\n    Activation.prototype.getConfig = function () {\n        var config = { activation: activations_1.serializeActivation(this.activation) };\n        var baseConfig = _super.prototype.getConfig.call(this);\n        Object.assign(config, baseConfig);\n        return config;\n    };\n    Activation.className = 'Activation';\n    return Activation;\n}(topology_1.Layer));\nexports.Activation = Activation;\ntfjs_core_1.serialization.SerializationMap.register(Activation);\nvar RepeatVector = (function (_super) {\n    __extends(RepeatVector, _super);\n    function RepeatVector(config) {\n        var _this = _super.call(this, config) || this;\n        _this.n = config.n;\n        _this.inputSpec = [{ ndim: 2 }];\n        return _this;\n    }\n    RepeatVector.prototype.computeOutputShape = function (inputShape) {\n        return [inputShape[0], this.n, inputShape[1]];\n    };\n    RepeatVector.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            inputs = types_utils_1.getExactlyOneTensor(inputs);\n            return K.repeat(inputs, _this.n);\n        });\n    };\n    RepeatVector.prototype.getConfig = function () {\n        var config = {\n            n: this.n,\n        };\n        var baseConfig = _super.prototype.getConfig.call(this);\n        Object.assign(config, baseConfig);\n        return config;\n    };\n    RepeatVector.className = 'RepeatVector';\n    return RepeatVector;\n}(topology_1.Layer));\nexports.RepeatVector = RepeatVector;\ntfjs_core_1.serialization.SerializationMap.register(RepeatVector);\nvar Reshape = (function (_super) {\n    __extends(Reshape, _super);\n    function Reshape(config) {\n        var _this = _super.call(this, config) || this;\n        _this.targetShape = config.targetShape;\n        for (var i = 0; i < _this.targetShape.length; ++i) {\n            if (_this.isUnknown(_this.targetShape[i])) {\n                _this.targetShape[i] = null;\n            }\n        }\n        return _this;\n    }\n    Reshape.prototype.isUnknown = function (dim) {\n        return dim < 0 || dim == null;\n    };\n    Reshape.prototype.fixUnknownDimension = function (inputShape, outputShape) {\n        var errorMsg = 'Total size of new array must be unchanged.';\n        var finalShape = outputShape.slice();\n        var known = 1;\n        var unknown = null;\n        for (var i = 0; i < finalShape.length; ++i) {\n            var dim = finalShape[i];\n            if (this.isUnknown(dim)) {\n                if (unknown === null) {\n                    unknown = i;\n                }\n                else {\n                    throw new errors_1.ValueError('Can only specifiy one unknown dimension.');\n                }\n            }\n            else {\n                known *= dim;\n            }\n        }\n        var originalSize = math_utils.arrayProd(inputShape);\n        if (unknown !== null) {\n            if (known === 0 || originalSize % known !== 0) {\n                throw new errors_1.ValueError(errorMsg);\n            }\n            finalShape[unknown] = originalSize / known;\n        }\n        else if (originalSize !== known) {\n            throw new errors_1.ValueError(errorMsg);\n        }\n        return finalShape;\n    };\n    Reshape.prototype.computeOutputShape = function (inputShape) {\n        var anyUnknownDims = false;\n        for (var i = 0; i < inputShape.length; ++i) {\n            if (this.isUnknown(inputShape[i])) {\n                anyUnknownDims = true;\n                break;\n            }\n        }\n        if (anyUnknownDims) {\n            return inputShape.slice(0, 1).concat(this.targetShape);\n        }\n        else {\n            return inputShape.slice(0, 1).concat(this.fixUnknownDimension(inputShape.slice(1), this.targetShape));\n        }\n    };\n    Reshape.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            _this.invokeCallHook(inputs, kwargs);\n            var input = types_utils_1.getExactlyOneTensor(inputs);\n            var inputShape = input.shape;\n            var outputShape = inputShape.slice(0, 1).concat(_this.fixUnknownDimension(inputShape.slice(1), _this.targetShape));\n            return input.reshape(outputShape);\n        });\n    };\n    Reshape.prototype.getConfig = function () {\n        var config = {\n            targetShape: this.targetShape,\n        };\n        var baseConfig = _super.prototype.getConfig.call(this);\n        Object.assign(config, baseConfig);\n        return config;\n    };\n    Reshape.className = 'Reshape';\n    return Reshape;\n}(topology_1.Layer));\nexports.Reshape = Reshape;\ntfjs_core_1.serialization.SerializationMap.register(Reshape);\n\n},{\"../activations\":183,\"../backend/state\":185,\"../backend/tfjs_backend\":186,\"../constraints\":190,\"../engine/topology\":194,\"../errors\":196,\"../initializers\":204,\"../regularizers\":222,\"../utils/math_utils\":226,\"../utils/types_utils\":228,\"@tensorflow/tfjs-core\":59}],209:[function(require,module,exports){\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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar K = require(\"../backend/tfjs_backend\");\nvar constraints_1 = require(\"../constraints\");\nvar topology_1 = require(\"../engine/topology\");\nvar errors_1 = require(\"../errors\");\nvar initializers_1 = require(\"../initializers\");\nvar regularizers_1 = require(\"../regularizers\");\nvar generic_utils = require(\"../utils/generic_utils\");\nvar types_utils_1 = require(\"../utils/types_utils\");\nvar Embedding = (function (_super) {\n    __extends(Embedding, _super);\n    function Embedding(config) {\n        var _this = _super.call(this, config) || this;\n        _this.embeddings = null;\n        _this.DEFAULT_EMBEDDINGS_INITIALIZER = 'randomUniform';\n        if (config.batchInputShape == null && config.inputShape == null) {\n            var batchSize = null;\n            if (config.batchSize != null) {\n                batchSize = config.batchSize;\n            }\n            if (config.inputLength == null) {\n                _this.batchInputShape = [batchSize, null];\n            }\n            else {\n                _this.batchInputShape =\n                    [batchSize].concat(generic_utils.toList(config.inputLength));\n            }\n        }\n        _this.inputDim = config.inputDim;\n        _this.outputDim = config.outputDim;\n        _this.embeddingsInitializer = initializers_1.getInitializer(config.embeddingsInitializer || _this.DEFAULT_EMBEDDINGS_INITIALIZER);\n        _this.embeddingsRegularizer = regularizers_1.getRegularizer(config.embeddingsRegularizer);\n        _this.activityRegularizer = regularizers_1.getRegularizer(config.activityRegularizer);\n        _this.embeddingsConstraint = constraints_1.getConstraint(config.embeddingsConstraint);\n        _this.maskZero = config.maskZero;\n        _this.inputLength = config.inputLength;\n        return _this;\n    }\n    Embedding.prototype.build = function (inputShape) {\n        this.embeddings = this.addWeight('embeddings', [this.inputDim, this.outputDim], this.dtype, this.embeddingsInitializer, this.embeddingsRegularizer, true, this.embeddingsConstraint);\n        this.built = true;\n    };\n    Embedding.prototype.warnOnIncompatibleInputShape = function (inputShape) { };\n    Embedding.prototype.computeMask = function (inputs, mask) {\n        throw new errors_1.NotImplementedError('computeMask has not been implemented for Embedding yet');\n    };\n    Embedding.prototype.computeOutputShape = function (inputShape) {\n        inputShape = types_utils_1.getExactlyOneShape(inputShape);\n        if (this.inputLength == null) {\n            return inputShape.concat([this.outputDim]);\n        }\n        var inLens = generic_utils.toList(this.inputLength);\n        if (inLens.length !== inputShape.length - 1) {\n            throw new errors_1.ValueError(\"\\\"inputLength\\\" is \" + this.inputLength + \", but received \" +\n                (\"input shape has shape \" + inputShape));\n        }\n        else {\n            var i = 0;\n            for (var k = 0; k < inLens.length; ++k) {\n                var s1 = inLens[k];\n                var s2 = inputShape[k + 1];\n                if ((s1 != null) && (s2 != null) && (s1 !== s2)) {\n                    throw new errors_1.ValueError(\"\\\"inputLength\\\" is \" + this.inputLength + \", but received \" +\n                        (\"input shape has shape \" + inputShape));\n                }\n                else if (s1 == null) {\n                    inLens[i] = s2;\n                }\n                i++;\n            }\n        }\n        return [inputShape[0]].concat(inLens, [this.outputDim]);\n    };\n    Embedding.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            _this.invokeCallHook(inputs, kwargs);\n            var input = types_utils_1.getExactlyOneTensor(inputs);\n            if (input.dtype !== 'int32') {\n                input = K.cast(input, 'int32');\n            }\n            var output = K.gather(_this.embeddings.read(), input.as1D());\n            return output.reshape(types_utils_1.getExactlyOneShape(_this.computeOutputShape(input.shape)));\n        });\n    };\n    Embedding.prototype.getConfig = function () {\n        var config = {\n            inputDim: this.inputDim,\n            outputDim: this.outputDim,\n            embeddingsInitializer: initializers_1.serializeInitializer(this.embeddingsInitializer),\n            embeddingsRegularizer: regularizers_1.serializeRegularizer(this.embeddingsRegularizer),\n            activityRegularizer: regularizers_1.serializeRegularizer(this.activityRegularizer),\n            embeddingsConstraint: constraints_1.serializeConstraint(this.embeddingsConstraint),\n            maskZero: this.maskZero,\n            inputLength: this.inputLength\n        };\n        var baseConfig = _super.prototype.getConfig.call(this);\n        Object.assign(config, baseConfig);\n        return config;\n    };\n    Embedding.className = 'Embedding';\n    return Embedding;\n}(topology_1.Layer));\nexports.Embedding = Embedding;\ntfjs_core_1.serialization.SerializationMap.register(Embedding);\n\n},{\"../backend/tfjs_backend\":186,\"../constraints\":190,\"../engine/topology\":194,\"../errors\":196,\"../initializers\":204,\"../regularizers\":222,\"../utils/generic_utils\":224,\"../utils/types_utils\":228,\"@tensorflow/tfjs-core\":59}],210:[function(require,module,exports){\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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfc = require(\"@tensorflow/tfjs-core\");\nvar tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar K = require(\"../backend/tfjs_backend\");\nvar topology_1 = require(\"../engine/topology\");\nvar state_1 = require(\"../backend/state\");\nvar errors_1 = require(\"../errors\");\nvar generic_utils = require(\"../utils/generic_utils\");\nvar mathUtils = require(\"../utils/math_utils\");\nvar types_utils_1 = require(\"../utils/types_utils\");\nvar Merge = (function (_super) {\n    __extends(Merge, _super);\n    function Merge(config) {\n        var _this = _super.call(this, config || {}) || this;\n        _this.supportsMasking = true;\n        return _this;\n    }\n    Merge.prototype.mergeFunction = function (inputs) {\n        throw new errors_1.NotImplementedError();\n    };\n    Merge.prototype.computeElementwiseOpOutputShape = function (shape1, shape2) {\n        if (shape1 == null || shape2 == null) {\n            return null;\n        }\n        else if (shape1.length < shape2.length) {\n            return this.computeElementwiseOpOutputShape(shape2, shape1);\n        }\n        else if (shape2.length === 0) {\n            return shape1;\n        }\n        var outputShape = shape1.slice(0, shape1.length - shape2.length);\n        for (var k = 0; k < shape2.length; ++k) {\n            var i = shape1[shape1.length - shape2.length + k];\n            var j = shape2[k];\n            if (i == null || j == null || i < 0 || j < 0) {\n                outputShape.push(null);\n            }\n            else if (i === 1) {\n                outputShape.push(j);\n            }\n            else if (j === 1) {\n                outputShape.push(i);\n            }\n            else {\n                if (i !== j) {\n                    throw new errors_1.ValueError('Operands could not be broadcast together with shapes ' +\n                        JSON.stringify(shape1) + ' ' + JSON.stringify(shape2));\n                }\n                outputShape.push(i);\n            }\n        }\n        return outputShape;\n    };\n    Merge.prototype.build = function (inputShape) {\n        if (Array.isArray(inputShape) && !Array.isArray(inputShape[0])) {\n            inputShape = [types_utils_1.getExactlyOneShape(inputShape)];\n        }\n        inputShape = inputShape;\n        if (inputShape.length < 2) {\n            throw new errors_1.ValueError('A merge layer should be called on an Array of at least 2 inputs.' +\n                (\" Got \" + inputShape.length + \" input(s).\"));\n        }\n        var batchSizes = [];\n        for (var _i = 0, inputShape_1 = inputShape; _i < inputShape_1.length; _i++) {\n            var shape = inputShape_1[_i];\n            if (shape != null && shape[0] !== null) {\n                batchSizes.push(shape[0]);\n            }\n        }\n        batchSizes = generic_utils.unique(batchSizes);\n        if (batchSizes.length > 1) {\n            throw new errors_1.ValueError(\"Can not merge tensors with different batch sizes. \" +\n                (\"Got tensors with shapes: \" + JSON.stringify(inputShape) + \".\"));\n        }\n        var outputShape = inputShape[0] == null ? null : inputShape[0].slice(1);\n        for (var i = 1; i < inputShape.length; ++i) {\n            var shape = inputShape[i] == null ? null : inputShape[i].slice(1);\n            outputShape = this.computeElementwiseOpOutputShape(outputShape, shape);\n        }\n        var allRanks = inputShape.map(function (shape) { return shape.length; });\n        if (inputShape.indexOf(null) === -1 &&\n            generic_utils.unique(allRanks).length === 1) {\n            this.reshapeRequired = false;\n        }\n        else {\n            this.reshapeRequired = true;\n        }\n    };\n    Merge.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            inputs = inputs;\n            if (_this.reshapeRequired) {\n                var reshapedInputs = [];\n                var inputDims = inputs.map(function (input) { return input.rank; });\n                if (inputDims.indexOf(null) === -1) {\n                    var maxNDim = mathUtils.max(inputDims);\n                    for (var _i = 0, inputs_1 = inputs; _i < inputs_1.length; _i++) {\n                        var x = inputs_1[_i];\n                        var xNDim = x.rank;\n                        for (var k = 0; k < maxNDim - xNDim; ++k) {\n                            x = K.expandDims(x, 1);\n                        }\n                        reshapedInputs.push(x);\n                    }\n                    return _this.mergeFunction(reshapedInputs);\n                }\n                else {\n                    var transposed = false;\n                    for (var _a = 0, inputs_2 = inputs; _a < inputs_2.length; _a++) {\n                        var x = inputs_2[_a];\n                        var xNDim = x.rank;\n                        if (xNDim == null) {\n                            var xShape = x.shape;\n                            var batchSize = xShape[0];\n                            var newShape = xShape.slice(1).concat([batchSize]);\n                            var xTransposed = x.reshape([batchSize].concat(mathUtils.arrayProd(xShape.slice(1))));\n                            xTransposed = tfc.transpose(xTransposed, [1, 0]);\n                            xTransposed = xTransposed.reshape(newShape);\n                            reshapedInputs.push(xTransposed);\n                            transposed = true;\n                        }\n                        else if (xNDim > 1) {\n                            var dims = mathUtils.range(1, xNDim).concat([0]);\n                            reshapedInputs.push(tfc.transpose(x, dims));\n                            transposed = true;\n                        }\n                        else {\n                            reshapedInputs.push(x);\n                        }\n                    }\n                    var y = _this.mergeFunction(reshapedInputs);\n                    var yNDim = y.rank;\n                    if (transposed) {\n                        if (yNDim == null) {\n                            var yShape = y.shape;\n                            var yNDim_1 = yShape.length;\n                            var batchSize = yShape[yNDim_1 - 1];\n                            var newShape = [batchSize].concat(yShape.slice(0, yShape.length - 1));\n                            y = tfc.transpose(y.reshape([-1, batchSize]), [1, 0])\n                                .reshape(newShape);\n                        }\n                        else if (yNDim > 1) {\n                            var dims = [yNDim - 1].concat(mathUtils.range(0, yNDim - 1));\n                            y = tfc.transpose(y, dims);\n                        }\n                    }\n                    return y;\n                }\n            }\n            else {\n                return _this.mergeFunction(inputs);\n            }\n        });\n    };\n    Merge.prototype.computeOutputShape = function (inputShape) {\n        inputShape = inputShape;\n        var outputShape;\n        if (inputShape[0] == null) {\n            outputShape = null;\n        }\n        else {\n            outputShape = inputShape[0].slice(1);\n        }\n        for (var i = 1; i < inputShape.length; ++i) {\n            var shape = inputShape[i] == null ? null : inputShape[i].slice(1);\n            outputShape = this.computeElementwiseOpOutputShape(outputShape, shape);\n        }\n        var batchSizes = [];\n        for (var _i = 0, inputShape_2 = inputShape; _i < inputShape_2.length; _i++) {\n            var shape = inputShape_2[_i];\n            if (shape != null && shape[0] !== null) {\n                batchSizes.push(shape[0]);\n            }\n        }\n        batchSizes = generic_utils.unique(batchSizes);\n        if (batchSizes.length === 1) {\n            outputShape = batchSizes.concat(outputShape);\n        }\n        else {\n            outputShape = [null].concat(outputShape);\n        }\n        return outputShape;\n    };\n    return Merge;\n}(topology_1.Layer));\nexports.Merge = Merge;\nvar Add = (function (_super) {\n    __extends(Add, _super);\n    function Add(config) {\n        return _super.call(this, config) || this;\n    }\n    Add.prototype.mergeFunction = function (inputs) {\n        return tfjs_core_1.tidy(function () {\n            var output = tfc.zeros(inputs[0].shape);\n            for (var _i = 0, inputs_3 = inputs; _i < inputs_3.length; _i++) {\n                var input = inputs_3[_i];\n                output = tfc.add(output, input);\n            }\n            return output;\n        });\n    };\n    Add.className = 'Add';\n    return Add;\n}(Merge));\nexports.Add = Add;\ntfjs_core_1.serialization.SerializationMap.register(Add);\nfunction add(config) {\n    if (Array.isArray(config)) {\n        var layer = new Add({});\n        return layer.apply(config);\n    }\n    else {\n        return new Add(config);\n    }\n}\nexports.add = add;\nvar Multiply = (function (_super) {\n    __extends(Multiply, _super);\n    function Multiply(config) {\n        return _super.call(this, config) || this;\n    }\n    Multiply.prototype.mergeFunction = function (inputs) {\n        return tfjs_core_1.tidy(function () {\n            var output = tfc.ones(inputs[0].shape);\n            for (var _i = 0, inputs_4 = inputs; _i < inputs_4.length; _i++) {\n                var input = inputs_4[_i];\n                output = tfc.mul(output, input);\n            }\n            return output;\n        });\n    };\n    Multiply.className = 'Multiply';\n    return Multiply;\n}(Merge));\nexports.Multiply = Multiply;\ntfjs_core_1.serialization.SerializationMap.register(Multiply);\nfunction multiply(config) {\n    if (Array.isArray(config)) {\n        var layer = new Multiply({});\n        return layer.apply(config);\n    }\n    else {\n        return new Multiply(config);\n    }\n}\nexports.multiply = multiply;\nvar Average = (function (_super) {\n    __extends(Average, _super);\n    function Average(config) {\n        return _super.call(this, config) || this;\n    }\n    Average.prototype.mergeFunction = function (inputs) {\n        return tfjs_core_1.tidy(function () {\n            var output = tfc.zeros(inputs[0].shape);\n            for (var _i = 0, inputs_5 = inputs; _i < inputs_5.length; _i++) {\n                var input = inputs_5[_i];\n                output = tfc.add(output, input);\n            }\n            return tfc.mul(state_1.getScalar(1 / inputs.length), output);\n        });\n    };\n    Average.className = 'Average';\n    return Average;\n}(Merge));\nexports.Average = Average;\ntfjs_core_1.serialization.SerializationMap.register(Average);\nfunction average(config) {\n    if (Array.isArray(config)) {\n        var layer = new Average({});\n        return layer.apply(config);\n    }\n    else {\n        return new Average(config);\n    }\n}\nexports.average = average;\nvar Maximum = (function (_super) {\n    __extends(Maximum, _super);\n    function Maximum(config) {\n        return _super.call(this, config) || this;\n    }\n    Maximum.prototype.mergeFunction = function (inputs) {\n        return tfjs_core_1.tidy(function () {\n            var output = inputs[0];\n            for (var i = 1; i < inputs.length; ++i) {\n                output = tfc.maximum(output, inputs[i]);\n            }\n            return output;\n        });\n    };\n    Maximum.className = 'Maximum';\n    return Maximum;\n}(Merge));\nexports.Maximum = Maximum;\ntfjs_core_1.serialization.SerializationMap.register(Maximum);\nfunction maximum(config) {\n    if (Array.isArray(config)) {\n        var layer = new Maximum({});\n        return layer.apply(config);\n    }\n    else {\n        return new Maximum(config);\n    }\n}\nexports.maximum = maximum;\nvar Minimum = (function (_super) {\n    __extends(Minimum, _super);\n    function Minimum(config) {\n        return _super.call(this, config) || this;\n    }\n    Minimum.prototype.mergeFunction = function (inputs) {\n        return tfjs_core_1.tidy(function () {\n            var output = inputs[0];\n            for (var i = 1; i < inputs.length; ++i) {\n                output = tfc.minimum(output, inputs[i]);\n            }\n            return output;\n        });\n    };\n    Minimum.className = 'Minimum';\n    return Minimum;\n}(Merge));\nexports.Minimum = Minimum;\ntfjs_core_1.serialization.SerializationMap.register(Minimum);\nfunction minimum(config) {\n    if (Array.isArray(config)) {\n        var layer = new Minimum({});\n        return layer.apply(config);\n    }\n    else {\n        return new Minimum(config);\n    }\n}\nexports.minimum = minimum;\nvar Concatenate = (function (_super) {\n    __extends(Concatenate, _super);\n    function Concatenate(config) {\n        var _this = _super.call(this, config) || this;\n        _this.DEFAULT_AXIS = -1;\n        if (config == null) {\n            config = {};\n        }\n        _this.axis = config.axis == null ? _this.DEFAULT_AXIS : config.axis;\n        _this.supportsMasking = true;\n        _this.reshapeRequired = false;\n        return _this;\n    }\n    Concatenate.prototype.build = function (inputShape) {\n        if (!(Array.isArray(inputShape) && Array.isArray(inputShape[0])) ||\n            inputShape.length === 1) {\n            throw new errors_1.ValueError('A `Concatenate` layer should be called on a list of at least 2 ' +\n                'inputs');\n        }\n        inputShape = inputShape;\n        var allNoneShape = true;\n        for (var _i = 0, inputShape_3 = inputShape; _i < inputShape_3.length; _i++) {\n            var shape = inputShape_3[_i];\n            if (shape != null) {\n                allNoneShape = false;\n                break;\n            }\n        }\n        if (allNoneShape) {\n            return;\n        }\n        var shapeSet = [];\n        for (var i = 0; i < inputShape.length; ++i) {\n            var shapeWithoutConcatAxis = inputShape[i].slice();\n            shapeWithoutConcatAxis.splice(this.axis, 1);\n            var exists = false;\n            for (var _a = 0, shapeSet_1 = shapeSet; _a < shapeSet_1.length; _a++) {\n                var shape = shapeSet_1[_a];\n                if (tfjs_core_1.util.arraysEqual(shape, shapeWithoutConcatAxis)) {\n                    exists = true;\n                    break;\n                }\n            }\n            if (!exists) {\n                shapeSet.push(shapeWithoutConcatAxis);\n            }\n        }\n        if (shapeSet.length > 1) {\n            throw new errors_1.ValueError('A `Concatenate` layer requires inputs with matching shapes ' +\n                'except for the concat axis. Got input shapes: ' +\n                JSON.stringify(inputShape));\n        }\n    };\n    Concatenate.prototype.mergeFunction = function (inputs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            return K.concatenate(inputs, _this.axis);\n        });\n    };\n    Concatenate.prototype.computeOutputShape = function (inputShape) {\n        if (!(Array.isArray(inputShape) && Array.isArray(inputShape[0]))) {\n            throw new errors_1.ValueError('A `Concatenate` layer should be called on a list of inputs.');\n        }\n        var inputShapes = inputShape;\n        var outputShape = inputShapes[0].slice();\n        var axis = this.axis < 0 ? outputShape.length + this.axis : this.axis;\n        for (var _i = 0, _a = inputShapes.slice(1); _i < _a.length; _i++) {\n            var shape = _a[_i];\n            if (outputShape[axis] == null || shape[axis] == null) {\n                outputShape[axis] = null;\n                break;\n            }\n            outputShape[axis] += shape[axis];\n        }\n        return outputShape;\n    };\n    Concatenate.prototype.getConfig = function () {\n        var config = {\n            'axis': this.axis,\n        };\n        var baseConfig = _super.prototype.getConfig.call(this);\n        Object.assign(config, baseConfig);\n        return config;\n    };\n    Concatenate.className = 'Concatenate';\n    return Concatenate;\n}(Merge));\nexports.Concatenate = Concatenate;\ntfjs_core_1.serialization.SerializationMap.register(Concatenate);\nfunction concatenate(config) {\n    if (Array.isArray(config)) {\n        var layer = new Concatenate({});\n        return layer.apply(config);\n    }\n    else {\n        return new Concatenate(config);\n    }\n}\nexports.concatenate = concatenate;\n\n},{\"../backend/state\":185,\"../backend/tfjs_backend\":186,\"../engine/topology\":194,\"../errors\":196,\"../utils/generic_utils\":224,\"../utils/math_utils\":226,\"../utils/types_utils\":228,\"@tensorflow/tfjs-core\":59}],211:[function(require,module,exports){\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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfc = require(\"@tensorflow/tfjs-core\");\nvar tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar constraints_1 = require(\"../constraints\");\nvar topology_1 = require(\"../engine/topology\");\nvar state_1 = require(\"../backend/state\");\nvar errors_1 = require(\"../errors\");\nvar initializers_1 = require(\"../initializers\");\nvar regularizers_1 = require(\"../regularizers\");\nvar generic_utils = require(\"../utils/generic_utils\");\nvar math_utils = require(\"../utils/math_utils\");\nvar types_utils_1 = require(\"../utils/types_utils\");\nfunction batchNormalization(x, mean, variance, beta, gamma, epsilon) {\n    if (epsilon === void 0) { epsilon = 1e-3; }\n    var out;\n    if (x.rank === 2) {\n        out = tfc.batchNormalization2d(x, mean, variance, epsilon, gamma, beta);\n    }\n    else if (x.rank === 3) {\n        out = tfc.batchNormalization3d(x, mean, variance, epsilon, gamma, beta);\n    }\n    else if (x.rank === 4) {\n        out = tfc.batchNormalization4d(x, mean, variance, epsilon, gamma, beta);\n    }\n    else {\n        throw new errors_1.NotImplementedError(\"batchNormalization is not implememnted for array of rank \" + x.rank + \" \" +\n            \"yet\");\n    }\n    return out;\n}\nexports.batchNormalization = batchNormalization;\nfunction regularNormalizeBatchInTraining(x, gamma, beta, reductionAxes, epsilon) {\n    if (epsilon === void 0) { epsilon = 1e-3; }\n    return tfjs_core_1.tidy(function () {\n        var meanAndVariance = tfc.moments(x, reductionAxes);\n        var mean = meanAndVariance.mean;\n        var variance = meanAndVariance.variance;\n        var normed = batchNormalization(x, mean, variance, beta, gamma, epsilon);\n        return [normed, mean, variance];\n    });\n}\nfunction broadcastNormalizeBatchInTraining(x, gamma, beta, reductionAxes, epsilon) {\n    if (epsilon === void 0) { epsilon = 1e-3; }\n    return tfjs_core_1.tidy(function () {\n        var meanAndVariance = tfc.moments(x, reductionAxes);\n        var mean = meanAndVariance.mean;\n        var variance = meanAndVariance.variance;\n        var targetShape = [];\n        for (var _i = 0, _a = math_utils.range(0, x.rank); _i < _a.length; _i++) {\n            var axis = _a[_i];\n            if (reductionAxes.indexOf(axis) !== -1) {\n                targetShape.push(1);\n            }\n            else {\n                targetShape.push(x.shape[axis]);\n            }\n        }\n        var broadcastMean = mean.reshape(targetShape);\n        var broadcastVariance = variance.reshape(targetShape);\n        var broadcastGamma = gamma == null ? null : gamma.reshape(targetShape);\n        var broadcastBeta = beta == null ? null : beta.reshape(targetShape);\n        var normed = batchNormalization(x, broadcastMean, broadcastVariance, broadcastBeta, broadcastGamma, epsilon);\n        return [normed, mean, variance];\n    });\n}\nfunction normalizeBatchInTraining(x, gamma, beta, reductionAxes, epsilon) {\n    if (epsilon === void 0) { epsilon = 1e-3; }\n    if (tfjs_core_1.util.arraysEqual(reductionAxes.slice().sort(), math_utils.range(0, x.rank - 1))) {\n        return regularNormalizeBatchInTraining(x, gamma, beta, reductionAxes, epsilon);\n    }\n    else {\n        return broadcastNormalizeBatchInTraining(x, gamma, beta, reductionAxes, epsilon);\n    }\n}\nexports.normalizeBatchInTraining = normalizeBatchInTraining;\nvar BatchNormalization = (function (_super) {\n    __extends(BatchNormalization, _super);\n    function BatchNormalization(config) {\n        var _this = _super.call(this, config) || this;\n        _this.supportsMasking = true;\n        _this.axis = config.axis == null ? -1 : config.axis;\n        _this.momentum = config.momentum == null ? 0.99 : config.momentum;\n        _this.epsilon = config.epsilon == null ? 1e-3 : config.epsilon;\n        _this.center = config.center == null ? true : config.center;\n        _this.scale = config.scale == null ? true : config.scale;\n        _this.betaInitializer = initializers_1.getInitializer(config.betaInitializer || 'zeros');\n        _this.gammaInitializer = initializers_1.getInitializer(config.gammaInitializer || 'ones');\n        _this.movingMeanInitializer =\n            initializers_1.getInitializer(config.movingMeanInitializer || 'zeros');\n        _this.movingVarianceInitializer =\n            initializers_1.getInitializer(config.movingVarianceInitializer || 'ones');\n        _this.betaConstraint = constraints_1.getConstraint(config.betaConstraint);\n        _this.gammaConstraint = constraints_1.getConstraint(config.gammaConstraint);\n        _this.betaRegularizer = regularizers_1.getRegularizer(config.betaRegularizer);\n        _this.gammaRegularizer = regularizers_1.getRegularizer(config.gammaRegularizer);\n        _this.stepCount = 0;\n        return _this;\n    }\n    BatchNormalization.prototype.build = function (inputShape) {\n        inputShape = types_utils_1.getExactlyOneShape(inputShape);\n        var axis = this.axis >= 0 ? this.axis : (this.axis + inputShape.length);\n        var dim = inputShape[axis];\n        if (dim == null) {\n            throw new errors_1.ValueError(\"Axis \" + axis + \" of input tensor should have a defined dimension but \" +\n                \"the layer received an input with shape \" +\n                (JSON.stringify(inputShape) + \".\"));\n        }\n        this.inputSpec =\n            [new topology_1.InputSpec({ ndim: inputShape.length, axes: (_a = {}, _a[axis] = dim, _a) })];\n        var shape = [dim];\n        if (this.scale) {\n            this.gamma = this.addWeight('gamma', shape, null, this.gammaInitializer, this.gammaRegularizer, true, this.gammaConstraint);\n        }\n        if (this.center) {\n            this.beta = this.addWeight('beta', shape, null, this.betaInitializer, this.betaRegularizer, true, this.betaConstraint);\n        }\n        this.movingMean = this.addWeight('moving_mean', shape, null, this.movingMeanInitializer, null, false);\n        this.movingVariance = this.addWeight('moving_variance', shape, null, this.movingVarianceInitializer, null, false);\n        this.built = true;\n        var _a;\n    };\n    BatchNormalization.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            var training = kwargs['training'] == null ? false : kwargs['training'];\n            var input = types_utils_1.getExactlyOneTensor(inputs);\n            var inputShape = input.shape;\n            var ndim = inputShape.length;\n            var reductionAxes = math_utils.range(0, ndim);\n            var axis = _this.axis >= 0 ? _this.axis : (_this.axis + ndim);\n            reductionAxes.splice(axis, 1);\n            var broadcastShape = generic_utils.pyListRepeat(1, ndim);\n            broadcastShape[axis] = inputShape[axis];\n            var sortedReductionAxes = reductionAxes.slice();\n            sortedReductionAxes.sort();\n            var needsBroadcasting = !tfjs_core_1.util.arraysEqual(sortedReductionAxes, math_utils.range(0, ndim).slice(0, ndim - 1));\n            var normalizeInference = function () {\n                if (needsBroadcasting) {\n                    var broadcastMovingMean = _this.movingMean.read().reshape(broadcastShape);\n                    var broadcastMovingVariance = _this.movingVariance.read().reshape(broadcastShape);\n                    var broadcastBeta = _this.center ? _this.beta.read().reshape(broadcastShape) : null;\n                    var broadcastGamma = _this.scale ? _this.gamma.read().reshape(broadcastShape) : null;\n                    return batchNormalization(input, broadcastMovingMean, broadcastMovingVariance, broadcastBeta, broadcastGamma, _this.epsilon);\n                }\n                else {\n                    return batchNormalization(input, _this.movingMean.read(), _this.movingVariance.read(), _this.beta == null ? null : _this.beta.read(), _this.gamma == null ? null : _this.gamma.read(), _this.epsilon);\n                }\n            };\n            if (!training) {\n                return normalizeInference();\n            }\n            var _a = normalizeBatchInTraining(input, _this.gamma.read(), _this.beta.read(), reductionAxes, _this.epsilon), normedTraining = _a[0], mean = _a[1], variance = _a[2];\n            var sampleSize = math_utils.arrayProd(reductionAxes.map(function (axis) { return input.shape[axis]; }));\n            var varianceDebiased = variance.mul(state_1.getScalar(sampleSize / (sampleSize - (1 + _this.epsilon))));\n            var updateMovingMeanAndVariance = function () {\n                _this.stepCount++;\n                var newMovingMean = tfc.movingAverage(_this.movingMean.read(), mean, _this.momentum, _this.stepCount);\n                _this.movingMean.write(newMovingMean);\n                var newMovingVariance = tfc.movingAverage(_this.movingVariance.read(), varianceDebiased, _this.momentum, _this.stepCount);\n                _this.movingVariance.write(newMovingVariance);\n            };\n            updateMovingMeanAndVariance();\n            return normedTraining;\n        });\n    };\n    BatchNormalization.prototype.getConfig = function () {\n        var config = {\n            axis: this.axis,\n            momentum: this.momentum,\n            epsilon: this.epsilon,\n            center: this.center,\n            scale: this.scale,\n            betaInitializer: initializers_1.serializeInitializer(this.betaInitializer),\n            gammaInitializer: initializers_1.serializeInitializer(this.gammaInitializer),\n            movingMeanInitializer: initializers_1.serializeInitializer(this.movingMeanInitializer),\n            movingVarianceInitializer: initializers_1.serializeInitializer(this.movingVarianceInitializer),\n            betaRegularizer: regularizers_1.serializeRegularizer(this.betaRegularizer),\n            gammaRegularizer: regularizers_1.serializeRegularizer(this.gammaRegularizer),\n            betaConstraint: constraints_1.serializeConstraint(this.betaConstraint),\n            gammaConstraint: constraints_1.serializeConstraint(this.gammaConstraint)\n        };\n        var baseConfig = _super.prototype.getConfig.call(this);\n        Object.assign(config, baseConfig);\n        return config;\n    };\n    BatchNormalization.className = 'BatchNormalization';\n    return BatchNormalization;\n}(topology_1.Layer));\nexports.BatchNormalization = BatchNormalization;\ntfjs_core_1.serialization.SerializationMap.register(BatchNormalization);\n\n},{\"../backend/state\":185,\"../constraints\":190,\"../engine/topology\":194,\"../errors\":196,\"../initializers\":204,\"../regularizers\":222,\"../utils/generic_utils\":224,\"../utils/math_utils\":226,\"../utils/types_utils\":228,\"@tensorflow/tfjs-core\":59}],212:[function(require,module,exports){\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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfc = require(\"@tensorflow/tfjs-core\");\nvar tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar common_1 = require(\"../backend/common\");\nvar topology_1 = require(\"../engine/topology\");\nvar errors_1 = require(\"../errors\");\nvar types_utils_1 = require(\"../utils/types_utils\");\nfunction temporalPadding(x, padding) {\n    return tfjs_core_1.tidy(function () {\n        if (x.rank !== 3) {\n            throw new errors_1.ValueError(\"temporalPadding expects input tensor to be 3-D, but received a \" +\n                (x.rank + \"-D tensor.\"));\n        }\n        if (padding == null) {\n            padding = [1, 1];\n        }\n        if (padding.length !== 2) {\n            throw new errors_1.ValueError(\"temporalPadding expects input padding pattern to be a length-2 \" +\n                (\"array, but received a length-\" + padding.length + \" array.\"));\n        }\n        var pattern = [[0, 0], padding, [0, 0]];\n        return tfc.pad(x, pattern);\n    });\n}\nexports.temporalPadding = temporalPadding;\nfunction spatial2dPadding(x, padding, dataFormat) {\n    return tfjs_core_1.tidy(function () {\n        if (x.rank !== 4) {\n            throw new errors_1.ValueError(\"temporalPadding expects input tensor to be 4-D, but received a \" +\n                (x.rank + \"-D tensor.\"));\n        }\n        if (padding == null) {\n            padding = [[1, 1], [1, 1]];\n        }\n        if (padding.length !== 2 || padding[0].length !== 2 ||\n            padding[1].length !== 2) {\n            throw new errors_1.ValueError('spatial2dPadding expects `padding` to be an Array of two Arrays, ' +\n                'each of which is an Array of two integers.');\n        }\n        if (dataFormat == null) {\n            dataFormat = common_1.imageDataFormat();\n        }\n        if (dataFormat !== 'channelsLast' && dataFormat !== 'channelsFirst') {\n            throw new errors_1.ValueError(\"Unknown data format: \" + dataFormat + \". \" +\n                \"Supported data formats are 'channelsLast' and 'channelsFirst.\");\n        }\n        var pattern;\n        if (dataFormat === 'channelsFirst') {\n            pattern = [[0, 0], [0, 0], padding[0], padding[1]];\n        }\n        else {\n            pattern = [[0, 0], padding[0], padding[1], [0, 0]];\n        }\n        return tfc.pad(x, pattern);\n    });\n}\nexports.spatial2dPadding = spatial2dPadding;\nvar ZeroPadding2D = (function (_super) {\n    __extends(ZeroPadding2D, _super);\n    function ZeroPadding2D(config) {\n        var _this = this;\n        if (config == null) {\n            config = {};\n        }\n        _this = _super.call(this, config) || this;\n        _this.dataFormat =\n            config.dataFormat == null ? common_1.imageDataFormat() : config.dataFormat;\n        if (config.padding == null) {\n            _this.padding = [[1, 1], [1, 1]];\n        }\n        else if (typeof config.padding === 'number') {\n            _this.padding =\n                [[config.padding, config.padding], [config.padding, config.padding]];\n        }\n        else {\n            config.padding = config.padding;\n            if (config.padding.length !== 2) {\n                throw new errors_1.ValueError(\"ZeroPadding2D expects padding to be a length-2 array, but \" +\n                    (\"received a length-\" + config.padding.length + \" array.\"));\n            }\n            var heightPadding = void 0;\n            var widthPadding = void 0;\n            if (typeof config.padding[0] === 'number') {\n                heightPadding =\n                    [config.padding[0], config.padding[0]];\n                widthPadding =\n                    [config.padding[1], config.padding[1]];\n            }\n            else {\n                config.padding = config.padding;\n                if (config.padding[0].length !== 2) {\n                    throw new errors_1.ValueError(\"ZeroPadding2D expects height padding to be a length-2 array, \" +\n                        (\"but received a length-\" + config.padding[0].length + \" array.\"));\n                }\n                heightPadding = config.padding[0];\n                if (config.padding[1].length !== 2) {\n                    throw new errors_1.ValueError(\"ZeroPadding2D expects width padding to be a length-2 array, \" +\n                        (\"but received a length-\" + config.padding[1].length + \" array.\"));\n                }\n                widthPadding = config.padding[1];\n            }\n            _this.padding = [heightPadding, widthPadding];\n        }\n        _this.inputSpec = [new topology_1.InputSpec({ ndim: 4 })];\n        return _this;\n    }\n    ZeroPadding2D.prototype.computeOutputShape = function (inputShape) {\n        inputShape = types_utils_1.getExactlyOneShape(inputShape);\n        var rows;\n        var cols;\n        if (this.dataFormat === 'channelsFirst') {\n            if (inputShape[2] != null && inputShape[2] >= 0) {\n                rows = inputShape[2] + this.padding[0][0] + this.padding[0][1];\n            }\n            else {\n                rows = null;\n            }\n            if (inputShape[3] != null && inputShape[3] >= 0) {\n                cols = inputShape[3] + this.padding[1][0] + this.padding[1][1];\n            }\n            else {\n                cols = null;\n            }\n            return [inputShape[0], inputShape[1], rows, cols];\n        }\n        else {\n            if (inputShape[1] != null && inputShape[1] >= 0) {\n                rows = inputShape[1] + this.padding[0][0] + this.padding[0][1];\n            }\n            else {\n                rows = null;\n            }\n            if (inputShape[2] != null && inputShape[2] >= 0) {\n                cols = inputShape[2] + this.padding[1][0] + this.padding[1][1];\n            }\n            else {\n                cols = null;\n            }\n            return [inputShape[0], rows, cols, inputShape[3]];\n        }\n    };\n    ZeroPadding2D.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () { return spatial2dPadding(types_utils_1.getExactlyOneTensor(inputs), _this.padding, _this.dataFormat); });\n    };\n    ZeroPadding2D.prototype.getConfig = function () {\n        var config = {\n            padding: this.padding,\n            dataFormat: this.dataFormat,\n        };\n        var baseConfig = _super.prototype.getConfig.call(this);\n        Object.assign(config, baseConfig);\n        return config;\n    };\n    ZeroPadding2D.className = 'ZeroPadding2D';\n    return ZeroPadding2D;\n}(topology_1.Layer));\nexports.ZeroPadding2D = ZeroPadding2D;\ntfjs_core_1.serialization.SerializationMap.register(ZeroPadding2D);\n\n},{\"../backend/common\":184,\"../engine/topology\":194,\"../errors\":196,\"../utils/types_utils\":228,\"@tensorflow/tfjs-core\":59}],213:[function(require,module,exports){\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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfc = require(\"@tensorflow/tfjs-core\");\nvar tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar common_1 = require(\"../backend/common\");\nvar K = require(\"../backend/tfjs_backend\");\nvar common_2 = require(\"../common\");\nvar topology_1 = require(\"../engine/topology\");\nvar topology_2 = require(\"../engine/topology\");\nvar errors_1 = require(\"../errors\");\nvar conv_utils_1 = require(\"../utils/conv_utils\");\nvar types_utils_1 = require(\"../utils/types_utils\");\nvar convolutional_1 = require(\"./convolutional\");\nfunction pool2d(x, poolSize, strides, padding, dataFormat, poolMode) {\n    return tfjs_core_1.tidy(function () {\n        common_2.checkDataFormat(dataFormat);\n        common_2.checkPoolMode(poolMode);\n        common_2.checkPaddingMode(padding);\n        if (strides == null) {\n            strides = [1, 1];\n        }\n        if (padding == null) {\n            padding = 'valid';\n        }\n        if (dataFormat == null) {\n            dataFormat = common_1.imageDataFormat();\n        }\n        if (poolMode == null) {\n            poolMode = 'max';\n        }\n        x = convolutional_1.preprocessConv2DInput(x, dataFormat);\n        var y;\n        var paddingString = (padding === 'same') ? 'same' : 'valid';\n        if (poolMode === 'max') {\n            y = tfc.maxPool(x, poolSize, strides, paddingString);\n        }\n        else {\n            y = tfc.avgPool(x, poolSize, strides, paddingString);\n        }\n        if (dataFormat === 'channelsFirst') {\n            y = tfc.transpose(y, [0, 3, 1, 2]);\n        }\n        return y;\n    });\n}\nexports.pool2d = pool2d;\nvar Pooling1D = (function (_super) {\n    __extends(Pooling1D, _super);\n    function Pooling1D(config) {\n        var _this = this;\n        if (config.poolSize == null) {\n            config.poolSize = 2;\n        }\n        _this = _super.call(this, config) || this;\n        if (typeof config.poolSize === 'number') {\n            _this.poolSize = [config.poolSize];\n        }\n        else if (Array.isArray(config.poolSize) &&\n            config.poolSize.length === 1 &&\n            typeof config.poolSize[0] === 'number') {\n            _this.poolSize = config.poolSize;\n        }\n        else {\n            throw new errors_1.ValueError(\"poolSize for 1D convolutional layer must be a number or an \" +\n                \"Array of a single number, but received \" +\n                (\"\" + JSON.stringify(config.poolSize)));\n        }\n        if (config.strides == null) {\n            _this.strides = _this.poolSize;\n        }\n        else {\n            if (typeof config.strides === 'number') {\n                _this.strides = [config.strides];\n            }\n            else if (Array.isArray(config.strides) &&\n                config.strides.length === 1 &&\n                typeof config.strides[0] === 'number') {\n                _this.strides = config.strides;\n            }\n            else {\n                throw new errors_1.ValueError(\"strides for 1D convolutional layer must be a number or an \" +\n                    \"Array of a single number, but received \" +\n                    (\"\" + JSON.stringify(config.strides)));\n            }\n        }\n        _this.padding = config.padding == null ? 'valid' : config.padding;\n        common_2.checkPaddingMode(_this.padding);\n        _this.inputSpec = [new topology_1.InputSpec({ ndim: 3 })];\n        return _this;\n    }\n    Pooling1D.prototype.computeOutputShape = function (inputShape) {\n        inputShape = types_utils_1.getExactlyOneShape(inputShape);\n        var length = conv_utils_1.convOutputLength(inputShape[1], this.poolSize[0], this.padding, this.strides[0]);\n        return [inputShape[0], length, inputShape[2]];\n    };\n    Pooling1D.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            _this.invokeCallHook(inputs, kwargs);\n            inputs = K.expandDims(types_utils_1.getExactlyOneTensor(inputs), 2);\n            var output = _this.poolingFunction(types_utils_1.getExactlyOneTensor(inputs), [_this.poolSize[0], 1], [_this.strides[0], 1], _this.padding, 'channelsLast');\n            return tfc.squeeze(output, [2]);\n        });\n    };\n    Pooling1D.prototype.getConfig = function () {\n        var config = {\n            poolSize: this.poolSize,\n            padding: this.padding,\n            strides: this.strides,\n        };\n        var baseConfig = _super.prototype.getConfig.call(this);\n        Object.assign(config, baseConfig);\n        return config;\n    };\n    return Pooling1D;\n}(topology_2.Layer));\nexports.Pooling1D = Pooling1D;\nvar MaxPooling1D = (function (_super) {\n    __extends(MaxPooling1D, _super);\n    function MaxPooling1D(config) {\n        return _super.call(this, config) || this;\n    }\n    MaxPooling1D.prototype.poolingFunction = function (inputs, poolSize, strides, padding, dataFormat) {\n        common_2.checkDataFormat(dataFormat);\n        common_2.checkPaddingMode(padding);\n        return pool2d(inputs, poolSize, strides, padding, dataFormat, 'max');\n    };\n    MaxPooling1D.className = 'MaxPooling1D';\n    return MaxPooling1D;\n}(Pooling1D));\nexports.MaxPooling1D = MaxPooling1D;\ntfjs_core_1.serialization.SerializationMap.register(MaxPooling1D);\nvar AveragePooling1D = (function (_super) {\n    __extends(AveragePooling1D, _super);\n    function AveragePooling1D(config) {\n        return _super.call(this, config) || this;\n    }\n    AveragePooling1D.prototype.poolingFunction = function (inputs, poolSize, strides, padding, dataFormat) {\n        common_2.checkDataFormat(dataFormat);\n        common_2.checkPaddingMode(padding);\n        return pool2d(inputs, poolSize, strides, padding, dataFormat, 'avg');\n    };\n    AveragePooling1D.className = 'AveragePooling1D';\n    return AveragePooling1D;\n}(Pooling1D));\nexports.AveragePooling1D = AveragePooling1D;\ntfjs_core_1.serialization.SerializationMap.register(AveragePooling1D);\nvar Pooling2D = (function (_super) {\n    __extends(Pooling2D, _super);\n    function Pooling2D(config) {\n        var _this = this;\n        if (config.poolSize == null) {\n            config.poolSize = [2, 2];\n        }\n        _this = _super.call(this, config) || this;\n        _this.poolSize = Array.isArray(config.poolSize) ?\n            config.poolSize :\n            [config.poolSize, config.poolSize];\n        if (config.strides == null) {\n            _this.strides = _this.poolSize;\n        }\n        else if (Array.isArray(config.strides)) {\n            if (config.strides.length !== 2) {\n                throw new errors_1.ValueError(\"If the strides property of a 2D pooling layer is an Array, \" +\n                    \"it is expected to have a length of 2, but received length \" +\n                    (config.strides.length + \".\"));\n            }\n            _this.strides = config.strides;\n        }\n        else {\n            _this.strides = [config.strides, config.strides];\n        }\n        _this.padding = config.padding == null ? 'valid' : config.padding;\n        _this.dataFormat =\n            config.dataFormat == null ? 'channelsLast' : config.dataFormat;\n        common_2.checkDataFormat(_this.dataFormat);\n        common_2.checkPaddingMode(_this.padding);\n        _this.inputSpec = [new topology_1.InputSpec({ ndim: 4 })];\n        return _this;\n    }\n    Pooling2D.prototype.computeOutputShape = function (inputShape) {\n        inputShape = types_utils_1.getExactlyOneShape(inputShape);\n        var rows = this.dataFormat === 'channelsFirst' ? inputShape[2] : inputShape[1];\n        var cols = this.dataFormat === 'channelsFirst' ? inputShape[3] : inputShape[2];\n        rows =\n            conv_utils_1.convOutputLength(rows, this.poolSize[0], this.padding, this.strides[0]);\n        cols =\n            conv_utils_1.convOutputLength(cols, this.poolSize[1], this.padding, this.strides[1]);\n        if (this.dataFormat === 'channelsFirst') {\n            return [inputShape[0], inputShape[1], rows, cols];\n        }\n        else {\n            return [inputShape[0], rows, cols, inputShape[3]];\n        }\n    };\n    Pooling2D.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            _this.invokeCallHook(inputs, kwargs);\n            return _this.poolingFunction(types_utils_1.getExactlyOneTensor(inputs), _this.poolSize, _this.strides, _this.padding, _this.dataFormat);\n        });\n    };\n    Pooling2D.prototype.getConfig = function () {\n        var config = {\n            poolSize: this.poolSize,\n            padding: this.padding,\n            strides: this.strides,\n            dataFormat: this.dataFormat\n        };\n        var baseConfig = _super.prototype.getConfig.call(this);\n        Object.assign(config, baseConfig);\n        return config;\n    };\n    return Pooling2D;\n}(topology_2.Layer));\nexports.Pooling2D = Pooling2D;\nvar MaxPooling2D = (function (_super) {\n    __extends(MaxPooling2D, _super);\n    function MaxPooling2D(config) {\n        return _super.call(this, config) || this;\n    }\n    MaxPooling2D.prototype.poolingFunction = function (inputs, poolSize, strides, padding, dataFormat) {\n        common_2.checkDataFormat(dataFormat);\n        common_2.checkPaddingMode(padding);\n        return pool2d(inputs, poolSize, strides, padding, dataFormat, 'max');\n    };\n    MaxPooling2D.className = 'MaxPooling2D';\n    return MaxPooling2D;\n}(Pooling2D));\nexports.MaxPooling2D = MaxPooling2D;\ntfjs_core_1.serialization.SerializationMap.register(MaxPooling2D);\nvar AveragePooling2D = (function (_super) {\n    __extends(AveragePooling2D, _super);\n    function AveragePooling2D(config) {\n        return _super.call(this, config) || this;\n    }\n    AveragePooling2D.prototype.poolingFunction = function (inputs, poolSize, strides, padding, dataFormat) {\n        common_2.checkDataFormat(dataFormat);\n        common_2.checkPaddingMode(padding);\n        return pool2d(inputs, poolSize, strides, padding, dataFormat, 'avg');\n    };\n    AveragePooling2D.className = 'AveragePooling2D';\n    return AveragePooling2D;\n}(Pooling2D));\nexports.AveragePooling2D = AveragePooling2D;\ntfjs_core_1.serialization.SerializationMap.register(AveragePooling2D);\nvar GlobalPooling1D = (function (_super) {\n    __extends(GlobalPooling1D, _super);\n    function GlobalPooling1D(config) {\n        var _this = _super.call(this, config) || this;\n        _this.inputSpec = [new topology_1.InputSpec({ ndim: 3 })];\n        return _this;\n    }\n    GlobalPooling1D.prototype.computeOutputShape = function (inputShape) {\n        return [inputShape[0], inputShape[2]];\n    };\n    GlobalPooling1D.prototype.call = function (inputs, kwargs) {\n        throw new errors_1.NotImplementedError();\n    };\n    return GlobalPooling1D;\n}(topology_2.Layer));\nexports.GlobalPooling1D = GlobalPooling1D;\nvar GlobalAveragePooling1D = (function (_super) {\n    __extends(GlobalAveragePooling1D, _super);\n    function GlobalAveragePooling1D(config) {\n        return _super.call(this, config) || this;\n    }\n    GlobalAveragePooling1D.prototype.call = function (inputs, kwargs) {\n        return tfjs_core_1.tidy(function () {\n            var input = types_utils_1.getExactlyOneTensor(inputs);\n            return tfc.mean(input, 1);\n        });\n    };\n    GlobalAveragePooling1D.className = 'GlobalAveragePooling1D';\n    return GlobalAveragePooling1D;\n}(GlobalPooling1D));\nexports.GlobalAveragePooling1D = GlobalAveragePooling1D;\ntfjs_core_1.serialization.SerializationMap.register(GlobalAveragePooling1D);\nvar GlobalMaxPooling1D = (function (_super) {\n    __extends(GlobalMaxPooling1D, _super);\n    function GlobalMaxPooling1D(config) {\n        return _super.call(this, config) || this;\n    }\n    GlobalMaxPooling1D.prototype.call = function (inputs, kwargs) {\n        return tfjs_core_1.tidy(function () {\n            var input = types_utils_1.getExactlyOneTensor(inputs);\n            return tfc.max(input, 1);\n        });\n    };\n    GlobalMaxPooling1D.className = 'GlobalMaxPooling1D';\n    return GlobalMaxPooling1D;\n}(GlobalPooling1D));\nexports.GlobalMaxPooling1D = GlobalMaxPooling1D;\ntfjs_core_1.serialization.SerializationMap.register(GlobalMaxPooling1D);\nvar GlobalPooling2D = (function (_super) {\n    __extends(GlobalPooling2D, _super);\n    function GlobalPooling2D(config) {\n        var _this = _super.call(this, config) || this;\n        _this.dataFormat =\n            config.dataFormat == null ? 'channelsLast' : config.dataFormat;\n        common_2.checkDataFormat(_this.dataFormat);\n        _this.inputSpec = [new topology_1.InputSpec({ ndim: 4 })];\n        return _this;\n    }\n    GlobalPooling2D.prototype.computeOutputShape = function (inputShape) {\n        inputShape = inputShape;\n        if (this.dataFormat === 'channelsLast') {\n            return [inputShape[0], inputShape[3]];\n        }\n        else {\n            return [inputShape[0], inputShape[1]];\n        }\n    };\n    GlobalPooling2D.prototype.call = function (inputs, kwargs) {\n        throw new errors_1.NotImplementedError();\n    };\n    GlobalPooling2D.prototype.getConfig = function () {\n        var config = { dataFormat: this.dataFormat };\n        var baseConfig = _super.prototype.getConfig.call(this);\n        Object.assign(config, baseConfig);\n        return config;\n    };\n    return GlobalPooling2D;\n}(topology_2.Layer));\nexports.GlobalPooling2D = GlobalPooling2D;\nvar GlobalAveragePooling2D = (function (_super) {\n    __extends(GlobalAveragePooling2D, _super);\n    function GlobalAveragePooling2D() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    GlobalAveragePooling2D.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            var input = types_utils_1.getExactlyOneTensor(inputs);\n            if (_this.dataFormat === 'channelsLast') {\n                return tfc.mean(input, [1, 2]);\n            }\n            else {\n                return tfc.mean(input, [2, 3]);\n            }\n        });\n    };\n    GlobalAveragePooling2D.className = 'GlobalAveragePooling2D';\n    return GlobalAveragePooling2D;\n}(GlobalPooling2D));\nexports.GlobalAveragePooling2D = GlobalAveragePooling2D;\ntfjs_core_1.serialization.SerializationMap.register(GlobalAveragePooling2D);\nvar GlobalMaxPooling2D = (function (_super) {\n    __extends(GlobalMaxPooling2D, _super);\n    function GlobalMaxPooling2D() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    GlobalMaxPooling2D.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            var input = types_utils_1.getExactlyOneTensor(inputs);\n            if (_this.dataFormat === 'channelsLast') {\n                return tfc.max(input, [1, 2]);\n            }\n            else {\n                return tfc.max(input, [2, 3]);\n            }\n        });\n    };\n    GlobalMaxPooling2D.className = 'GlobalMaxPooling2D';\n    return GlobalMaxPooling2D;\n}(GlobalPooling2D));\nexports.GlobalMaxPooling2D = GlobalMaxPooling2D;\ntfjs_core_1.serialization.SerializationMap.register(GlobalMaxPooling2D);\n\n},{\"../backend/common\":184,\"../backend/tfjs_backend\":186,\"../common\":189,\"../engine/topology\":194,\"../errors\":196,\"../utils/conv_utils\":223,\"../utils/types_utils\":228,\"./convolutional\":206,\"@tensorflow/tfjs-core\":59}],214:[function(require,module,exports){\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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfc = require(\"@tensorflow/tfjs-core\");\nvar tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar activations_1 = require(\"../activations\");\nvar state_1 = require(\"../backend/state\");\nvar K = require(\"../backend/tfjs_backend\");\nvar constraints_1 = require(\"../constraints\");\nvar topology_1 = require(\"../engine/topology\");\nvar topology_2 = require(\"../engine/topology\");\nvar errors_1 = require(\"../errors\");\nvar initializers_1 = require(\"../initializers\");\nvar regularizers_1 = require(\"../regularizers\");\nvar math_utils = require(\"../utils/math_utils\");\nvar types_utils_1 = require(\"../utils/types_utils\");\nvar variables_1 = require(\"../variables\");\nvar serialization_1 = require(\"./serialization\");\nfunction standardizeArgs(inputs, initialState, constants, numConstants) {\n    if (Array.isArray(inputs)) {\n        if (initialState != null || constants != null) {\n            throw new errors_1.ValueError('When inputs is an array, neither initialState or constants ' +\n                'should be provided');\n        }\n        if (numConstants != null) {\n            constants = inputs.slice(inputs.length - numConstants, inputs.length);\n            inputs = inputs.slice(0, inputs.length - numConstants);\n        }\n        if (inputs.length > 1) {\n            initialState = inputs.slice(1, inputs.length);\n        }\n        inputs = inputs[0];\n    }\n    function toListOrNull(x) {\n        if (x == null || Array.isArray(x)) {\n            return x;\n        }\n        else {\n            return [x];\n        }\n    }\n    initialState = toListOrNull(initialState);\n    constants = toListOrNull(constants);\n    return { inputs: inputs, initialState: initialState, constants: constants };\n}\nexports.standardizeArgs = standardizeArgs;\nfunction rnn(stepFunction, inputs, initialStates, goBackwards, mask, constants, unroll, inputLength) {\n    if (goBackwards === void 0) { goBackwards = false; }\n    if (unroll === void 0) { unroll = false; }\n    var ndim = inputs.shape.length;\n    if (ndim < 3) {\n        throw new errors_1.ValueError(\"Input should be at least 3D, but is \" + ndim + \"D.\");\n    }\n    var axes = [1, 0].concat(math_utils.range(2, ndim));\n    inputs = tfc.transpose(inputs, axes);\n    if (mask != null) {\n        throw new errors_1.NotImplementedError('The rnn() function of the deeplearn.js backend does not support ' +\n            'masking yet.');\n    }\n    if (constants != null) {\n        throw new errors_1.NotImplementedError('The rnn() functoin of the deeplearn.js backend does not support ' +\n            'constants yet.');\n    }\n    if (unroll) {\n        console.warn('Backend rnn(): the unroll = true option is not applicable to the ' +\n            'imperative deeplearn.js backend.');\n    }\n    if (goBackwards) {\n        inputs = tfc.reverse(inputs, 0);\n    }\n    var outputs;\n    var lastOutput;\n    var states = initialStates;\n    var timeSteps = inputs.shape[0];\n    for (var t = 0; t < timeSteps; ++t) {\n        var currentInput = K.sliceAlongFirstAxis(inputs, t, 1);\n        currentInput = currentInput.reshape(currentInput.shape.slice(1));\n        var stepOutputs = stepFunction(currentInput, states);\n        lastOutput = stepOutputs[0];\n        if (t === 0) {\n            outputs = lastOutput.reshape([1].concat(lastOutput.shape));\n        }\n        else {\n            outputs = K.concatAlongFirstAxis(outputs, lastOutput.reshape([1].concat(lastOutput.shape)));\n        }\n        states = stepOutputs[1];\n    }\n    return [\n        lastOutput,\n        tfc.transpose(outputs, [1, 0].concat(math_utils.range(2, outputs.shape.length))),\n        states\n    ];\n}\nexports.rnn = rnn;\nvar RNN = (function (_super) {\n    __extends(RNN, _super);\n    function RNN(config) {\n        var _this = _super.call(this, config) || this;\n        var cell;\n        if (config.cell == null) {\n            throw new errors_1.ValueError('cell property is missing for the constructor of RNN.');\n        }\n        else if (Array.isArray(config.cell)) {\n            cell = new StackedRNNCells({ cells: config.cell });\n        }\n        else {\n            cell = config.cell;\n        }\n        if (cell.stateSize == null) {\n            throw new errors_1.ValueError('The RNN cell should have an attribute `stateSize` (tuple of ' +\n                'integers, one integer per RNN state).');\n        }\n        _this.cell = cell;\n        _this.returnSequences =\n            config.returnSequences == null ? false : config.returnSequences;\n        _this.returnState = config.returnState == null ? false : config.returnState;\n        _this.goBackwards = config.goBackwards == null ? false : config.goBackwards;\n        _this._stateful = config.stateful == null ? false : config.stateful;\n        _this.unroll = config.unroll == null ? false : config.unroll;\n        _this.supportsMasking = true;\n        _this.inputSpec = [new topology_1.InputSpec({ ndim: 3 })];\n        _this.stateSpec = null;\n        _this.states = null;\n        _this.numConstants = null;\n        return _this;\n    }\n    RNN.prototype.getStates = function () {\n        if (this.states == null) {\n            var numStates = Array.isArray(this.cell.stateSize) ? this.cell.stateSize.length : 1;\n            return math_utils.range(0, numStates).map(function (x) { return null; });\n        }\n        else {\n            return this.states;\n        }\n    };\n    RNN.prototype.setStates = function (states) {\n        this.states = states;\n    };\n    RNN.prototype.computeOutputShape = function (inputShape) {\n        if (types_utils_1.isArrayOfShapes(inputShape)) {\n            inputShape = inputShape[0];\n        }\n        inputShape = inputShape;\n        var stateSize = this.cell.stateSize;\n        if (!Array.isArray(stateSize)) {\n            stateSize = [stateSize];\n        }\n        var outputDim = stateSize[0];\n        var outputShape;\n        if (this.returnSequences) {\n            outputShape = [inputShape[0], inputShape[1], outputDim];\n        }\n        else {\n            outputShape = [inputShape[0], outputDim];\n        }\n        if (this.returnState) {\n            var stateShape = [];\n            for (var _i = 0, stateSize_1 = stateSize; _i < stateSize_1.length; _i++) {\n                var dim = stateSize_1[_i];\n                stateShape.push([inputShape[0], dim]);\n            }\n            return [outputShape].concat(stateShape);\n        }\n        else {\n            return outputShape;\n        }\n    };\n    RNN.prototype.computeMask = function (inputs, mask) {\n        throw new errors_1.NotImplementedError('computeMask has not been implemented for RNN yet');\n    };\n    RNN.prototype.build = function (inputShape) {\n        var constantShape = null;\n        if (this.numConstants != null) {\n            throw new errors_1.NotImplementedError('Constants support is not implemented in RNN yet.');\n        }\n        if (types_utils_1.isArrayOfShapes(inputShape)) {\n            inputShape = inputShape[0];\n        }\n        inputShape = inputShape;\n        var batchSize = this.stateful ? inputShape[0] : null;\n        var inputDim = inputShape[inputShape.length - 1];\n        this.inputSpec[0] = new topology_1.InputSpec({ shape: [batchSize, null, inputDim] });\n        var stepInputShape = [inputShape[0]].concat(inputShape.slice(2));\n        if (constantShape != null) {\n            throw new errors_1.NotImplementedError('Constants support is not implemented in RNN yet.');\n        }\n        else {\n            this.cell.build(stepInputShape);\n        }\n        var stateSize;\n        if (Array.isArray(this.cell.stateSize)) {\n            stateSize = this.cell.stateSize;\n        }\n        else {\n            stateSize = [this.cell.stateSize];\n        }\n        if (this.stateSpec != null) {\n            if (!tfjs_core_1.util.arraysEqual(this.stateSpec.map(function (spec) { return spec.shape[spec.shape.length - 1]; }), stateSize)) {\n                throw new errors_1.ValueError(\"An initialState was passed that is not compatible with \" +\n                    (\"cell.stateSize. Received stateSpec=\" + this.stateSpec + \"; \") +\n                    (\"However cell.stateSize is \" + this.cell.stateSize));\n            }\n        }\n        else {\n            this.stateSpec =\n                stateSize.map(function (dim) { return new topology_1.InputSpec({ shape: [null, dim] }); });\n        }\n        if (this.stateful) {\n            throw new errors_1.NotImplementedError('stateful RNN layer is not implemented yet');\n        }\n    };\n    RNN.prototype.resetStates = function (states) {\n        var _this = this;\n        tfjs_core_1.tidy(function () {\n            if (!_this.stateful) {\n                throw new errors_1.AttributeError('Cannot call resetState() on an RNN Layer that is not stateful.');\n            }\n            var batchSize = _this.inputSpec[0].shape[0];\n            if (batchSize == null) {\n                throw new errors_1.ValueError('If an RNN is stateful, it needs to know its batch size. Specify ' +\n                    'the batch size of your input tensors: \\n' +\n                    '- If using a Sequential model, specify the batch size by ' +\n                    'passing a `batchInputShape` option to your first layer.\\n' +\n                    '- If using the functional API, specify the batch size by ' +\n                    'passing a `batchShape` option to your Input layer.');\n            }\n            if (_this.states == null) {\n                if (Array.isArray(_this.cell.stateSize)) {\n                    _this.states =\n                        _this.cell.stateSize.map(function (dim) { return tfc.zeros([batchSize, dim]); });\n                }\n                else {\n                    _this.states = [tfc.zeros([batchSize, _this.cell.stateSize])];\n                }\n            }\n            else if (states == null) {\n                if (Array.isArray(_this.cell.stateSize)) {\n                    _this.states =\n                        _this.cell.stateSize.map(function (dim) { return tfc.zeros([batchSize, dim]); });\n                }\n                else {\n                    _this.states[0] = tfc.zeros([batchSize, _this.cell.stateSize]);\n                }\n            }\n            else {\n                if (!Array.isArray(states)) {\n                    states = [states];\n                }\n                if (states.length !== _this.states.length) {\n                    throw new errors_1.ValueError(\"Layer \" + _this.name + \" expects \" + _this.states.length + \" state(s), \" +\n                        (\"but it received \" + states.length + \" state value(s). Input \") +\n                        (\"received: \" + states));\n                }\n                for (var index = 0; index < _this.states.length; ++index) {\n                    var value = states[index];\n                    var dim = Array.isArray(_this.cell.stateSize) ?\n                        _this.cell.stateSize[index] :\n                        _this.cell.stateSize;\n                    var expectedShape = [batchSize, dim];\n                    if (!tfjs_core_1.util.arraysEqual(value.shape, expectedShape)) {\n                        throw new errors_1.ValueError(\"State \" + index + \" is incompatible with layer \" + _this.name + \": \" +\n                            (\"expected shape=\" + expectedShape + \", received shape=\" + value.shape));\n                    }\n                    _this.states[index] = value;\n                }\n            }\n        });\n    };\n    RNN.prototype.apply = function (inputs, kwargs) {\n        var initialState = kwargs == null ? null : kwargs['initialState'];\n        var constants = kwargs == null ? null : kwargs['constants'];\n        if (kwargs == null) {\n            kwargs = {};\n        }\n        var standardized = standardizeArgs(inputs, initialState, constants, this.numConstants);\n        inputs = standardized.inputs;\n        initialState = standardized.initialState;\n        constants = standardized.constants;\n        var additionalInputs = [];\n        var additionalSpecs = [];\n        if (initialState != null) {\n            kwargs['initialState'] = initialState;\n            additionalInputs = additionalInputs.concat(initialState);\n            this.stateSpec = [];\n            for (var _i = 0, initialState_1 = initialState; _i < initialState_1.length; _i++) {\n                var state = initialState_1[_i];\n                this.stateSpec.push(new topology_1.InputSpec({ shape: state.shape }));\n            }\n            additionalSpecs = additionalSpecs.concat(this.stateSpec);\n        }\n        if (constants != null) {\n            kwargs['constants'] = constants;\n            additionalInputs = additionalInputs.concat(constants);\n            this.numConstants = constants.length;\n        }\n        var isTensor = additionalInputs[0] instanceof topology_1.SymbolicTensor;\n        if (isTensor) {\n            var fullInput = [inputs].concat(additionalInputs);\n            var fullInputSpec = this.inputSpec.concat(additionalSpecs);\n            var originalInputSpec = this.inputSpec;\n            this.inputSpec = fullInputSpec;\n            var output = _super.prototype.apply.call(this, fullInput, kwargs);\n            this.inputSpec = originalInputSpec;\n            return output;\n        }\n        else {\n            return _super.prototype.apply.call(this, inputs, kwargs);\n        }\n    };\n    RNN.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            var mask = kwargs == null ? null : kwargs['mask'];\n            var training = kwargs == null ? null : kwargs['training'];\n            var initialState = kwargs == null ? null : kwargs['initialState'];\n            inputs = types_utils_1.getExactlyOneTensor(inputs);\n            if (initialState == null) {\n                if (_this.stateful) {\n                    throw new errors_1.NotImplementedError('stateful RNN layer is not implemented yet.');\n                }\n                else {\n                    initialState = _this.getInitialState(inputs);\n                }\n            }\n            if (mask != null) {\n                throw new errors_1.NotImplementedError('Masking is not implemented for RNN yet');\n            }\n            var numStates = Array.isArray(_this.cell.stateSize) ? _this.cell.stateSize.length : 1;\n            if (initialState.length !== numStates) {\n                throw new errors_1.ValueError(\"RNN Layer has \" + numStates + \" state(s) but was passed \" +\n                    (initialState.length + \" initial state(s).\"));\n            }\n            var inputShape = inputs.shape;\n            var timesteps = inputShape[1];\n            if (_this.unroll) {\n                console.warn('Ignoring unroll = true for RNN layer, due to imperative backend.');\n            }\n            var cellCallKwargs = { training: training };\n            var step = function (inputs, states) {\n                var outputs = _this.cell.call([inputs].concat(states), cellCallKwargs);\n                return [outputs[0], outputs.slice(1)];\n            };\n            var rnnOutputs = rnn(step, inputs, initialState, _this.goBackwards, null, null, _this.unroll, timesteps);\n            var lastOutput = rnnOutputs[0];\n            var outputs = rnnOutputs[1];\n            var states = rnnOutputs[2];\n            if (_this.stateful) {\n                throw new errors_1.NotImplementedError('stateful RNN layer is not implemented yet');\n            }\n            var output = _this.returnSequences ? outputs : lastOutput;\n            if (_this.returnState) {\n                return [output].concat(states);\n            }\n            else {\n                return output;\n            }\n        });\n    };\n    RNN.prototype.getInitialState = function (inputs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            var initialState = tfc.zeros(inputs.shape);\n            initialState = tfc.sum(initialState, [1, 2]);\n            initialState = K.expandDims(initialState);\n            if (Array.isArray(_this.cell.stateSize)) {\n                return _this.cell.stateSize.map(function (dim) { return dim > 1 ? K.tile(initialState, [1, dim]) : initialState; });\n            }\n            else {\n                return _this.cell.stateSize > 1 ?\n                    [K.tile(initialState, [1, _this.cell.stateSize])] :\n                    [initialState];\n            }\n        });\n    };\n    Object.defineProperty(RNN.prototype, \"trainableWeights\", {\n        get: function () {\n            if (!this.trainable) {\n                return [];\n            }\n            return this.cell.trainableWeights;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(RNN.prototype, \"nonTrainableWeights\", {\n        get: function () {\n            if (!this.trainable) {\n                return this.cell.weights;\n            }\n            return this.cell.nonTrainableWeights;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    RNN.prototype.getConfig = function () {\n        var config = {\n            returnSequences: this.returnSequences,\n            returnState: this.returnState,\n            goBackwards: this.goBackwards,\n            stateful: this.stateful,\n            unroll: this.unroll,\n        };\n        if (this.numConstants != null) {\n            config.numConstants = this.numConstants;\n        }\n        var cellConfig = this.cell.getConfig();\n        config.cell = {\n            className: this.cell.getClassName(),\n            config: cellConfig,\n        };\n        var baseConfig = _super.prototype.getConfig.call(this);\n        Object.assign(config, baseConfig);\n        return config;\n    };\n    RNN.className = 'RNN';\n    return RNN;\n}(topology_2.Layer));\nexports.RNN = RNN;\ntfjs_core_1.serialization.SerializationMap.register(RNN);\nvar RNNCell = (function (_super) {\n    __extends(RNNCell, _super);\n    function RNNCell() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    return RNNCell;\n}(topology_2.Layer));\nexports.RNNCell = RNNCell;\nvar SimpleRNNCell = (function (_super) {\n    __extends(SimpleRNNCell, _super);\n    function SimpleRNNCell(config) {\n        var _this = _super.call(this, config) || this;\n        _this.DEFAULT_ACTIVATION = 'tanh';\n        _this.DEFAULT_KERNEL_INITIALIZER = 'glorotNormal';\n        _this.DEFAULT_RECURRENT_INITIALIZER = 'orthogonal';\n        _this.DEFAULT_BIAS_INITIALIZER = 'zeros';\n        _this.units = config.units;\n        _this.activation = activations_1.getActivation(config.activation == null ? _this.DEFAULT_ACTIVATION :\n            config.activation);\n        _this.useBias = config.useBias == null ? true : config.useBias;\n        _this.kernelInitializer = initializers_1.getInitializer(config.kernelInitializer || _this.DEFAULT_KERNEL_INITIALIZER);\n        _this.recurrentInitializer = initializers_1.getInitializer(config.recurrentInitializer || _this.DEFAULT_RECURRENT_INITIALIZER);\n        _this.biasInitializer =\n            initializers_1.getInitializer(config.biasInitializer || _this.DEFAULT_BIAS_INITIALIZER);\n        _this.kernelRegularizer = regularizers_1.getRegularizer(config.kernelRegularizer);\n        _this.recurrentRegularizer = regularizers_1.getRegularizer(config.recurrentRegularizer);\n        _this.biasRegularizer = regularizers_1.getRegularizer(config.biasRegularizer);\n        _this.kernelConstraint = constraints_1.getConstraint(config.kernelConstraint);\n        _this.recurrentConstraint = constraints_1.getConstraint(config.recurrentConstraint);\n        _this.biasConstraint = constraints_1.getConstraint(config.biasConstraint);\n        _this.dropout = math_utils.min([1, math_utils.max([0, config.dropout == null ? 0 : config.dropout])]);\n        _this.recurrentDropout = math_utils.min([\n            1,\n            math_utils.max([0, config.recurrentDropout == null ? 0 : config.recurrentDropout])\n        ]);\n        _this.stateSize = _this.units;\n        _this.dropoutMask = null;\n        _this.recurrentDropoutMask = null;\n        return _this;\n    }\n    SimpleRNNCell.prototype.build = function (inputShape) {\n        inputShape = types_utils_1.getExactlyOneShape(inputShape);\n        this.kernel = this.addWeight('kernel', [inputShape[inputShape.length - 1], this.units], null, this.kernelInitializer, this.kernelRegularizer, true, this.kernelConstraint);\n        this.recurrentKernel = this.addWeight('recurrent_kernel', [this.units, this.units], null, this.recurrentInitializer, this.recurrentRegularizer, true, this.recurrentConstraint);\n        if (this.useBias) {\n            this.bias = this.addWeight('bias', [this.units], null, this.biasInitializer, this.biasRegularizer, true, this.biasConstraint);\n        }\n        else {\n            this.bias = null;\n        }\n        this.built = true;\n    };\n    SimpleRNNCell.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            inputs = inputs;\n            if (inputs.length !== 2) {\n                throw new errors_1.ValueError(\"SimpleRNNCell expects 2 input Tensors, got \" + inputs.length + \".\");\n            }\n            var prevOutput = inputs[1];\n            inputs = inputs[0];\n            var training = kwargs['training'] == null ? false : kwargs['training'];\n            if (0 < _this.dropout && _this.dropout < 1 && _this.dropoutMask == null) {\n                _this.dropoutMask = generateDropoutMask(function () { return tfc.onesLike(inputs); }, _this.dropout, training);\n            }\n            if (0 < _this.recurrentDropout && _this.recurrentDropout < 1 &&\n                _this.recurrentDropoutMask == null) {\n                _this.recurrentDropoutMask =\n                    generateDropoutMask(function () { return tfc.onesLike(prevOutput); }, _this.recurrentDropout, training);\n            }\n            var h;\n            var dpMask = _this.dropoutMask;\n            var recDpMask = _this.recurrentDropoutMask;\n            if (dpMask != null) {\n                h = K.dot(tfc.mul(inputs, dpMask), _this.kernel.read());\n            }\n            else {\n                h = K.dot(inputs, _this.kernel.read());\n            }\n            if (_this.bias != null) {\n                h = K.biasAdd(h, _this.bias.read());\n            }\n            if (recDpMask != null) {\n                prevOutput = tfc.mul(prevOutput, recDpMask);\n            }\n            var output = tfc.add(h, K.dot(prevOutput, _this.recurrentKernel.read()));\n            if (_this.activation != null) {\n                output = _this.activation.apply(output);\n            }\n            return [output, output];\n        });\n    };\n    SimpleRNNCell.prototype.getConfig = function () {\n        var config = {\n            units: this.units,\n            activation: activations_1.serializeActivation(this.activation),\n            useBias: this.useBias,\n            kernelInitializer: initializers_1.serializeInitializer(this.kernelInitializer),\n            recurrentInitializer: initializers_1.serializeInitializer(this.recurrentInitializer),\n            biasInitializer: initializers_1.serializeInitializer(this.biasInitializer),\n            kernelRegularizer: regularizers_1.serializeRegularizer(this.kernelRegularizer),\n            recurrentRegularizer: regularizers_1.serializeRegularizer(this.recurrentRegularizer),\n            biasRegularizer: regularizers_1.serializeRegularizer(this.biasRegularizer),\n            activityRegularizer: regularizers_1.serializeRegularizer(this.activityRegularizer),\n            kernelConstraint: constraints_1.serializeConstraint(this.kernelConstraint),\n            recurrentConstraint: constraints_1.serializeConstraint(this.recurrentConstraint),\n            biasConstraint: constraints_1.serializeConstraint(this.biasConstraint),\n            dropout: this.dropout,\n            recurrentDropout: this.recurrentDropout,\n        };\n        var baseConfig = _super.prototype.getConfig.call(this);\n        Object.assign(config, baseConfig);\n        return config;\n    };\n    SimpleRNNCell.className = 'SimpleRNNCell';\n    return SimpleRNNCell;\n}(RNNCell));\nexports.SimpleRNNCell = SimpleRNNCell;\ntfjs_core_1.serialization.SerializationMap.register(SimpleRNNCell);\nvar SimpleRNN = (function (_super) {\n    __extends(SimpleRNN, _super);\n    function SimpleRNN(config) {\n        var _this = this;\n        config.cell = new SimpleRNNCell(config);\n        _this = _super.call(this, config) || this;\n        return _this;\n    }\n    SimpleRNN.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            if (_this.cell.dropoutMask != null) {\n                tfc.dispose(_this.cell.dropoutMask);\n                _this.cell.dropoutMask = null;\n            }\n            if (_this.cell.recurrentDropoutMask != null) {\n                tfc.dispose(_this.cell.recurrentDropoutMask);\n                _this.cell.recurrentDropoutMask = null;\n            }\n            var mask = kwargs == null ? null : kwargs['mask'];\n            var training = kwargs == null ? null : kwargs['training'];\n            var initialState = kwargs == null ? null : kwargs['initialState'];\n            return _super.prototype.call.call(_this, inputs, { mask: mask, training: training, initialState: initialState });\n        });\n    };\n    Object.defineProperty(SimpleRNN.prototype, \"units\", {\n        get: function () {\n            return this.cell.units;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(SimpleRNN.prototype, \"activation\", {\n        get: function () {\n            return this.cell.activation;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(SimpleRNN.prototype, \"useBias\", {\n        get: function () {\n            return this.cell.useBias;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(SimpleRNN.prototype, \"kernelInitializer\", {\n        get: function () {\n            return this.cell.kernelInitializer;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(SimpleRNN.prototype, \"recurrentInitializer\", {\n        get: function () {\n            return this.cell.recurrentInitializer;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(SimpleRNN.prototype, \"biasInitializer\", {\n        get: function () {\n            return this.cell.biasInitializer;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(SimpleRNN.prototype, \"kernelRegularizer\", {\n        get: function () {\n            return this.cell.kernelRegularizer;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(SimpleRNN.prototype, \"recurrentRegularizer\", {\n        get: function () {\n            return this.cell.recurrentRegularizer;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(SimpleRNN.prototype, \"biasRegularizer\", {\n        get: function () {\n            return this.cell.biasRegularizer;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(SimpleRNN.prototype, \"kernelConstraint\", {\n        get: function () {\n            return this.cell.kernelConstraint;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(SimpleRNN.prototype, \"recurrentConstraint\", {\n        get: function () {\n            return this.cell.recurrentConstraint;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(SimpleRNN.prototype, \"biasConstraint\", {\n        get: function () {\n            return this.cell.biasConstraint;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(SimpleRNN.prototype, \"dropout\", {\n        get: function () {\n            return this.cell.dropout;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(SimpleRNN.prototype, \"recurrentDropout\", {\n        get: function () {\n            return this.cell.recurrentDropout;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    SimpleRNN.prototype.getConfig = function () {\n        var config = {\n            units: this.units,\n            activation: activations_1.serializeActivation(this.activation),\n            useBias: this.useBias,\n            kernelInitializer: initializers_1.serializeInitializer(this.kernelInitializer),\n            recurrentInitializer: initializers_1.serializeInitializer(this.recurrentInitializer),\n            biasInitializer: initializers_1.serializeInitializer(this.biasInitializer),\n            kernelRegularizer: regularizers_1.serializeRegularizer(this.kernelRegularizer),\n            recurrentRegularizer: regularizers_1.serializeRegularizer(this.recurrentRegularizer),\n            biasRegularizer: regularizers_1.serializeRegularizer(this.biasRegularizer),\n            activityRegularizer: regularizers_1.serializeRegularizer(this.activityRegularizer),\n            kernelConstraint: constraints_1.serializeConstraint(this.kernelConstraint),\n            recurrentConstraint: constraints_1.serializeConstraint(this.recurrentConstraint),\n            biasConstraint: constraints_1.serializeConstraint(this.biasConstraint),\n            dropout: this.dropout,\n            recurrentDropout: this.recurrentDropout,\n        };\n        var baseConfig = _super.prototype.getConfig.call(this);\n        delete baseConfig['cell'];\n        Object.assign(config, baseConfig);\n        return config;\n    };\n    SimpleRNN.className = 'SimpleRNN';\n    return SimpleRNN;\n}(RNN));\nexports.SimpleRNN = SimpleRNN;\ntfjs_core_1.serialization.SerializationMap.register(SimpleRNN);\nvar GRUCell = (function (_super) {\n    __extends(GRUCell, _super);\n    function GRUCell(config) {\n        var _this = _super.call(this, config) || this;\n        _this.DEFAULT_ACTIVATION = 'tanh';\n        _this.DEFAULT_RECURRENT_ACTIVATION = 'hardSigmoid';\n        _this.DEFAULT_KERNEL_INITIALIZER = 'glorotNormal';\n        _this.DEFAULT_RECURRENT_INITIALIZER = 'orthogonal';\n        _this.DEFAULT_BIAS_INITIALIZER = 'zeros';\n        _this.units = config.units;\n        _this.activation = activations_1.getActivation(config.activation === undefined ? _this.DEFAULT_ACTIVATION :\n            config.activation);\n        _this.recurrentActivation = activations_1.getActivation(config.recurrentActivation === undefined ?\n            _this.DEFAULT_RECURRENT_ACTIVATION :\n            config.recurrentActivation);\n        _this.useBias = config.useBias == null ? true : config.useBias;\n        _this.kernelInitializer = initializers_1.getInitializer(config.kernelInitializer || _this.DEFAULT_KERNEL_INITIALIZER);\n        _this.recurrentInitializer = initializers_1.getInitializer(config.recurrentInitializer || _this.DEFAULT_RECURRENT_INITIALIZER);\n        _this.biasInitializer =\n            initializers_1.getInitializer(config.biasInitializer || _this.DEFAULT_BIAS_INITIALIZER);\n        _this.kernelRegularizer = regularizers_1.getRegularizer(config.kernelRegularizer);\n        _this.recurrentRegularizer = regularizers_1.getRegularizer(config.recurrentRegularizer);\n        _this.biasRegularizer = regularizers_1.getRegularizer(config.biasRegularizer);\n        _this.kernelConstraint = constraints_1.getConstraint(config.kernelConstraint);\n        _this.recurrentConstraint = constraints_1.getConstraint(config.recurrentConstraint);\n        _this.biasConstraint = constraints_1.getConstraint(config.biasConstraint);\n        _this.dropout = math_utils.min([1, math_utils.max([0, config.dropout == null ? 0 : config.dropout])]);\n        _this.recurrentDropout = math_utils.min([\n            1,\n            math_utils.max([0, config.recurrentDropout == null ? 0 : config.recurrentDropout])\n        ]);\n        _this.implementation = config.implementation;\n        _this.stateSize = _this.units;\n        _this.dropoutMask = null;\n        _this.recurrentDropoutMask = null;\n        return _this;\n    }\n    GRUCell.prototype.build = function (inputShape) {\n        inputShape = types_utils_1.getExactlyOneShape(inputShape);\n        var inputDim = inputShape[inputShape.length - 1];\n        this.kernel = this.addWeight('kernel', [inputDim, this.units * 3], null, this.kernelInitializer, this.kernelRegularizer, true, this.kernelConstraint);\n        this.recurrentKernel = this.addWeight('recurrent_kernel', [this.units, this.units * 3], null, this.recurrentInitializer, this.recurrentRegularizer, true, this.recurrentConstraint);\n        if (this.useBias) {\n            this.bias = this.addWeight('bias', [this.units * 3], null, this.biasInitializer, this.biasRegularizer, true, this.biasConstraint);\n        }\n        else {\n            this.bias = null;\n        }\n        this.built = true;\n    };\n    GRUCell.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            inputs = inputs;\n            if (inputs.length !== 2) {\n                throw new errors_1.ValueError(\"GRUCell expects 2 input Tensors (inputs, h, c), got \" +\n                    (inputs.length + \".\"));\n            }\n            var training = kwargs['training'] == null ? false : kwargs['training'];\n            var hTMinus1 = inputs[1];\n            inputs = inputs[0];\n            if (0 < _this.dropout && _this.dropout < 1 && _this.dropoutMask == null) {\n                _this.dropoutMask = generateDropoutMask(function () { return tfc.onesLike(inputs); }, _this.dropout, training, 3);\n            }\n            if (0 < _this.recurrentDropout && _this.recurrentDropout < 1 &&\n                _this.recurrentDropoutMask == null) {\n                _this.recurrentDropoutMask =\n                    generateDropoutMask(function () { return tfc.onesLike(hTMinus1); }, _this.recurrentDropout, training, 3);\n            }\n            var dpMask = _this.dropoutMask;\n            var recDpMask = _this.recurrentDropoutMask;\n            var z;\n            var r;\n            var hh;\n            if (_this.implementation === 1) {\n                var kernelZ = K.sliceAlongLastAxis(_this.kernel.read(), 0, _this.units);\n                var kernelR = K.sliceAlongLastAxis(_this.kernel.read(), _this.units, _this.units);\n                var kernelH = K.sliceAlongLastAxis(_this.kernel.read(), _this.units * 2, _this.units);\n                var recurrentKernelZ = K.sliceAlongLastAxis(_this.recurrentKernel.read(), 0, _this.units);\n                var recurrentKernelR = K.sliceAlongLastAxis(_this.recurrentKernel.read(), _this.units, _this.units);\n                var recurrentKernelH = K.sliceAlongLastAxis(_this.recurrentKernel.read(), _this.units * 2, _this.units);\n                var inputsZ = void 0, inputsR = void 0, inputsH = void 0;\n                if (0 < _this.dropout && _this.dropout < 1) {\n                    inputsZ = tfc.mul(inputs, dpMask[0]);\n                    inputsR = tfc.mul(inputs, dpMask[1]);\n                    inputsH = tfc.mul(inputs, dpMask[2]);\n                }\n                else {\n                    inputsZ = inputs;\n                    inputsR = inputs;\n                    inputsH = inputs;\n                }\n                var xZ = K.dot(inputsZ, kernelZ);\n                var xR = K.dot(inputsR, kernelR);\n                var xH = K.dot(inputsH, kernelH);\n                if (_this.useBias) {\n                    var biasZ = K.sliceAlongFirstAxis(_this.bias.read(), 0, _this.units);\n                    var biasR = K.sliceAlongFirstAxis(_this.bias.read(), _this.units, _this.units);\n                    var biasH = K.sliceAlongFirstAxis(_this.bias.read(), _this.units * 2, _this.units);\n                    xZ = K.biasAdd(xZ, biasZ);\n                    xR = K.biasAdd(xR, biasR);\n                    xH = K.biasAdd(xH, biasH);\n                }\n                var hTMinus1Z = void 0;\n                var hTMinus1R = void 0;\n                var hTMinus1H = void 0;\n                if (0 < _this.recurrentDropout && _this.recurrentDropout < 1) {\n                    hTMinus1Z = tfc.mul(hTMinus1, recDpMask[0]);\n                    hTMinus1R = tfc.mul(hTMinus1, recDpMask[1]);\n                    hTMinus1H = tfc.mul(hTMinus1, recDpMask[2]);\n                }\n                else {\n                    hTMinus1Z = hTMinus1;\n                    hTMinus1R = hTMinus1;\n                    hTMinus1H = hTMinus1;\n                }\n                z = _this.recurrentActivation.apply(tfc.add(xZ, K.dot(hTMinus1Z, recurrentKernelZ)));\n                r = _this.recurrentActivation.apply(tfc.add(xR, K.dot(hTMinus1R, recurrentKernelR)));\n                hh = _this.activation.apply(tfc.add(xH, K.dot(tfc.mul(r, hTMinus1H), recurrentKernelH)));\n            }\n            else {\n                if (0 < _this.dropout && _this.dropout < 1) {\n                    inputs = tfc.mul(inputs, dpMask[0]);\n                }\n                var matrixX = K.dot(inputs, _this.kernel.read());\n                if (_this.useBias) {\n                    matrixX = K.biasAdd(matrixX, _this.bias.read());\n                }\n                if (0 < _this.dropout && _this.dropout < 1) {\n                    hTMinus1 = tfc.mul(hTMinus1, recDpMask[0]);\n                }\n                var matrixInner = K.dot(hTMinus1, K.sliceAlongLastAxis(_this.recurrentKernel.read(), 0, 2 * _this.units));\n                var xZ = K.sliceAlongLastAxis(matrixX, 0, _this.units);\n                var xR = K.sliceAlongLastAxis(matrixX, _this.units, _this.units);\n                var recurrentZ = K.sliceAlongLastAxis(matrixInner, 0, _this.units);\n                var recurrentR = K.sliceAlongLastAxis(matrixInner, _this.units, _this.units);\n                z = _this.recurrentActivation.apply(tfc.add(xZ, recurrentZ));\n                r = _this.recurrentActivation.apply(tfc.add(xR, recurrentR));\n                var xH = K.sliceAlongLastAxis(matrixX, 2 * _this.units, _this.units);\n                var recurrentH = K.dot(tfc.mul(r, hTMinus1), K.sliceAlongLastAxis(_this.recurrentKernel.read(), 2 * _this.units, _this.units));\n                hh = _this.activation.apply(tfc.add(xH, recurrentH));\n            }\n            var h = tfc.add(tfc.mul(z, hTMinus1), tfc.mul(tfc.add(state_1.getScalar(1), tfc.neg(z)), hh));\n            return [h, h];\n        });\n    };\n    GRUCell.prototype.getConfig = function () {\n        var config = {\n            units: this.units,\n            activation: activations_1.serializeActivation(this.activation),\n            recurrentActivation: activations_1.serializeActivation(this.recurrentActivation),\n            useBias: this.useBias,\n            kernelInitializer: initializers_1.serializeInitializer(this.kernelInitializer),\n            recurrentInitializer: initializers_1.serializeInitializer(this.recurrentInitializer),\n            biasInitializer: initializers_1.serializeInitializer(this.biasInitializer),\n            kernelRegularizer: regularizers_1.serializeRegularizer(this.kernelRegularizer),\n            recurrentRegularizer: regularizers_1.serializeRegularizer(this.recurrentRegularizer),\n            biasRegularizer: regularizers_1.serializeRegularizer(this.biasRegularizer),\n            activityRegularizer: regularizers_1.serializeRegularizer(this.activityRegularizer),\n            kernelConstraint: constraints_1.serializeConstraint(this.kernelConstraint),\n            recurrentConstraint: constraints_1.serializeConstraint(this.recurrentConstraint),\n            biasConstraint: constraints_1.serializeConstraint(this.biasConstraint),\n            dropout: this.dropout,\n            recurrentDropout: this.recurrentDropout,\n            implementation: this.implementation,\n        };\n        var baseConfig = _super.prototype.getConfig.call(this);\n        Object.assign(config, baseConfig);\n        return config;\n    };\n    GRUCell.className = 'GRUCell';\n    return GRUCell;\n}(RNNCell));\nexports.GRUCell = GRUCell;\ntfjs_core_1.serialization.SerializationMap.register(GRUCell);\nvar GRU = (function (_super) {\n    __extends(GRU, _super);\n    function GRU(config) {\n        var _this = this;\n        if (config.implementation === 0) {\n            console.warn('`implementation=0` has been deprecated, and now defaults to ' +\n                '`implementation=1`. Please update your layer call.');\n        }\n        config.cell = new GRUCell(config);\n        _this = _super.call(this, config) || this;\n        return _this;\n    }\n    GRU.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            if (_this.cell.dropoutMask != null) {\n                tfc.dispose(_this.cell.dropoutMask);\n                _this.cell.dropoutMask = null;\n            }\n            if (_this.cell.recurrentDropoutMask != null) {\n                tfc.dispose(_this.cell.recurrentDropoutMask);\n                _this.cell.recurrentDropoutMask = null;\n            }\n            var mask = kwargs == null ? null : kwargs['mask'];\n            var training = kwargs == null ? null : kwargs['training'];\n            var initialState = kwargs == null ? null : kwargs['initialState'];\n            return _super.prototype.call.call(_this, inputs, { mask: mask, training: training, initialState: initialState });\n        });\n    };\n    Object.defineProperty(GRU.prototype, \"units\", {\n        get: function () {\n            return this.cell.units;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(GRU.prototype, \"activation\", {\n        get: function () {\n            return this.cell.activation;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(GRU.prototype, \"recurrentActivation\", {\n        get: function () {\n            return this.cell.recurrentActivation;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(GRU.prototype, \"useBias\", {\n        get: function () {\n            return this.cell.useBias;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(GRU.prototype, \"kernelInitializer\", {\n        get: function () {\n            return this.cell.kernelInitializer;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(GRU.prototype, \"recurrentInitializer\", {\n        get: function () {\n            return this.cell.recurrentInitializer;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(GRU.prototype, \"biasInitializer\", {\n        get: function () {\n            return this.cell.biasInitializer;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(GRU.prototype, \"kernelRegularizer\", {\n        get: function () {\n            return this.cell.kernelRegularizer;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(GRU.prototype, \"recurrentRegularizer\", {\n        get: function () {\n            return this.cell.recurrentRegularizer;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(GRU.prototype, \"biasRegularizer\", {\n        get: function () {\n            return this.cell.biasRegularizer;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(GRU.prototype, \"kernelConstraint\", {\n        get: function () {\n            return this.cell.kernelConstraint;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(GRU.prototype, \"recurrentConstraint\", {\n        get: function () {\n            return this.cell.recurrentConstraint;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(GRU.prototype, \"biasConstraint\", {\n        get: function () {\n            return this.cell.biasConstraint;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(GRU.prototype, \"dropout\", {\n        get: function () {\n            return this.cell.dropout;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(GRU.prototype, \"recurrentDropout\", {\n        get: function () {\n            return this.cell.recurrentDropout;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(GRU.prototype, \"implementation\", {\n        get: function () {\n            return this.cell.implementation;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    GRU.prototype.getConfig = function () {\n        var config = {\n            units: this.units,\n            activation: activations_1.serializeActivation(this.activation),\n            recurrentActivation: activations_1.serializeActivation(this.recurrentActivation),\n            useBias: this.useBias,\n            kernelInitializer: initializers_1.serializeInitializer(this.kernelInitializer),\n            recurrentInitializer: initializers_1.serializeInitializer(this.recurrentInitializer),\n            biasInitializer: initializers_1.serializeInitializer(this.biasInitializer),\n            kernelRegularizer: regularizers_1.serializeRegularizer(this.kernelRegularizer),\n            recurrentRegularizer: regularizers_1.serializeRegularizer(this.recurrentRegularizer),\n            biasRegularizer: regularizers_1.serializeRegularizer(this.biasRegularizer),\n            activityRegularizer: regularizers_1.serializeRegularizer(this.activityRegularizer),\n            kernelConstraint: constraints_1.serializeConstraint(this.kernelConstraint),\n            recurrentConstraint: constraints_1.serializeConstraint(this.recurrentConstraint),\n            biasConstraint: constraints_1.serializeConstraint(this.biasConstraint),\n            dropout: this.dropout,\n            recurrentDropout: this.recurrentDropout,\n            implementation: this.implementation,\n        };\n        var baseConfig = _super.prototype.getConfig.call(this);\n        delete baseConfig['cell'];\n        Object.assign(config, baseConfig);\n        return config;\n    };\n    GRU.fromConfig = function (cls, config) {\n        if (config['implmentation'] === 0) {\n            config['implementation'] = 1;\n        }\n        return new cls(config);\n    };\n    GRU.className = 'GRU';\n    return GRU;\n}(RNN));\nexports.GRU = GRU;\ntfjs_core_1.serialization.SerializationMap.register(GRU);\nvar LSTMCell = (function (_super) {\n    __extends(LSTMCell, _super);\n    function LSTMCell(config) {\n        var _this = _super.call(this, config) || this;\n        _this.DEFAULT_ACTIVATION = 'tanh';\n        _this.DEFAULT_RECURRENT_ACTIVATION = 'hardSigmoid';\n        _this.DEFAULT_KERNEL_INITIALIZER = 'glorotNormal';\n        _this.DEFAULT_RECURRENT_INITIALIZER = 'orthogonal';\n        _this.DEFAULT_BIAS_INITIALIZER = 'zeros';\n        _this.units = config.units;\n        _this.activation = activations_1.getActivation(config.activation === undefined ? _this.DEFAULT_ACTIVATION :\n            config.activation);\n        _this.recurrentActivation = activations_1.getActivation(config.recurrentActivation === undefined ?\n            _this.DEFAULT_RECURRENT_ACTIVATION :\n            config.recurrentActivation);\n        _this.useBias = config.useBias == null ? true : config.useBias;\n        _this.kernelInitializer = initializers_1.getInitializer(config.kernelInitializer || _this.DEFAULT_KERNEL_INITIALIZER);\n        _this.recurrentInitializer = initializers_1.getInitializer(config.recurrentInitializer || _this.DEFAULT_RECURRENT_INITIALIZER);\n        _this.biasInitializer =\n            initializers_1.getInitializer(config.biasInitializer || _this.DEFAULT_BIAS_INITIALIZER);\n        _this.unitForgetBias = config.unitForgetBias;\n        _this.kernelRegularizer = regularizers_1.getRegularizer(config.kernelRegularizer);\n        _this.recurrentRegularizer = regularizers_1.getRegularizer(config.recurrentRegularizer);\n        _this.biasRegularizer = regularizers_1.getRegularizer(config.biasRegularizer);\n        _this.kernelConstraint = constraints_1.getConstraint(config.kernelConstraint);\n        _this.recurrentConstraint = constraints_1.getConstraint(config.recurrentConstraint);\n        _this.biasConstraint = constraints_1.getConstraint(config.biasConstraint);\n        _this.dropout = math_utils.min([1, math_utils.max([0, config.dropout == null ? 0 : config.dropout])]);\n        _this.recurrentDropout = math_utils.min([\n            1,\n            math_utils.max([0, config.recurrentDropout == null ? 0 : config.recurrentDropout])\n        ]);\n        _this.implementation = config.implementation;\n        _this.stateSize = [_this.units, _this.units];\n        _this.dropoutMask = null;\n        _this.recurrentDropoutMask = null;\n        return _this;\n    }\n    LSTMCell.prototype.build = function (inputShape) {\n        inputShape = types_utils_1.getExactlyOneShape(inputShape);\n        var inputDim = inputShape[inputShape.length - 1];\n        this.kernel = this.addWeight('kernel', [inputDim, this.units * 4], null, this.kernelInitializer, this.kernelRegularizer, true, this.kernelConstraint);\n        this.recurrentKernel = this.addWeight('recurrent_kernel', [this.units, this.units * 4], null, this.recurrentInitializer, this.recurrentRegularizer, true, this.recurrentConstraint);\n        var biasInitializer;\n        if (this.useBias) {\n            if (this.unitForgetBias) {\n                var capturedBiasInit_1 = this.biasInitializer;\n                var capturedUnits_1 = this.units;\n                biasInitializer = new (_a = (function (_super) {\n                        __extends(CustomInit, _super);\n                        function CustomInit() {\n                            return _super !== null && _super.apply(this, arguments) || this;\n                        }\n                        CustomInit.prototype.apply = function (shape, dtype) {\n                            var bI = capturedBiasInit_1.apply([capturedUnits_1]);\n                            var bF = (new initializers_1.Ones()).apply([capturedUnits_1]);\n                            var bCAndH = capturedBiasInit_1.apply([capturedUnits_1 * 2]);\n                            return K.concatAlongFirstAxis(K.concatAlongFirstAxis(bI, bF), bCAndH);\n                        };\n                        return CustomInit;\n                    }(initializers_1.Initializer)),\n                    _a.className = 'CustomInit',\n                    _a)();\n            }\n            else {\n                biasInitializer = this.biasInitializer;\n            }\n            this.bias = this.addWeight('bias', [this.units * 4], null, biasInitializer, this.biasRegularizer, true, this.biasConstraint);\n        }\n        else {\n            this.bias = null;\n        }\n        this.built = true;\n        var _a;\n    };\n    LSTMCell.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            var training = kwargs['training'] == null ? false : kwargs['training'];\n            inputs = inputs;\n            if (inputs.length !== 3) {\n                throw new errors_1.ValueError(\"LSTMCell expects 3 input Tensors (inputs, h, c), got \" +\n                    (inputs.length + \".\"));\n            }\n            var hTMinus1 = inputs[1];\n            var cTMinus1 = inputs[2];\n            inputs = inputs[0];\n            if (0 < _this.dropout && _this.dropout < 1 && _this.dropoutMask == null) {\n                _this.dropoutMask = generateDropoutMask(function () { return tfc.onesLike(inputs); }, _this.dropout, training, 4);\n            }\n            if (0 < _this.recurrentDropout && _this.recurrentDropout < 1 &&\n                _this.recurrentDropoutMask == null) {\n                _this.recurrentDropoutMask =\n                    generateDropoutMask(function () { return tfc.onesLike(hTMinus1); }, _this.recurrentDropout, training, 4);\n            }\n            var dpMask = _this.dropoutMask;\n            var recDpMask = _this.recurrentDropoutMask;\n            var i;\n            var f;\n            var c;\n            var o;\n            if (_this.implementation === 1) {\n                var kernelI = K.sliceAlongLastAxis(_this.kernel.read(), 0, _this.units);\n                var kernelF = K.sliceAlongLastAxis(_this.kernel.read(), _this.units, _this.units);\n                var kernelC = K.sliceAlongLastAxis(_this.kernel.read(), _this.units * 2, _this.units);\n                var kernelO = K.sliceAlongLastAxis(_this.kernel.read(), _this.units * 3, _this.units);\n                var recurrentKernelI = K.sliceAlongLastAxis(_this.recurrentKernel.read(), 0, _this.units);\n                var recurrentKernelF = K.sliceAlongLastAxis(_this.recurrentKernel.read(), _this.units, _this.units);\n                var recurrentKernelC = K.sliceAlongLastAxis(_this.recurrentKernel.read(), _this.units * 2, _this.units);\n                var recurrentKernelO = K.sliceAlongLastAxis(_this.recurrentKernel.read(), _this.units * 3, _this.units);\n                var inputsI = void 0, inputsF = void 0, inputsC = void 0, inputsO = void 0;\n                if (0 < _this.dropout && _this.dropout < 1) {\n                    inputsI = tfc.mul(inputs, dpMask[0]);\n                    inputsF = tfc.mul(inputs, dpMask[1]);\n                    inputsC = tfc.mul(inputs, dpMask[2]);\n                    inputsO = tfc.mul(inputs, dpMask[3]);\n                }\n                else {\n                    inputsI = inputs;\n                    inputsF = inputs;\n                    inputsC = inputs;\n                    inputsO = inputs;\n                }\n                var xI = K.dot(inputsI, kernelI);\n                var xF = K.dot(inputsF, kernelF);\n                var xC = K.dot(inputsC, kernelC);\n                var xO = K.dot(inputsO, kernelO);\n                if (_this.useBias) {\n                    var biasI = K.sliceAlongFirstAxis(_this.bias.read(), 0, _this.units);\n                    var biasF = K.sliceAlongFirstAxis(_this.bias.read(), _this.units, _this.units);\n                    var biasC = K.sliceAlongFirstAxis(_this.bias.read(), _this.units * 2, _this.units);\n                    var biasO = K.sliceAlongFirstAxis(_this.bias.read(), _this.units * 3, _this.units);\n                    xI = K.biasAdd(xI, biasI);\n                    xF = K.biasAdd(xF, biasF);\n                    xC = K.biasAdd(xC, biasC);\n                    xO = K.biasAdd(xO, biasO);\n                }\n                var hTMinus1I = void 0, hTMinus1F = void 0, hTMinus1C = void 0, hTMinus1O = void 0;\n                if (0 < _this.recurrentDropout && _this.recurrentDropout < 1) {\n                    hTMinus1I = tfc.mul(hTMinus1, recDpMask[0]);\n                    hTMinus1F = tfc.mul(hTMinus1, recDpMask[1]);\n                    hTMinus1C = tfc.mul(hTMinus1, recDpMask[2]);\n                    hTMinus1O = tfc.mul(hTMinus1, recDpMask[3]);\n                }\n                else {\n                    hTMinus1I = hTMinus1;\n                    hTMinus1F = hTMinus1;\n                    hTMinus1C = hTMinus1;\n                    hTMinus1O = hTMinus1;\n                }\n                i = _this.recurrentActivation.apply(tfc.add(xI, K.dot(hTMinus1I, recurrentKernelI)));\n                f = _this.recurrentActivation.apply(tfc.add(xF, K.dot(hTMinus1F, recurrentKernelF)));\n                c = tfc.add(tfc.mul(f, cTMinus1), tfc.mul(i, _this.activation.apply(tfc.add(xC, K.dot(hTMinus1C, recurrentKernelC)))));\n                o = _this.recurrentActivation.apply(tfc.add(xO, K.dot(hTMinus1O, recurrentKernelO)));\n            }\n            else {\n                if (0 < _this.dropout && _this.dropout < 1) {\n                    inputs = tfc.mul(inputs, dpMask[0]);\n                }\n                var z = K.dot(inputs, _this.kernel.read());\n                if (0 < _this.recurrentDropout && _this.recurrentDropout < 1) {\n                    hTMinus1 = tfc.mul(hTMinus1, recDpMask[0]);\n                }\n                z = tfc.add(z, K.dot(hTMinus1, _this.recurrentKernel.read()));\n                if (_this.useBias) {\n                    z = K.biasAdd(z, _this.bias.read());\n                }\n                var z0 = K.sliceAlongLastAxis(z, 0, _this.units);\n                var z1 = K.sliceAlongLastAxis(z, _this.units, _this.units);\n                var z2 = K.sliceAlongLastAxis(z, _this.units * 2, _this.units);\n                var z3 = K.sliceAlongLastAxis(z, _this.units * 3, _this.units);\n                i = _this.recurrentActivation.apply(z0);\n                f = _this.recurrentActivation.apply(z1);\n                c = tfc.add(tfc.mul(f, cTMinus1), tfc.mul(i, _this.activation.apply(z2)));\n                o = _this.recurrentActivation.apply(z3);\n            }\n            var h = tfc.mul(o, _this.activation.apply(c));\n            return [h, h, c];\n        });\n    };\n    LSTMCell.prototype.getConfig = function () {\n        var config = {\n            units: this.units,\n            activation: activations_1.serializeActivation(this.activation),\n            recurrentActivation: activations_1.serializeActivation(this.recurrentActivation),\n            useBias: this.useBias,\n            kernelInitializer: initializers_1.serializeInitializer(this.kernelInitializer),\n            recurrentInitializer: initializers_1.serializeInitializer(this.recurrentInitializer),\n            biasInitializer: initializers_1.serializeInitializer(this.biasInitializer),\n            unitForgetBias: this.unitForgetBias,\n            kernelRegularizer: regularizers_1.serializeRegularizer(this.kernelRegularizer),\n            recurrentRegularizer: regularizers_1.serializeRegularizer(this.recurrentRegularizer),\n            biasRegularizer: regularizers_1.serializeRegularizer(this.biasRegularizer),\n            activityRegularizer: regularizers_1.serializeRegularizer(this.activityRegularizer),\n            kernelConstraint: constraints_1.serializeConstraint(this.kernelConstraint),\n            recurrentConstraint: constraints_1.serializeConstraint(this.recurrentConstraint),\n            biasConstraint: constraints_1.serializeConstraint(this.biasConstraint),\n            dropout: this.dropout,\n            recurrentDropout: this.recurrentDropout,\n            implementation: this.implementation,\n        };\n        var baseConfig = _super.prototype.getConfig.call(this);\n        Object.assign(config, baseConfig);\n        return config;\n    };\n    LSTMCell.className = 'LSTMCell';\n    return LSTMCell;\n}(RNNCell));\nexports.LSTMCell = LSTMCell;\ntfjs_core_1.serialization.SerializationMap.register(LSTMCell);\nvar LSTM = (function (_super) {\n    __extends(LSTM, _super);\n    function LSTM(config) {\n        var _this = this;\n        if (config.implementation === 0) {\n            console.warn('`implementation=0` has been deprecated, and now defaults to ' +\n                '`implementation=1`. Please update your layer call.');\n        }\n        config.cell = new LSTMCell(config);\n        _this = _super.call(this, config) || this;\n        return _this;\n    }\n    LSTM.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            if (_this.cell.dropoutMask != null) {\n                tfc.dispose(_this.cell.dropoutMask);\n                _this.cell.dropoutMask = null;\n            }\n            if (_this.cell.recurrentDropoutMask != null) {\n                tfc.dispose(_this.cell.recurrentDropoutMask);\n                _this.cell.recurrentDropoutMask = null;\n            }\n            var mask = kwargs == null ? null : kwargs['mask'];\n            var training = kwargs == null ? null : kwargs['training'];\n            var initialState = kwargs == null ? null : kwargs['initialState'];\n            return _super.prototype.call.call(_this, inputs, { mask: mask, training: training, initialState: initialState });\n        });\n    };\n    Object.defineProperty(LSTM.prototype, \"units\", {\n        get: function () {\n            return this.cell.units;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(LSTM.prototype, \"activation\", {\n        get: function () {\n            return this.cell.activation;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(LSTM.prototype, \"recurrentActivation\", {\n        get: function () {\n            return this.cell.recurrentActivation;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(LSTM.prototype, \"useBias\", {\n        get: function () {\n            return this.cell.useBias;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(LSTM.prototype, \"kernelInitializer\", {\n        get: function () {\n            return this.cell.kernelInitializer;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(LSTM.prototype, \"recurrentInitializer\", {\n        get: function () {\n            return this.cell.recurrentInitializer;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(LSTM.prototype, \"biasInitializer\", {\n        get: function () {\n            return this.cell.biasInitializer;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(LSTM.prototype, \"unitForgetBias\", {\n        get: function () {\n            return this.cell.unitForgetBias;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(LSTM.prototype, \"kernelRegularizer\", {\n        get: function () {\n            return this.cell.kernelRegularizer;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(LSTM.prototype, \"recurrentRegularizer\", {\n        get: function () {\n            return this.cell.recurrentRegularizer;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(LSTM.prototype, \"biasRegularizer\", {\n        get: function () {\n            return this.cell.biasRegularizer;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(LSTM.prototype, \"kernelConstraint\", {\n        get: function () {\n            return this.cell.kernelConstraint;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(LSTM.prototype, \"recurrentConstraint\", {\n        get: function () {\n            return this.cell.recurrentConstraint;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(LSTM.prototype, \"biasConstraint\", {\n        get: function () {\n            return this.cell.biasConstraint;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(LSTM.prototype, \"dropout\", {\n        get: function () {\n            return this.cell.dropout;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(LSTM.prototype, \"recurrentDropout\", {\n        get: function () {\n            return this.cell.recurrentDropout;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(LSTM.prototype, \"implementation\", {\n        get: function () {\n            return this.cell.implementation;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    LSTM.prototype.getConfig = function () {\n        var config = {\n            units: this.units,\n            activation: activations_1.serializeActivation(this.activation),\n            recurrentActivation: activations_1.serializeActivation(this.recurrentActivation),\n            useBias: this.useBias,\n            kernelInitializer: initializers_1.serializeInitializer(this.kernelInitializer),\n            recurrentInitializer: initializers_1.serializeInitializer(this.recurrentInitializer),\n            biasInitializer: initializers_1.serializeInitializer(this.biasInitializer),\n            unitForgetBias: this.unitForgetBias,\n            kernelRegularizer: regularizers_1.serializeRegularizer(this.kernelRegularizer),\n            recurrentRegularizer: regularizers_1.serializeRegularizer(this.recurrentRegularizer),\n            biasRegularizer: regularizers_1.serializeRegularizer(this.biasRegularizer),\n            activityRegularizer: regularizers_1.serializeRegularizer(this.activityRegularizer),\n            kernelConstraint: constraints_1.serializeConstraint(this.kernelConstraint),\n            recurrentConstraint: constraints_1.serializeConstraint(this.recurrentConstraint),\n            biasConstraint: constraints_1.serializeConstraint(this.biasConstraint),\n            dropout: this.dropout,\n            recurrentDropout: this.recurrentDropout,\n            implementation: this.implementation,\n        };\n        var baseConfig = _super.prototype.getConfig.call(this);\n        delete baseConfig['cell'];\n        Object.assign(config, baseConfig);\n        return config;\n    };\n    LSTM.fromConfig = function (cls, config) {\n        if (config['implmentation'] === 0) {\n            config['implementation'] = 1;\n        }\n        return new cls(config);\n    };\n    LSTM.className = 'LSTM';\n    return LSTM;\n}(RNN));\nexports.LSTM = LSTM;\ntfjs_core_1.serialization.SerializationMap.register(LSTM);\nvar StackedRNNCells = (function (_super) {\n    __extends(StackedRNNCells, _super);\n    function StackedRNNCells(config) {\n        var _this = _super.call(this, config) || this;\n        _this.cells = config.cells;\n        return _this;\n    }\n    Object.defineProperty(StackedRNNCells.prototype, \"stateSize\", {\n        get: function () {\n            var stateSize = [];\n            for (var _i = 0, _a = this.cells.slice().reverse(); _i < _a.length; _i++) {\n                var cell = _a[_i];\n                if (Array.isArray(cell.stateSize)) {\n                    stateSize.push.apply(stateSize, cell.stateSize);\n                }\n                else {\n                    stateSize.push(cell.stateSize);\n                }\n            }\n            return stateSize;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    StackedRNNCells.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            inputs = inputs;\n            var states = inputs.slice(1);\n            var nestedStates = [];\n            for (var _i = 0, _a = _this.cells.slice().reverse(); _i < _a.length; _i++) {\n                var cell = _a[_i];\n                if (Array.isArray(cell.stateSize)) {\n                    nestedStates.push(states.splice(0, cell.stateSize.length));\n                }\n                else {\n                    nestedStates.push(states.splice(0, 1));\n                }\n            }\n            nestedStates.reverse();\n            var newNestedStates = [];\n            var callInputs;\n            for (var i = 0; i < _this.cells.length; ++i) {\n                var cell = _this.cells[i];\n                states = nestedStates[i];\n                if (i === 0) {\n                    callInputs = [inputs[0]].concat(states);\n                }\n                else {\n                    callInputs = [callInputs[0]].concat(states);\n                }\n                callInputs = cell.call(callInputs, kwargs);\n                newNestedStates.push(callInputs.slice(1));\n            }\n            states = [];\n            for (var _b = 0, _c = newNestedStates.slice().reverse(); _b < _c.length; _b++) {\n                var cellStates = _c[_b];\n                states.push.apply(states, cellStates);\n            }\n            return [callInputs[0]].concat(states);\n        });\n    };\n    StackedRNNCells.prototype.build = function (inputShape) {\n        if (types_utils_1.isArrayOfShapes(inputShape)) {\n            inputShape = inputShape[0];\n        }\n        inputShape = inputShape;\n        var outputDim;\n        for (var _i = 0, _a = this.cells; _i < _a.length; _i++) {\n            var cell = _a[_i];\n            cell.build(inputShape);\n            if (Array.isArray(cell.stateSize)) {\n                outputDim = cell.stateSize[0];\n            }\n            else {\n                outputDim = cell.stateSize;\n            }\n            inputShape = [inputShape[0], outputDim];\n        }\n        this.built = true;\n    };\n    StackedRNNCells.prototype.getConfig = function () {\n        var cellConfigs = [];\n        for (var _i = 0, _a = this.cells; _i < _a.length; _i++) {\n            var cell = _a[_i];\n            cellConfigs.push({\n                'className': this.getClassName(),\n                'config': cell.getConfig(),\n            });\n        }\n        var config = { 'cells': cellConfigs };\n        var baseConfig = _super.prototype.getConfig.call(this);\n        Object.assign(config, baseConfig);\n        return config;\n    };\n    StackedRNNCells.fromConfig = function (cls, config, customObjects) {\n        if (customObjects === void 0) { customObjects = {}; }\n        var cells = [];\n        for (var _i = 0, _a = config['cells']; _i < _a.length; _i++) {\n            var cellConfig = _a[_i];\n            cells.push(serialization_1.deserialize(cellConfig, customObjects));\n        }\n        return new cls({ cells: cells });\n    };\n    Object.defineProperty(StackedRNNCells.prototype, \"trainableWeights\", {\n        get: function () {\n            if (!this.trainable) {\n                return [];\n            }\n            var weights = [];\n            for (var _i = 0, _a = this.cells; _i < _a.length; _i++) {\n                var cell = _a[_i];\n                weights.push.apply(weights, cell.trainableWeights);\n            }\n            return weights;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(StackedRNNCells.prototype, \"nonTrainableWeights\", {\n        get: function () {\n            var weights = [];\n            for (var _i = 0, _a = this.cells; _i < _a.length; _i++) {\n                var cell = _a[_i];\n                weights.push.apply(weights, cell.nonTrainableWeights);\n            }\n            if (!this.trainable) {\n                var trainableWeights = [];\n                for (var _b = 0, _c = this.cells; _b < _c.length; _b++) {\n                    var cell = _c[_b];\n                    trainableWeights.push.apply(trainableWeights, cell.trainableWeights);\n                }\n                return trainableWeights.concat(weights);\n            }\n            return weights;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    StackedRNNCells.prototype.getWeights = function () {\n        var weights = [];\n        for (var _i = 0, _a = this.cells; _i < _a.length; _i++) {\n            var cell = _a[_i];\n            weights.push.apply(weights, cell.weights);\n        }\n        return variables_1.batchGetValue(weights);\n    };\n    StackedRNNCells.prototype.setWeights = function (weights) {\n        var tuples = [];\n        for (var _i = 0, _a = this.cells; _i < _a.length; _i++) {\n            var cell = _a[_i];\n            var numParams = cell.weights.length;\n            var inputWeights = weights.splice(numParams);\n            for (var i = 0; i < cell.weights.length; ++i) {\n                tuples.push([cell.weights[i], inputWeights[i]]);\n            }\n        }\n        variables_1.batchSetValue(tuples);\n    };\n    StackedRNNCells.className = 'StackedRNNCells';\n    return StackedRNNCells;\n}(RNNCell));\nexports.StackedRNNCells = StackedRNNCells;\ntfjs_core_1.serialization.SerializationMap.register(StackedRNNCells);\nfunction generateDropoutMask(ones, rate, training, count) {\n    if (training === void 0) { training = null; }\n    if (count === void 0) { count = 1; }\n    function droppedInputs() {\n        return K.dropout(ones(), state_1.getScalar(rate));\n    }\n    if (count > 1) {\n        var mask = [];\n        for (var i = 0; i < count; i++) {\n            mask.push(K.inTrainPhase(droppedInputs, ones, training));\n        }\n        mask.forEach(function (m) { return tfc.keep(m); });\n        return mask;\n    }\n    else {\n        return tfc.keep(K.inTrainPhase(droppedInputs, ones, training));\n    }\n}\n\n},{\"../activations\":183,\"../backend/state\":185,\"../backend/tfjs_backend\":186,\"../constraints\":190,\"../engine/topology\":194,\"../errors\":196,\"../initializers\":204,\"../regularizers\":222,\"../utils/math_utils\":226,\"../utils/types_utils\":228,\"../variables\":230,\"./serialization\":215,\"@tensorflow/tfjs-core\":59}],215:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar generic_utils_1 = require(\"../utils/generic_utils\");\nfunction deserialize(config, customObjects) {\n    if (customObjects === void 0) { customObjects = {}; }\n    return generic_utils_1.deserializeKerasObject(config, tfjs_core_1.serialization.SerializationMap.getMap().classNameMap, customObjects, 'layer');\n}\nexports.deserialize = deserialize;\n\n},{\"../utils/generic_utils\":224,\"@tensorflow/tfjs-core\":59}],216:[function(require,module,exports){\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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfc = require(\"@tensorflow/tfjs-core\");\nvar tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar state_1 = require(\"../backend/state\");\nvar K = require(\"../backend/tfjs_backend\");\nvar common_1 = require(\"../common\");\nvar topology_1 = require(\"../engine/topology\");\nvar errors_1 = require(\"../errors\");\nvar generic_utils = require(\"../utils/generic_utils\");\nvar types_utils_1 = require(\"../utils/types_utils\");\nvar recurrent_1 = require(\"./recurrent\");\nvar serialization_1 = require(\"./serialization\");\nvar Wrapper = (function (_super) {\n    __extends(Wrapper, _super);\n    function Wrapper(config) {\n        var _this = _super.call(this, config) || this;\n        _this.layer = config.layer;\n        return _this;\n    }\n    Wrapper.prototype.build = function (inputShape) {\n        this.built = true;\n    };\n    Object.defineProperty(Wrapper.prototype, \"trainable\", {\n        get: function () {\n            if (this.layer != null) {\n                return this.layer.trainable;\n            }\n            else {\n                return false;\n            }\n        },\n        set: function (value) {\n            if (this.layer != null) {\n                this.layer.trainable = value;\n            }\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Wrapper.prototype, \"trainableWeights\", {\n        get: function () {\n            return this.layer.trainableWeights;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Wrapper.prototype, \"nonTrainableWeights\", {\n        get: function () {\n            return this.layer.nonTrainableWeights;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Wrapper.prototype, \"updates\", {\n        get: function () {\n            return this.layer._updates;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Wrapper.prototype, \"losses\", {\n        get: function () {\n            return this.layer.losses;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Wrapper.prototype.getWeights = function () {\n        return this.layer.getWeights();\n    };\n    Wrapper.prototype.setWeights = function (weights) {\n        this.layer.setWeights(weights);\n    };\n    Wrapper.prototype.getConfig = function () {\n        var config = {\n            'layer': {\n                'className': this.layer.getClassName(),\n                'config': this.layer.getConfig(),\n            }\n        };\n        var baseConfig = _super.prototype.getConfig.call(this);\n        Object.assign(config, baseConfig);\n        return config;\n    };\n    Wrapper.fromConfig = function (cls, config, customObjects) {\n        if (customObjects === void 0) { customObjects = {}; }\n        var layerConfig = config['layer'];\n        var layer = serialization_1.deserialize(layerConfig, customObjects);\n        delete config['layer'];\n        var newConfig = { layer: layer };\n        Object.assign(newConfig, config);\n        return new cls(newConfig);\n    };\n    return Wrapper;\n}(topology_1.Layer));\nexports.Wrapper = Wrapper;\nvar TimeDistributed = (function (_super) {\n    __extends(TimeDistributed, _super);\n    function TimeDistributed(config) {\n        var _this = _super.call(this, config) || this;\n        _this.supportsMasking = true;\n        return _this;\n    }\n    TimeDistributed.prototype.build = function (inputShape) {\n        inputShape = types_utils_1.getExactlyOneShape(inputShape);\n        if (inputShape.length < 3) {\n            throw new errors_1.ValueError(\"TimeDistributed layer expects an input shape >= 3D, but received \" +\n                (\"input shape \" + JSON.stringify(inputShape)));\n        }\n        this.inputSpec = [{ shape: inputShape }];\n        var childInputShape = [inputShape[0]].concat(inputShape.slice(2));\n        if (!this.layer.built) {\n            this.layer.build(childInputShape);\n            this.layer.built = true;\n        }\n        _super.prototype.build.call(this, inputShape);\n    };\n    TimeDistributed.prototype.computeOutputShape = function (inputShape) {\n        inputShape = types_utils_1.getExactlyOneShape(inputShape);\n        var childInputShape = [inputShape[0]].concat(inputShape.slice(2));\n        var childOutputShape = this.layer.computeOutputShape(childInputShape);\n        var timesteps = inputShape[1];\n        return [childOutputShape[0], timesteps].concat(childOutputShape.slice(1));\n    };\n    TimeDistributed.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            inputs = types_utils_1.getExactlyOneTensor(inputs);\n            var step = function (inputs, states) {\n                var output = _this.layer.call(inputs, kwargs);\n                return [output, []];\n            };\n            var rnnOutputs = recurrent_1.rnn(step, inputs, [], false, null, null, false, inputs.shape[1]);\n            var y = rnnOutputs[1];\n            return y;\n        });\n    };\n    TimeDistributed.className = 'TimeDistributed';\n    return TimeDistributed;\n}(Wrapper));\nexports.TimeDistributed = TimeDistributed;\ntfjs_core_1.serialization.SerializationMap.register(TimeDistributed);\nexports.VALID_BIDIRECTIONAL_MERGE_MODES = ['sum', 'mul', 'concat', 'ave'];\nfunction checkBidirectionalMergeMode(value) {\n    generic_utils.checkStringTypeUnionValue(exports.VALID_BIDIRECTIONAL_MERGE_MODES, 'BidirectionalMergeMode', value);\n}\nexports.checkBidirectionalMergeMode = checkBidirectionalMergeMode;\nvar Bidirectional = (function (_super) {\n    __extends(Bidirectional, _super);\n    function Bidirectional(config) {\n        var _this = _super.call(this, config) || this;\n        var layerConfig = config.layer.getConfig();\n        _this.forwardLayer =\n            serialization_1.deserialize({ className: config.layer.getClassName(), config: layerConfig });\n        layerConfig['goBackwards'] =\n            layerConfig['goBackwards'] === true ? false : true;\n        _this.backwardLayer =\n            serialization_1.deserialize({ className: config.layer.getClassName(), config: layerConfig });\n        _this.forwardLayer.name = 'forward_' + _this.forwardLayer.name;\n        _this.backwardLayer.name = 'backward_' + _this.backwardLayer.name;\n        checkBidirectionalMergeMode(config.mergeMode);\n        _this.mergeMode = config.mergeMode;\n        if (config.weights) {\n            throw new errors_1.NotImplementedError('weights support is not implemented for Bidirectional layer yet.');\n        }\n        _this._stateful = config.layer.stateful;\n        _this.returnSequences = config.layer.returnSequences;\n        _this.returnState = config.layer.returnState;\n        _this.supportsMasking = true;\n        _this._trainable = true;\n        _this.inputSpec = config.layer.inputSpec;\n        _this.numConstants = null;\n        return _this;\n    }\n    Object.defineProperty(Bidirectional.prototype, \"trainable\", {\n        get: function () {\n            return this._trainable;\n        },\n        set: function (value) {\n            this._trainable = value;\n            if (this.forwardLayer != null) {\n                this.forwardLayer.trainable = value;\n            }\n            if (this.backwardLayer != null) {\n                this.backwardLayer.trainable = value;\n            }\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Bidirectional.prototype.getWeights = function () {\n        return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights());\n    };\n    Bidirectional.prototype.setWeights = function (weights) {\n        var numWeights = weights.length;\n        var numeightsOver2 = Math.floor(numWeights / 2);\n        this.forwardLayer.setWeights(weights.slice(0, numeightsOver2));\n        this.backwardLayer.setWeights(weights.slice(numeightsOver2));\n    };\n    Bidirectional.prototype.computeOutputShape = function (inputShape) {\n        var layerShapes = this.forwardLayer.computeOutputShape(inputShape);\n        if (!(Array.isArray(layerShapes) && Array.isArray(layerShapes[0]))) {\n            layerShapes = [layerShapes];\n        }\n        layerShapes = layerShapes;\n        var outputShape;\n        var outputShapes;\n        var stateShape;\n        if (this.returnState) {\n            stateShape = layerShapes.slice(1);\n            outputShape = layerShapes[0];\n        }\n        else {\n            outputShape = layerShapes[0];\n        }\n        outputShape = outputShape;\n        if (this.mergeMode === 'concat') {\n            outputShape[outputShape.length - 1] *= 2;\n            outputShapes = [outputShape];\n        }\n        else if (this.mergeMode == null) {\n            outputShapes = [outputShape, outputShape.slice()];\n        }\n        else {\n            outputShapes = [outputShape];\n        }\n        if (this.returnState) {\n            if (this.mergeMode == null) {\n                return outputShapes.concat(stateShape).concat(stateShape.slice());\n            }\n            return [outputShape].concat(stateShape).concat(stateShape.slice());\n        }\n        return generic_utils.singletonOrArray(outputShapes);\n    };\n    Bidirectional.prototype.apply = function (inputs, kwargs) {\n        var initialState = kwargs == null ? null : kwargs['initialState'];\n        var constants = kwargs == null ? null : kwargs['constants'];\n        if (kwargs == null) {\n            kwargs = {};\n        }\n        var standardized = recurrent_1.standardizeArgs(inputs, initialState, constants, this.numConstants);\n        inputs = standardized.inputs;\n        initialState = standardized.initialState;\n        constants = standardized.constants;\n        if (Array.isArray(inputs)) {\n            initialState = inputs.slice(1);\n            inputs = inputs[0];\n        }\n        if ((initialState == null || initialState.length === 0) &&\n            constants == null) {\n            return _super.prototype.apply.call(this, inputs, kwargs);\n        }\n        var additionalInputs = [];\n        var additionalSpecs = [];\n        if (initialState != null) {\n            var numStates = initialState.length;\n            if (numStates % 2 > 0) {\n                throw new errors_1.ValueError('When passing `initialState` to a Bidrectional RNN, ' +\n                    'the state should be an Array containing the states of ' +\n                    'the underlying RNNs.');\n            }\n            kwargs['initialState'] = initialState;\n            additionalInputs.push.apply(additionalInputs, initialState);\n            var stateSpecs = initialState\n                .map(function (state) { return new topology_1.InputSpec({ shape: state.shape }); });\n            this.forwardLayer.stateSpec = stateSpecs.slice(0, numStates / 2);\n            this.backwardLayer.stateSpec = stateSpecs.slice(numStates / 2);\n            additionalSpecs.push.apply(additionalSpecs, stateSpecs);\n        }\n        if (constants != null) {\n            throw new errors_1.NotImplementedError('Support for constants in Bidirectional layers is not ' +\n                'implemented yet.');\n        }\n        var isSymbolicTensor = additionalInputs[0] instanceof topology_1.SymbolicTensor;\n        for (var _i = 0, additionalInputs_1 = additionalInputs; _i < additionalInputs_1.length; _i++) {\n            var tensor = additionalInputs_1[_i];\n            if (tensor instanceof topology_1.SymbolicTensor !== isSymbolicTensor) {\n                throw new errors_1.ValueError('The initial state of a Bidirectional layer cannot be ' +\n                    'specified as a mix of symbolic and non-symbolic tensors');\n            }\n        }\n        if (isSymbolicTensor) {\n            var fullInput = [inputs].concat(additionalInputs);\n            var fullInputSpec = this.inputSpec.concat(additionalSpecs);\n            var originalInputSpec = this.inputSpec;\n            this.inputSpec = fullInputSpec;\n            var output = _super.prototype.apply.call(this, fullInput, kwargs);\n            this.inputSpec = originalInputSpec;\n            return output;\n        }\n        else {\n            return _super.prototype.apply.call(this, inputs, kwargs);\n        }\n    };\n    Bidirectional.prototype.call = function (inputs, kwargs) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            if (kwargs['mask'] != null) {\n                throw new errors_1.NotImplementedError('The support for masking is not implemented for ' +\n                    'Bidirectional layers yet.');\n            }\n            var initialState = kwargs['initialState'];\n            var y;\n            var yRev;\n            if (initialState == null) {\n                y = _this.forwardLayer.call(inputs, kwargs);\n                yRev = _this.backwardLayer.call(inputs, kwargs);\n            }\n            else {\n                var forwardState = initialState.slice(0, initialState.length / 2);\n                var backwardState = initialState.slice(initialState.length / 2);\n                y = _this.forwardLayer.call(inputs, Object.assign(kwargs, { initialState: forwardState }));\n                yRev = _this.forwardLayer.call(inputs, Object.assign(kwargs, { initialState: backwardState }));\n            }\n            var states;\n            if (_this.returnState) {\n                if (Array.isArray(y)) {\n                    states = y.slice(1).concat(yRev.slice(1));\n                }\n                else {\n                }\n                y = y[0];\n                yRev = yRev[0];\n            }\n            if (_this.returnSequences) {\n                yRev = tfc.reverse(yRev, 1);\n            }\n            var output;\n            if (_this.mergeMode === 'concat') {\n                output = K.concatenate([y, yRev]);\n            }\n            else if (_this.mergeMode === 'sum') {\n                output = tfc.add(y, yRev);\n            }\n            else if (_this.mergeMode === 'ave') {\n                output = tfc.mul(state_1.getScalar(0.5), tfc.add(y, yRev));\n            }\n            else if (_this.mergeMode === 'mul') {\n                output = tfc.mul(y, yRev);\n            }\n            else if (_this.mergeMode == null) {\n                output = [y, yRev];\n            }\n            if (_this.returnState) {\n                if (_this.mergeMode == null) {\n                    return output.concat(states);\n                }\n                return [output].concat(states);\n            }\n            return output;\n        });\n    };\n    Bidirectional.prototype.resetStates = function (states) {\n        this.forwardLayer.resetStates();\n        this.backwardLayer.resetStates();\n    };\n    Bidirectional.prototype.build = function (inputShape) {\n        var _this = this;\n        common_1.nameScope(this.forwardLayer.name, function () {\n            _this.forwardLayer.build(inputShape);\n        });\n        common_1.nameScope(this.backwardLayer.name, function () {\n            _this.backwardLayer.build(inputShape);\n        });\n        this.built = true;\n    };\n    Object.defineProperty(Bidirectional.prototype, \"trainableWeights\", {\n        get: function () {\n            return this.forwardLayer.trainableWeights.concat(this.backwardLayer.trainableWeights);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Bidirectional.prototype, \"nonTrainableWeights\", {\n        get: function () {\n            return this.forwardLayer.nonTrainableWeights.concat(this.backwardLayer.nonTrainableWeights);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Bidirectional.prototype.getConfig = function () {\n        var config = {\n            'mergeMode': this.mergeMode,\n        };\n        var baseConfig = _super.prototype.getConfig.call(this);\n        Object.assign(config, baseConfig);\n        return config;\n    };\n    Bidirectional.fromConfig = function (cls, config) {\n        var rnnLayer = serialization_1.deserialize(config['layer']);\n        delete config['layer'];\n        if (config['numConstants'] != null) {\n            throw new errors_1.NotImplementedError(\"Deserialization of a Bidirectional layer with numConstants \" +\n                \"present is not supported yet.\");\n        }\n        var newConfig = config;\n        newConfig['layer'] = rnnLayer;\n        return new cls(newConfig);\n    };\n    Bidirectional.className = 'Bidirectional';\n    return Bidirectional;\n}(Wrapper));\nexports.Bidirectional = Bidirectional;\ntfjs_core_1.serialization.SerializationMap.register(Bidirectional);\n\n},{\"../backend/state\":185,\"../backend/tfjs_backend\":186,\"../common\":189,\"../engine/topology\":194,\"../errors\":196,\"../utils/generic_utils\":224,\"../utils/types_utils\":228,\"./recurrent\":214,\"./serialization\":215,\"@tensorflow/tfjs-core\":59}],217:[function(require,module,exports){\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 tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nfunction resolveScalarsInLogs(logs) {\n    return __awaiter(this, void 0, void 0, function () {\n        var promises, keys, scalarsToDispose, key, value, valueScalar, values, i;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    if (logs == null) {\n                        return [2];\n                    }\n                    promises = [];\n                    keys = [];\n                    scalarsToDispose = [];\n                    for (key in logs) {\n                        value = logs[key];\n                        if (typeof value !== 'number') {\n                            valueScalar = value;\n                            promises.push(valueScalar.data());\n                            keys.push(key);\n                            scalarsToDispose.push(valueScalar);\n                        }\n                    }\n                    return [4, Promise.all(promises)];\n                case 1:\n                    values = _a.sent();\n                    for (i = 0; i < values.length; ++i) {\n                        logs[keys[i]] = values[i][0];\n                    }\n                    tfjs_core_1.dispose(scalarsToDispose);\n                    return [2];\n            }\n        });\n    });\n}\nexports.resolveScalarsInLogs = resolveScalarsInLogs;\nfunction disposeTensorsInLogs(logs) {\n    if (logs == null) {\n        return;\n    }\n    for (var key in logs) {\n        var value = logs[key];\n        if (typeof value !== 'number') {\n            value.dispose();\n        }\n    }\n}\nexports.disposeTensorsInLogs = disposeTensorsInLogs;\n\n},{\"@tensorflow/tfjs-core\":59}],218:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfc = require(\"@tensorflow/tfjs-core\");\nvar tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar common_1 = require(\"./backend/common\");\nvar K = require(\"./backend/tfjs_backend\");\nvar state_1 = require(\"./backend/state\");\nvar errors_1 = require(\"./errors\");\nfunction l2Normalize(x, axis) {\n    return tfjs_core_1.tidy(function () {\n        var squareSum = tfc.sum(K.square(x), axis, true);\n        var epsilonTensor = tfc.mul(tfjs_core_1.scalar(common_1.epsilon()), tfc.onesLike(x));\n        var norm = tfc.sqrt(tfc.maximum(squareSum, epsilonTensor));\n        return tfc.div(x, norm);\n    });\n}\nexports.l2Normalize = l2Normalize;\nfunction meanSquaredError(yTrue, yPred) {\n    return tfjs_core_1.tidy(function () { return tfc.mean(K.square(tfc.sub(yPred, yTrue)), -1); });\n}\nexports.meanSquaredError = meanSquaredError;\nfunction meanAbsoluteError(yTrue, yPred) {\n    return tfjs_core_1.tidy(function () { return tfc.mean(tfc.abs(tfc.sub(yPred, yTrue)), -1); });\n}\nexports.meanAbsoluteError = meanAbsoluteError;\nfunction meanAbsolutePercentageError(yTrue, yPred) {\n    return tfjs_core_1.tidy(function () {\n        var diff = tfc.sub(yTrue, yPred);\n        var clippedTrue = tfc.clipByValue(tfc.abs(yTrue), common_1.epsilon(), Number.MAX_VALUE);\n        var absResult = tfc.abs(tfc.div(diff, clippedTrue));\n        return tfc.mul(state_1.getScalar(100.0), tfc.mean(absResult, -1));\n    });\n}\nexports.meanAbsolutePercentageError = meanAbsolutePercentageError;\nfunction meanSquaredLogarithmicError(yTrue, yPred) {\n    return tfjs_core_1.tidy(function () {\n        var one = state_1.getScalar(1.0);\n        var clippedPred = tfc.clipByValue(yPred, common_1.epsilon(), Number.MAX_VALUE);\n        var firstLog = tfc.log(tfc.add(one, clippedPred));\n        var clippedTrue = tfc.clipByValue(yTrue, common_1.epsilon(), Number.MAX_VALUE);\n        var secondLog = tfc.log(tfc.add(one, clippedTrue));\n        return tfc.mean(K.square(tfc.sub(firstLog, secondLog)), -1);\n    });\n}\nexports.meanSquaredLogarithmicError = meanSquaredLogarithmicError;\nfunction squaredHinge(yTrue, yPred) {\n    return tfjs_core_1.tidy(function () {\n        var zeroTensor = state_1.getScalar(0.0);\n        var one = state_1.getScalar(1.0);\n        var maxResult = tfc.maximum(zeroTensor, tfc.sub(one, tfc.mul(yTrue, yPred)));\n        return tfc.mean(K.square(maxResult), -1);\n    });\n}\nexports.squaredHinge = squaredHinge;\nfunction hinge(yTrue, yPred) {\n    return tfjs_core_1.tidy(function () {\n        var zeroTensor = state_1.getScalar(0.0);\n        var one = state_1.getScalar(1.0);\n        var maxResult = tfc.maximum(zeroTensor, tfc.sub(one, tfc.mul(yTrue, yPred)));\n        return tfc.mean(maxResult, -1);\n    });\n}\nexports.hinge = hinge;\nfunction categoricalHinge(yTrue, yPred) {\n    return tfjs_core_1.tidy(function () {\n        var zeroTensor = state_1.getScalar(0.0);\n        var one = state_1.getScalar(1.0);\n        var pos = tfc.sum(tfc.mul(yTrue, yPred), -1);\n        var neg = tfc.max(tfc.mul(tfc.sub(one, yTrue), yPred), -1);\n        return tfc.maximum(zeroTensor, tfc.add(one, tfc.sub(neg, pos)));\n    });\n}\nexports.categoricalHinge = categoricalHinge;\nfunction logcosh(yTrue, yPred) {\n    return tfjs_core_1.tidy(function () {\n        var log2 = state_1.getScalar(Math.log(2.0));\n        var predictionDiff = tfc.sub(yPred, yTrue);\n        var logcoshResult = tfc.sub(tfc.add(predictionDiff, tfc.softplus(tfc.mul(state_1.getScalar(-2.0), predictionDiff))), log2);\n        return tfc.mean(logcoshResult, -1);\n    });\n}\nexports.logcosh = logcosh;\nfunction categoricalCrossentropy(target, output, fromLogits) {\n    if (fromLogits === void 0) { fromLogits = false; }\n    return tfjs_core_1.tidy(function () {\n        if (fromLogits) {\n            output = tfc.softmax(output);\n        }\n        else {\n            var outputSum = tfc.sum(output, output.shape.length - 1, true);\n            output = tfc.div(output, outputSum);\n        }\n        output = tfc.clipByValue(output, common_1.epsilon(), 1 - common_1.epsilon());\n        return tfc.neg(tfc.sum(tfc.mul(target.toFloat(), tfc.log(output)), output.shape.length - 1));\n    });\n}\nexports.categoricalCrossentropy = categoricalCrossentropy;\nfunction sparseCategoricalCrossentropy(target, output, fromLogits) {\n    if (fromLogits === void 0) { fromLogits = false; }\n    return tfjs_core_1.tidy(function () {\n        var flatTarget = tfc.floor(K.flatten(target)).toInt();\n        var outputShape = output.shape;\n        var oneHotTarget = tfc.oneHot(flatTarget, outputShape[outputShape.length - 1])\n            .reshape(outputShape);\n        return categoricalCrossentropy(oneHotTarget, output, fromLogits);\n    });\n}\nexports.sparseCategoricalCrossentropy = sparseCategoricalCrossentropy;\nfunction sigmoidCrossEntropyWithLogits(target, output) {\n    return tfjs_core_1.tidy(function () {\n        var maxOutput = tfc.maximum(output, tfc.zerosLike(output));\n        var outputXTarget = tfc.mul(output, target);\n        var sigmoidOutput = tfc.log(tfc.add(state_1.getScalar(1), tfc.exp(tfc.neg(tfc.abs(output)))));\n        var result = tfc.add(tfc.sub(maxOutput, outputXTarget), sigmoidOutput);\n        return result;\n    });\n}\nexports.sigmoidCrossEntropyWithLogits = sigmoidCrossEntropyWithLogits;\nfunction binaryCrossentropy(yTrue, yPred) {\n    return tfjs_core_1.tidy(function () {\n        var y;\n        y = tfc.clipByValue(yPred, common_1.epsilon(), 1 - common_1.epsilon());\n        y = tfc.log(tfc.div(y, tfc.sub(tfc.onesLike(y), y)));\n        return tfc.mean(sigmoidCrossEntropyWithLogits(yTrue, y), -1);\n    });\n}\nexports.binaryCrossentropy = binaryCrossentropy;\nfunction kullbackLeiblerDivergence(yTrue, yPred) {\n    return tfjs_core_1.tidy(function () {\n        var clippedTrue = tfc.clipByValue(yTrue, common_1.epsilon(), 1);\n        var clippedPred = tfc.clipByValue(yPred, common_1.epsilon(), 1);\n        return tfc.sum(tfc.mul(yTrue, tfc.log(tfc.div(clippedTrue, clippedPred))), -1);\n    });\n}\nexports.kullbackLeiblerDivergence = kullbackLeiblerDivergence;\nfunction poisson(yTrue, yPred) {\n    return tfjs_core_1.tidy(function () {\n        var logPred = tfc.log(tfc.add(state_1.getScalar(common_1.epsilon()), yPred));\n        return tfc.mean(tfc.sub(yPred, tfc.mul(yTrue, logPred)), -1);\n    });\n}\nexports.poisson = poisson;\nfunction cosineProximity(yTrue, yPred) {\n    return tfjs_core_1.tidy(function () {\n        var trueNormalized = l2Normalize(yTrue, -1);\n        var predNormalized = l2Normalize(yPred, -1);\n        var trueXPred = tfc.mul(trueNormalized, predNormalized);\n        return tfc.neg(tfc.sum(trueXPred, -1));\n    });\n}\nexports.cosineProximity = cosineProximity;\nexports.mse = meanSquaredError;\nexports.MSE = meanSquaredError;\nexports.mae = meanAbsoluteError;\nexports.MAE = meanAbsoluteError;\nexports.mape = meanAbsolutePercentageError;\nexports.MAPE = meanAbsolutePercentageError;\nexports.msle = meanSquaredLogarithmicError;\nexports.MSLE = meanSquaredLogarithmicError;\nexports.kld = kullbackLeiblerDivergence;\nexports.KLD = kullbackLeiblerDivergence;\nexports.cosine = cosineProximity;\nfunction get(identifierOrFn) {\n    var lossesMap = {\n        meanSquaredError: meanSquaredError,\n        meanAbsoluteError: meanAbsoluteError,\n        meanAbsolutePercentageError: meanAbsolutePercentageError,\n        meanSquaredLogarithmicError: meanSquaredLogarithmicError,\n        squaredHinge: squaredHinge,\n        hinge: hinge,\n        categoricalHinge: categoricalHinge,\n        logcosh: logcosh,\n        categoricalCrossentropy: categoricalCrossentropy,\n        sparseCategoricalCrossentropy: sparseCategoricalCrossentropy,\n        binaryCrossentropy: binaryCrossentropy,\n        kullbackLeiblerDivergence: kullbackLeiblerDivergence,\n        poisson: poisson,\n        cosineProximity: cosineProximity\n    };\n    if (typeof identifierOrFn === 'string') {\n        if (identifierOrFn in lossesMap) {\n            return lossesMap[identifierOrFn];\n        }\n        throw new errors_1.ValueError(\"Unknown loss \" + identifierOrFn);\n    }\n    else {\n        return identifierOrFn;\n    }\n}\nexports.get = get;\n\n},{\"./backend/common\":184,\"./backend/state\":185,\"./backend/tfjs_backend\":186,\"./errors\":196,\"@tensorflow/tfjs-core\":59}],219:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfc = require(\"@tensorflow/tfjs-core\");\nvar tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar K = require(\"./backend/tfjs_backend\");\nvar state_1 = require(\"./backend/state\");\nvar errors_1 = require(\"./errors\");\nvar losses_1 = require(\"./losses\");\nvar losses_2 = require(\"./losses\");\nfunction binaryAccuracy(yTrue, yPred) {\n    return tfjs_core_1.tidy(function () {\n        var threshold = tfc.mul(state_1.getScalar(0.5), tfc.onesLike(yPred));\n        var yPredThresholded = K.cast(tfc.greater(yPred, threshold), yTrue.dtype);\n        return tfc.mean(tfc.equal(yTrue, yPredThresholded), -1);\n    });\n}\nexports.binaryAccuracy = binaryAccuracy;\nfunction categoricalAccuracy(yTrue, yPred) {\n    return tfjs_core_1.tidy(function () { return K.cast(tfc.equal(tfc.argMax(yTrue, -1), tfc.argMax(yPred, -1)), 'float32'); });\n}\nexports.categoricalAccuracy = categoricalAccuracy;\nfunction binaryCrossentropy(yTrue, yPred) {\n    return losses_2.binaryCrossentropy(yTrue, yPred);\n}\nexports.binaryCrossentropy = binaryCrossentropy;\nfunction sparseCategoricalAccuracy(yTrue, yPred) {\n    throw new errors_1.NotImplementedError();\n}\nexports.sparseCategoricalAccuracy = sparseCategoricalAccuracy;\nfunction topKCategoricalAccuracy(yTrue, yPred) {\n    throw new errors_1.NotImplementedError();\n}\nexports.topKCategoricalAccuracy = topKCategoricalAccuracy;\nfunction sparseTopKCategoricalAccuracy(yTrue, yPred) {\n    throw new errors_1.NotImplementedError();\n}\nexports.sparseTopKCategoricalAccuracy = sparseTopKCategoricalAccuracy;\nexports.mse = losses_1.meanSquaredError;\nexports.MSE = losses_1.meanSquaredError;\nexports.mae = losses_1.meanAbsoluteError;\nexports.MAE = losses_1.meanAbsoluteError;\nexports.mape = losses_1.meanAbsolutePercentageError;\nexports.MAPE = losses_1.meanAbsolutePercentageError;\nexports.categoricalCrossentropy = losses_1.categoricalCrossentropy;\nexports.cosine = losses_1.cosineProximity;\nexports.sparseCategoricalCrossentropy = losses_1.sparseCategoricalCrossentropy;\nfunction get(identifier) {\n    var metricsMap = {\n        binaryAccuracy: binaryAccuracy,\n        categoricalAccuracy: categoricalAccuracy,\n        categoricalCrossentropy: exports.categoricalCrossentropy,\n        sparseCategoricalCrossentropy: exports.sparseCategoricalCrossentropy,\n        mse: exports.mse,\n        MSE: exports.MSE,\n        mae: exports.mae,\n        MAE: exports.MAE,\n        mape: exports.mape,\n        MAPE: exports.MAPE,\n        cosine: exports.cosine,\n    };\n    if (typeof identifier === 'string' && identifier in metricsMap) {\n        return metricsMap[identifier];\n    }\n    else if (typeof identifier !== 'string' && identifier != null) {\n        return identifier;\n    }\n    else {\n        throw new errors_1.ValueError(\"Unknown metric \" + identifier);\n    }\n}\nexports.get = get;\n\n},{\"./backend/state\":185,\"./backend/tfjs_backend\":186,\"./errors\":196,\"./losses\":218,\"@tensorflow/tfjs-core\":59}],220:[function(require,module,exports){\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 tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar state_1 = require(\"./backend/state\");\nvar input_layer_1 = require(\"./engine/input_layer\");\nvar topology_1 = require(\"./engine/topology\");\nvar training_1 = require(\"./engine/training\");\nvar errors_1 = require(\"./errors\");\nvar serialization_1 = require(\"./layers/serialization\");\nvar generic_utils = require(\"./utils/generic_utils\");\nvar serialization_utils_1 = require(\"./utils/serialization_utils\");\nvar types_utils_1 = require(\"./utils/types_utils\");\nfunction modelFromJSON(modelAndWeightsConfig, customObjects) {\n    return __awaiter(this, void 0, void 0, function () {\n        var modelTopology, tsConfig, model, weightValues, uniqueWeightValues, _i, _a, weight, skipMismatches, isNamedTensorMap;\n        return __generator(this, function (_b) {\n            switch (_b.label) {\n                case 0:\n                    modelTopology = modelAndWeightsConfig.modelTopology;\n                    if (modelTopology['model_config'] != null) {\n                        modelTopology = modelTopology['model_config'];\n                    }\n                    tsConfig = serialization_utils_1.convertPythonicToTs(modelTopology);\n                    model = serialization_1.deserialize(tsConfig, customObjects);\n                    if (!(modelAndWeightsConfig.weightsManifest != null)) return [3, 2];\n                    return [4, tfjs_core_1.io.loadWeights(modelAndWeightsConfig.weightsManifest, modelAndWeightsConfig.pathPrefix, model.weights.map(function (weight) { return weight.originalName; }))];\n                case 1:\n                    weightValues = _b.sent();\n                    uniqueWeightValues = {};\n                    for (_i = 0, _a = model.weights; _i < _a.length; _i++) {\n                        weight = _a[_i];\n                        uniqueWeightValues[weight.originalName] =\n                            weightValues[weight.originalName];\n                    }\n                    skipMismatches = null;\n                    isNamedTensorMap = true;\n                    model.loadWeights(uniqueWeightValues, skipMismatches, isNamedTensorMap);\n                    _b.label = 2;\n                case 2: return [2, model];\n            }\n        });\n    });\n}\nexports.modelFromJSON = modelFromJSON;\nfunction loadModelInternal(pathOrIOHandler) {\n    return __awaiter(this, void 0, void 0, function () {\n        var handlers;\n        return __generator(this, function (_a) {\n            if (typeof pathOrIOHandler === 'string') {\n                handlers = tfjs_core_1.io.getLoadHandlers(pathOrIOHandler);\n                if (handlers.length === 0) {\n                    handlers.push(tfjs_core_1.io.browserHTTPRequest(pathOrIOHandler));\n                }\n                else if (handlers.length > 1) {\n                    throw new errors_1.ValueError(\"Found more than one (\" + handlers.length + \") load handlers for \" +\n                        (\"URL '\" + pathOrIOHandler + \"'\"));\n                }\n                pathOrIOHandler = handlers[0];\n            }\n            return [2, loadModelFromIOHandler(pathOrIOHandler)];\n        });\n    });\n}\nexports.loadModelInternal = loadModelInternal;\nfunction loadModelFromIOHandler(handler, customObjects) {\n    return __awaiter(this, void 0, void 0, function () {\n        var artifacts, modelTopology, model, skipMismatch, isNamedTensorMap;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    if (handler.load == null) {\n                        throw new errors_1.ValueError('Cannot proceed with model loading because the IOHandler provided ' +\n                            'does not have the `load` method implemented.');\n                    }\n                    return [4, handler.load()];\n                case 1:\n                    artifacts = _a.sent();\n                    modelTopology = artifacts.modelTopology;\n                    if (modelTopology['model_config'] != null) {\n                        modelTopology = modelTopology['model_config'];\n                    }\n                    model = serialization_1.deserialize(serialization_utils_1.convertPythonicToTs(modelTopology), customObjects);\n                    if (artifacts.weightData != null) {\n                        if (artifacts.weightSpecs == null) {\n                            throw new errors_1.ValueError('Model artifacts contains weight data, but not weight specs. ' +\n                                'Therefore loading of weights cannot proceed.');\n                        }\n                        skipMismatch = false;\n                        isNamedTensorMap = true;\n                        model.loadWeights(tfjs_core_1.io.decodeWeights(artifacts.weightData, artifacts.weightSpecs), skipMismatch, isNamedTensorMap);\n                    }\n                    return [2, model];\n            }\n        });\n    });\n}\nexports.loadModelFromIOHandler = loadModelFromIOHandler;\nvar Sequential = (function (_super) {\n    __extends(Sequential, _super);\n    function Sequential(config) {\n        var _this = _super.call(this, { inputs: [], outputs: [] }) || this;\n        config = config || {};\n        _this.trainable = true;\n        _this._updatable = true;\n        _this.built = false;\n        _this.name = (config.name != null) ? config.name : state_1.getUid('sequential_');\n        if (config.layers != null) {\n            for (var _i = 0, _a = config.layers; _i < _a.length; _i++) {\n                var layer = _a[_i];\n                _this.add(layer);\n            }\n        }\n        return _this;\n    }\n    Sequential.prototype.add = function (layer) {\n        var isLayerModelInstance = layer instanceof Sequential || layer instanceof training_1.Model;\n        var modelLayer;\n        if (isLayerModelInstance) {\n            modelLayer = layer;\n            if (modelLayer.outputs.length !== 1) {\n                throw new errors_1.ValueError('All layers in a Sequential model ' +\n                    'should have a single output tensor. ' +\n                    'For multi-output layers, ' +\n                    'use the functional API.');\n            }\n            if (modelLayer.inputs.length !== 1) {\n                throw new errors_1.ValueError('All layers in a Sequential model ' +\n                    'should have a single input tensor. ' +\n                    'For multi-input layers, ' +\n                    'use the functional API.');\n            }\n        }\n        if (this.outputs.length === 0) {\n            if (layer.inboundNodes.length === 0) {\n                if (layer.batchInputShape == null) {\n                    throw new errors_1.ValueError('The first layer in a Sequential model must ' +\n                        'get an `inputShape` or `batchInputShape` argument.');\n                }\n                var x = input_layer_1.Input({\n                    batchShape: layer.batchInputShape,\n                    dtype: layer.dtype,\n                    name: layer.name + '_input'\n                });\n                layer.apply(x);\n            }\n            if (isLayerModelInstance) {\n                this.outputs = modelLayer.outputs;\n                this.inputs = modelLayer.inputs;\n            }\n            else {\n                if (layer.inboundNodes.length !== 1) {\n                    throw new errors_1.ValueError('A layer added to a Sequential model must not already be ' +\n                        (\"connected somewhere else. Model received layer \" + layer.name + \" \") +\n                        (\"which has \" + layer.inboundNodes.length + \" pre-existing inbound \") +\n                        'connections.');\n                }\n                if (layer.inboundNodes[0].outputTensors.length !== 1) {\n                    throw new errors_1.ValueError('All layers in a Sequential model ' +\n                        'should have a single output tensor. ' +\n                        'For multi-output layers, ' +\n                        'use the functional API.');\n                }\n                this.outputs = [layer.inboundNodes[0].outputTensors[0]];\n                this.inputs = topology_1.getSourceInputs(this.outputs[0]);\n            }\n            this.inboundNodes = [];\n            new topology_1.Node({\n                outboundLayer: this,\n                inboundLayers: [],\n                nodeIndices: [],\n                tensorIndices: [],\n                inputTensors: this.inputs,\n                outputTensors: this.outputs,\n                inputMasks: generic_utils.pyListRepeat(null, this.inputs.length),\n                outputMasks: [null],\n                inputShapes: this.inputs.map(function (x) { return x.shape; }),\n                outputShapes: this.outputs[0].shape\n            });\n        }\n        else {\n            var outputTensor = layer.apply(this.outputs[0]);\n            if (Array.isArray(outputTensor)) {\n                throw new TypeError('All layers in a Sequential model ' +\n                    'should have a single output tensor. ' +\n                    'For multi-output layers, ' +\n                    'use the functional API.');\n            }\n            this.outputs = [outputTensor];\n            this.inboundNodes[0].outputTensors = this.outputs;\n            this.inboundNodes[0].outputShapes = [this.outputs[0].shape];\n        }\n        this.layers.push(layer);\n        this.built = false;\n    };\n    Sequential.prototype.pop = function () {\n        if (this.layers.length === 0) {\n            throw new TypeError('There are no layers in the model.');\n        }\n        this.layers.pop();\n        if (this.layers.length === 0) {\n            this.outputs = [];\n            this.inboundNodes = [];\n            this.outboundNodes = [];\n        }\n        else {\n            var lastLayerIndex = this.layers.length - 1;\n            this.layers[lastLayerIndex].outboundNodes = [];\n            this.outputs = [this.layers[lastLayerIndex].output];\n            this.inboundNodes[0].outputTensors = this.outputs;\n            this.inboundNodes[0].outputShapes = [this.outputs[0].shape];\n        }\n    };\n    Sequential.prototype.call = function (inputs, kwargs) {\n        if (this.model == null) {\n            this.build();\n        }\n        return this.model.call(inputs, kwargs);\n    };\n    Sequential.prototype.build = function (inputShape) {\n        types_utils_1.getExactlyOneShape(inputShape);\n        if (this.inputs.length === 0 || this.outputs.length === 0) {\n            throw new TypeError('Sequential model cannot be built: model is empty.' +\n                ' Add some layers first.');\n        }\n        this.model = new training_1.Model({\n            inputs: this.inputs,\n            outputs: this.outputs[0],\n            name: this.name + '_model'\n        });\n        this.model.trainable = this.trainable;\n        this.model.updatable = this.updatable;\n        this.supportsMasking = this.model.supportsMasking;\n        this.inputLayers = this.model.inputLayers;\n        this.inputLayersNodeIndices = this.model.inputLayersNodeIndices;\n        this.inputLayersTensorIndices = this.model.inputLayersTensorIndices;\n        this.outputLayers = this.model.outputLayers;\n        this.outputLayersNodeIndices = this.model.outputLayersNodeIndices;\n        this.outputLayersTensorIndices = this.model.outputLayersTensorIndices;\n        this.nodesByDepth = this.model.nodesByDepth;\n        this.containerNodes = this.model.containerNodes;\n        this.outputNames = this.model.outputNames;\n        this.inputNames = this.model.inputNames;\n        this.built = true;\n    };\n    Sequential.prototype.countParams = function () {\n        if (!this.built) {\n            this.build();\n        }\n        return _super.prototype.countParams.call(this);\n    };\n    Sequential.prototype.summary = function (lineLength, positions, printFn) {\n        if (printFn === void 0) { printFn = console.log; }\n        if (!this.built) {\n            this.build();\n        }\n        _super.prototype.summary.call(this, lineLength, positions, printFn);\n    };\n    Sequential.prototype.setWeights = function (weights) {\n        if (this.model == null) {\n            this.build();\n        }\n        this.model.setWeights(weights);\n    };\n    Object.defineProperty(Sequential.prototype, \"updatable\", {\n        get: function () {\n            return this._updatable;\n        },\n        set: function (value) {\n            if (this.built) {\n                this.model.updatable = value;\n            }\n            this._updatable = value;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Sequential.prototype.evaluate = function (x, y, config) {\n        if (config === void 0) { config = {}; }\n        if (!this.built) {\n            throw new errors_1.RuntimeError('The model needs to be compiled before being used.');\n        }\n        return this.model.evaluate(x, y, config);\n    };\n    Sequential.prototype.predict = function (x, config) {\n        if (config === void 0) { config = {}; }\n        if (this.model == null) {\n            this.build();\n        }\n        return this.model.predict(x, config);\n    };\n    Sequential.prototype.predictOnBatch = function (x) {\n        if (this.model == null) {\n            this.build();\n        }\n        return this.model.predictOnBatch(x);\n    };\n    Sequential.prototype.compile = function (config) {\n        this.build();\n        this.model.compile(config);\n        this.optimizer = this.model.optimizer;\n        this.loss = this.model.loss;\n        this.metrics = this.model.metrics;\n        this.metricsTensors = this.model.metricsTensors;\n        this.metricsNames = this.model.metricsNames;\n    };\n    Sequential.prototype.fit = function (x, y, config) {\n        if (config === void 0) { config = {}; }\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                if (!this.built) {\n                    throw new errors_1.RuntimeError('The model needs to be compiled before ' +\n                        'being used.');\n                }\n                return [2, this.model.fit(x, y, config)];\n            });\n        });\n    };\n    Sequential.fromConfig = function (cls, config) {\n        var model = new cls({});\n        if (!(model instanceof Sequential)) {\n            throw new errors_1.ValueError(\"Sequential.fromConfig called on non-Sequential input: \" + model);\n        }\n        if (!(config instanceof Array)) {\n            throw new errors_1.ValueError(\"Sequential.fromConfig called without an array of configs\");\n        }\n        if (!(config[0].className != null) || config[0]['className'] === 'Merge') {\n            throw new errors_1.ValueError('Legacy serialization format not supported yet.');\n        }\n        for (var _i = 0, _a = config; _i < _a.length; _i++) {\n            var conf = _a[_i];\n            var layer = serialization_1.deserialize(conf);\n            model.add(layer);\n        }\n        return model;\n    };\n    Sequential.prototype.getConfig = function () {\n        var config = [];\n        for (var _i = 0, _a = this.layers; _i < _a.length; _i++) {\n            var layer = _a[_i];\n            config.push({\n                className: layer.getClassName(),\n                config: layer.getConfig(),\n            });\n        }\n        return config;\n    };\n    Sequential.className = 'Sequential';\n    return Sequential;\n}(training_1.Model));\nexports.Sequential = Sequential;\ntfjs_core_1.serialization.SerializationMap.register(Sequential);\n\n},{\"./backend/state\":185,\"./engine/input_layer\":193,\"./engine/topology\":194,\"./engine/training\":195,\"./errors\":196,\"./layers/serialization\":215,\"./utils/generic_utils\":224,\"./utils/serialization_utils\":227,\"./utils/types_utils\":228,\"@tensorflow/tfjs-core\":59}],221:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar common_1 = require(\"./backend/common\");\nvar errors_1 = require(\"./errors\");\nfunction getOptimizer(identifier) {\n    var optimizerMap = {\n        'Adagrad': function () { return tfjs_core_1.train.adagrad(0.01); },\n        'Adadelta': function () { return tfjs_core_1.train.adadelta(1, 0.95, common_1.epsilon()); },\n        'Adam': function () { return tfjs_core_1.train.adam(0.001, 0.9, 0.999, common_1.epsilon()); },\n        'Adamax': function () { return tfjs_core_1.train.adamax(0.002, 0.9, 0.999, common_1.epsilon(), 0); },\n        'RMSProp': function () { return tfjs_core_1.train.rmsprop(0.001, 0.9, 0, common_1.epsilon()); },\n        'SGD': function () { return tfjs_core_1.train.sgd(0.01); }\n    };\n    optimizerMap['adagrad'] = optimizerMap['Adagrad'];\n    optimizerMap['adadelta'] = optimizerMap['Adadelta'];\n    optimizerMap['adam'] = optimizerMap['Adam'];\n    optimizerMap['adamax'] = optimizerMap['Adamax'];\n    optimizerMap['rmsprop'] = optimizerMap['RMSProp'];\n    optimizerMap['sgd'] = optimizerMap['SGD'];\n    if (identifier in optimizerMap) {\n        return optimizerMap[identifier]();\n    }\n    throw new errors_1.ValueError(\"Unknown Optimizer \" + identifier);\n}\nexports.getOptimizer = getOptimizer;\n\n},{\"./backend/common\":184,\"./errors\":196,\"@tensorflow/tfjs-core\":59}],222:[function(require,module,exports){\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})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfc = require(\"@tensorflow/tfjs-core\");\nvar tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar state_1 = require(\"./backend/state\");\nvar K = require(\"./backend/tfjs_backend\");\nvar generic_utils_1 = require(\"./utils/generic_utils\");\nvar Regularizer = (function (_super) {\n    __extends(Regularizer, _super);\n    function Regularizer() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    return Regularizer;\n}(tfjs_core_1.serialization.Serializable));\nexports.Regularizer = Regularizer;\nvar L1L2 = (function (_super) {\n    __extends(L1L2, _super);\n    function L1L2(config) {\n        var _this = _super.call(this) || this;\n        var l1 = config == null || config.l1 == null ? 0.01 : config.l1;\n        var l2 = config == null || config.l2 == null ? 0.01 : config.l2;\n        _this.hasL1 = l1 !== 0;\n        _this.hasL2 = l2 !== 0;\n        _this.l1 = state_1.getScalar(l1);\n        _this.l2 = state_1.getScalar(l2);\n        return _this;\n    }\n    L1L2.prototype.apply = function (x) {\n        var _this = this;\n        return tfjs_core_1.tidy(function () {\n            var regularization = tfjs_core_1.zeros([1]);\n            if (_this.hasL1) {\n                regularization = tfjs_core_1.add(regularization, tfjs_core_1.sum(tfc.mul(_this.l1, tfjs_core_1.abs(x))));\n            }\n            if (_this.hasL2) {\n                regularization =\n                    tfjs_core_1.add(regularization, tfjs_core_1.sum(tfc.mul(_this.l2, K.square(x))));\n            }\n            return regularization.asScalar();\n        });\n    };\n    L1L2.prototype.getConfig = function () {\n        return { 'l1': this.l1.dataSync()[0], 'l2': this.l2.dataSync()[0] };\n    };\n    L1L2.fromConfig = function (cls, config) {\n        return new cls({ l1: config.l1, l2: config.l2 });\n    };\n    L1L2.className = 'L1L2';\n    return L1L2;\n}(Regularizer));\nexports.L1L2 = L1L2;\ntfjs_core_1.serialization.SerializationMap.register(L1L2);\nfunction l1(config) {\n    return new L1L2({ l1: config != null ? config.l1 : null, l2: 0 });\n}\nexports.l1 = l1;\nfunction l2(config) {\n    return new L1L2({ l2: config != null ? config.l2 : null, l1: 0 });\n}\nexports.l2 = l2;\nexports.REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP = {\n    'l1l2': 'L1L2'\n};\nfunction serializeRegularizer(constraint) {\n    return generic_utils_1.serializeKerasObject(constraint);\n}\nexports.serializeRegularizer = serializeRegularizer;\nfunction deserializeRegularizer(config, customObjects) {\n    if (customObjects === void 0) { customObjects = {}; }\n    return generic_utils_1.deserializeKerasObject(config, tfjs_core_1.serialization.SerializationMap.getMap().classNameMap, customObjects, 'regularizer');\n}\nexports.deserializeRegularizer = deserializeRegularizer;\nfunction getRegularizer(identifier) {\n    if (identifier == null) {\n        return null;\n    }\n    if (typeof identifier === 'string') {\n        var className = identifier in exports.REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP ?\n            exports.REGULARIZER_IDENTIFIER_REGISTRY_SYMBOL_MAP[identifier] :\n            identifier;\n        var config = { className: className, config: {} };\n        return deserializeRegularizer(config);\n    }\n    else if (identifier instanceof Regularizer) {\n        return identifier;\n    }\n    else {\n        return deserializeRegularizer(identifier);\n    }\n}\nexports.getRegularizer = getRegularizer;\n\n},{\"./backend/state\":185,\"./backend/tfjs_backend\":186,\"./utils/generic_utils\":224,\"@tensorflow/tfjs-core\":59}],223:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar errors_1 = require(\"../errors\");\nvar generic_utils_1 = require(\"./generic_utils\");\nvar math_utils_1 = require(\"./math_utils\");\nfunction normalizeArray(value, n, name) {\n    if (typeof value === 'number') {\n        return generic_utils_1.pyListRepeat(value, n);\n    }\n    else {\n        if (value.length !== n) {\n            throw new errors_1.ValueError(\"The \" + name + \" argument must be a tuple of \" + n + \" integers. Received: \" +\n                (value.length + \" elements.\"));\n        }\n        for (var i = 0; i < n; ++i) {\n            var singleValue = value[i];\n            if (!math_utils_1.isInteger(singleValue)) {\n                throw new errors_1.ValueError(\"The \" + name + \" argument must be a tuple of \" + n + \" integers. Received: \" +\n                    (JSON.stringify(value) + \" including a non-integer number \") +\n                    (\"\" + singleValue));\n            }\n        }\n        return value;\n    }\n}\nexports.normalizeArray = normalizeArray;\nfunction convOutputLength(inputLength, filterSize, padding, stride, dilation) {\n    if (dilation === void 0) { dilation = 1; }\n    if (inputLength == null) {\n        return inputLength;\n    }\n    var dilatedFilterSize = filterSize + (filterSize - 1) * (dilation - 1);\n    var outputLength;\n    if (padding === 'same') {\n        outputLength = inputLength;\n    }\n    else {\n        outputLength = inputLength - dilatedFilterSize + 1;\n    }\n    return Math.floor((outputLength + stride - 1) / stride);\n}\nexports.convOutputLength = convOutputLength;\nfunction deconvLength(dimSize, strideSize, kernelSize, padding) {\n    if (dimSize == null) {\n        return null;\n    }\n    if (padding === 'valid') {\n        dimSize = dimSize * strideSize + math_utils_1.max([kernelSize - strideSize, 0]);\n    }\n    else if (padding === 'same') {\n        dimSize = dimSize * strideSize;\n    }\n    else {\n        throw new errors_1.ValueError(\"Unsupport padding mode: \" + padding + \".\");\n    }\n    return dimSize;\n}\nexports.deconvLength = deconvLength;\n\n},{\"../errors\":196,\"./generic_utils\":224,\"./math_utils\":226}],224:[function(require,module,exports){\n\"use strict\";\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\n    for (var s, i = 1, n = arguments.length; i < n; i++) {\n        s = arguments[i];\n        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n            t[p] = s[p];\n    }\n    return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar errors_1 = require(\"../errors\");\nfunction pyListRepeat(value, numValues) {\n    if (Array.isArray(value)) {\n        var newArray = [];\n        for (var i = 0; i < numValues; i++) {\n            newArray = newArray.concat(value);\n        }\n        return newArray;\n    }\n    else {\n        var newArray = new Array(numValues);\n        newArray.fill(value);\n        return newArray;\n    }\n}\nexports.pyListRepeat = pyListRepeat;\nfunction assert(val, message) {\n    if (!val) {\n        throw new errors_1.AssertionError(message);\n    }\n}\nexports.assert = assert;\nfunction count(array, refernce) {\n    var counter = 0;\n    for (var _i = 0, array_1 = array; _i < array_1.length; _i++) {\n        var item = array_1[_i];\n        if (item === refernce) {\n            counter++;\n        }\n    }\n    return counter;\n}\nexports.count = count;\nfunction singletonOrArray(xs) {\n    if (xs.length === 1) {\n        return xs[0];\n    }\n    return xs;\n}\nexports.singletonOrArray = singletonOrArray;\nfunction toList(x) {\n    if (Array.isArray(x)) {\n        return x;\n    }\n    return [x];\n}\nexports.toList = toList;\nfunction objectListUid(objs) {\n    var objectList = toList(objs);\n    var retVal = '';\n    for (var _i = 0, objectList_1 = objectList; _i < objectList_1.length; _i++) {\n        var obj = objectList_1[_i];\n        if (obj.id == null) {\n            throw new errors_1.ValueError(\"Object \" + obj + \" passed to objectListUid without an id\");\n        }\n        if (retVal !== '') {\n            retVal = retVal + ', ';\n        }\n        retVal = retVal + Math.abs(obj.id);\n    }\n    return retVal;\n}\nexports.objectListUid = objectListUid;\nfunction toSnakeCase(name) {\n    var intermediate = name.replace(/(.)([A-Z][a-z0-9]+)/g, '$1_$2');\n    var insecure = intermediate.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase();\n    if (insecure[0] !== '_') {\n        return insecure;\n    }\n    return 'private' + insecure;\n}\nexports.toSnakeCase = toSnakeCase;\nfunction toCamelCase(identifier) {\n    if (identifier.length <= 1) {\n        return identifier;\n    }\n    if (identifier.indexOf('_') === -1) {\n        return identifier;\n    }\n    return identifier.replace(/[_]+(\\w|$)/g, function (m, p1) { return p1.toUpperCase(); });\n}\nexports.toCamelCase = toCamelCase;\nvar _GLOBAL_CUSTOM_OBJECTS = {};\nfunction serializeKerasObject(instance) {\n    if (instance === null || instance === undefined) {\n        return null;\n    }\n    return { className: instance.getClassName(), config: instance.getConfig() };\n}\nexports.serializeKerasObject = serializeKerasObject;\nfunction deserializeKerasObject(identifier, moduleObjects, customObjects, printableModuleName) {\n    if (moduleObjects === void 0) { moduleObjects = {}; }\n    if (customObjects === void 0) { customObjects = {}; }\n    if (printableModuleName === void 0) { printableModuleName = 'object'; }\n    if (typeof identifier === 'string') {\n        var functionName = identifier;\n        var fn = void 0;\n        if (functionName in customObjects) {\n            fn = customObjects[functionName];\n        }\n        else if (functionName in _GLOBAL_CUSTOM_OBJECTS) {\n            fn = _GLOBAL_CUSTOM_OBJECTS[functionName];\n        }\n        else {\n            fn = moduleObjects[functionName];\n            if (fn == null) {\n                throw new errors_1.ValueError(\"Unknown \" + printableModuleName + \": \" + identifier);\n            }\n        }\n        return fn;\n    }\n    else {\n        var config = identifier;\n        if (config.className == null || config.config == null) {\n            throw new errors_1.ValueError(printableModuleName + \": Improper config format: \" +\n                (JSON.stringify(config) + \".\\n\") +\n                \"'className' and 'config' must set.\");\n        }\n        var className = config.className;\n        var cls = void 0, fromConfig = void 0;\n        if (className in customObjects) {\n            _a = customObjects.get(className), cls = _a[0], fromConfig = _a[1];\n        }\n        else if (className in _GLOBAL_CUSTOM_OBJECTS) {\n            _b = _GLOBAL_CUSTOM_OBJECTS.className, cls = _b[0], fromConfig = _b[1];\n        }\n        else if (className in moduleObjects) {\n            _c = moduleObjects[className], cls = _c[0], fromConfig = _c[1];\n        }\n        if (cls == null) {\n            throw new errors_1.ValueError(\"Unknown \" + printableModuleName + \": \" + className);\n        }\n        if (fromConfig != null) {\n            var customObjectsCombined = {};\n            for (var _i = 0, _d = Object.keys(_GLOBAL_CUSTOM_OBJECTS); _i < _d.length; _i++) {\n                var key = _d[_i];\n                customObjectsCombined[key] = _GLOBAL_CUSTOM_OBJECTS[key];\n            }\n            for (var _e = 0, _f = Object.keys(customObjects); _e < _f.length; _e++) {\n                var key = _f[_e];\n                customObjectsCombined[key] = customObjects[key];\n            }\n            var nestedConfig = config.config;\n            nestedConfig.customObjects = customObjectsCombined;\n            var backupCustomObjects = __assign({}, _GLOBAL_CUSTOM_OBJECTS);\n            for (var _g = 0, _h = Object.keys(customObjects); _g < _h.length; _g++) {\n                var key = _h[_g];\n                _GLOBAL_CUSTOM_OBJECTS[key] = customObjects[key];\n            }\n            var returnObj = fromConfig(cls, config.config);\n            _GLOBAL_CUSTOM_OBJECTS = __assign({}, backupCustomObjects);\n            return returnObj;\n        }\n        else {\n            var backupCustomObjects = __assign({}, _GLOBAL_CUSTOM_OBJECTS);\n            for (var _j = 0, _k = Object.keys(customObjects); _j < _k.length; _j++) {\n                var key = _k[_j];\n                _GLOBAL_CUSTOM_OBJECTS[key] = customObjects[key];\n            }\n            var returnObj = new cls(config.config);\n            _GLOBAL_CUSTOM_OBJECTS = __assign({}, backupCustomObjects);\n            return returnObj;\n        }\n    }\n    var _a, _b, _c;\n}\nexports.deserializeKerasObject = deserializeKerasObject;\nfunction numberCompare(a, b) {\n    return (a < b) ? -1 : ((a > b) ? 1 : 0);\n}\nexports.numberCompare = numberCompare;\nfunction reverseNumberCompare(a, b) {\n    return -1 * numberCompare(a, b);\n}\nexports.reverseNumberCompare = reverseNumberCompare;\nfunction stringToDType(dtype) {\n    switch (dtype) {\n        case 'float32':\n            return 'float32';\n        default:\n            throw new errors_1.ValueError(\"Invalid dtype: \" + dtype);\n    }\n}\nexports.stringToDType = stringToDType;\nfunction stringsEqual(xs, ys) {\n    if (xs == null || ys == null) {\n        return xs === ys;\n    }\n    if (xs.length !== ys.length) {\n        return false;\n    }\n    for (var i = 0; i < xs.length; ++i) {\n        if (xs[i] !== ys[i]) {\n            return false;\n        }\n    }\n    return true;\n}\nexports.stringsEqual = stringsEqual;\nfunction unique(xs) {\n    if (xs == null) {\n        return xs;\n    }\n    var out = [];\n    for (var _i = 0, xs_1 = xs; _i < xs_1.length; _i++) {\n        var x = xs_1[_i];\n        if (out.indexOf(x) === -1) {\n            out.push(x);\n        }\n    }\n    return out;\n}\nexports.unique = unique;\nfunction isObjectEmpty(obj) {\n    if (obj == null) {\n        throw new errors_1.ValueError(\"Invalid value in obj: \" + JSON.stringify(obj));\n    }\n    for (var key in obj) {\n        if (obj.hasOwnProperty(key)) {\n            return false;\n        }\n    }\n    return true;\n}\nexports.isObjectEmpty = isObjectEmpty;\nfunction checkStringTypeUnionValue(values, label, value) {\n    if (value == null) {\n        return;\n    }\n    if (values.indexOf(value) < 0) {\n        throw new errors_1.ValueError(value + \" is not a valid \" + label + \".  Valid values are \" + values + \" or null/undefined.\");\n    }\n}\nexports.checkStringTypeUnionValue = checkStringTypeUnionValue;\nfunction checkArrayTypeAndLength(x, expectedType, minLength, maxLength) {\n    if (minLength === void 0) { minLength = 0; }\n    if (maxLength === void 0) { maxLength = Infinity; }\n    assert(minLength >= 0);\n    assert(maxLength >= minLength);\n    return (Array.isArray(x) && x.length >= minLength && x.length <= maxLength &&\n        x.every(function (e) { return typeof e === expectedType; }));\n}\nexports.checkArrayTypeAndLength = checkArrayTypeAndLength;\n\n},{\"../errors\":196}],225:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar variable_utils_1 = require(\"./variable_utils\");\nfunction printSummary(model, lineLength, positions, printFn) {\n    if (printFn === void 0) { printFn = console.log; }\n    var sequentialLike = isModelSequentialLike(model);\n    var toDisplay = ['Layer (type)', 'Output shape', 'Param #'];\n    if (sequentialLike) {\n        lineLength = lineLength || 65;\n        positions = positions || [0.45, 0.85, 1];\n    }\n    else {\n        lineLength = lineLength || 98;\n        positions = positions || [0.33, 0.55, 0.67, 1];\n    }\n    if (positions[positions.length - 1] <= 1) {\n        positions = positions.map(function (p) { return Math.floor(lineLength * p); });\n    }\n    var relevantNodes;\n    if (!sequentialLike) {\n        toDisplay.push('Receives inputs');\n        relevantNodes = [];\n        for (var depth in model.nodesByDepth) {\n            relevantNodes.push.apply(relevantNodes, model.nodesByDepth[depth]);\n        }\n    }\n    printFn('_'.repeat(lineLength));\n    printRow(toDisplay, positions, printFn);\n    printFn('='.repeat(lineLength));\n    var layers = model.layers;\n    for (var i = 0; i < layers.length; ++i) {\n        if (sequentialLike) {\n            printLayerSummary(layers[i], positions, printFn);\n        }\n        else {\n            printLayerSummaryWithConnections(layers[i], positions, relevantNodes, printFn);\n        }\n        printFn((i === layers.length - 1 ? '=' : '_').repeat(lineLength));\n    }\n    model.checkTrainableWeightsConsistency();\n    var trainableCount;\n    if (model.collectedTrainableWeights != null) {\n        trainableCount =\n            variable_utils_1.countParamsInWeights(model.collectedTrainableWeights);\n    }\n    else {\n        trainableCount = variable_utils_1.countParamsInWeights(model.trainableWeights);\n    }\n    var nonTrainableCount = variable_utils_1.countParamsInWeights(model.nonTrainableWeights);\n    printFn(\"Total params: \" + (trainableCount + nonTrainableCount));\n    printFn(\"Trainable params: \" + trainableCount);\n    printFn(\"Non-trainable params: \" + nonTrainableCount);\n    printFn('_'.repeat(lineLength));\n}\nexports.printSummary = printSummary;\nfunction isModelSequentialLike(model) {\n    var sequentialLike = true;\n    var nodesByDepth = [];\n    var nodes = [];\n    for (var depth in model.nodesByDepth) {\n        nodesByDepth.push(model.nodesByDepth[depth]);\n    }\n    for (var _i = 0, nodesByDepth_1 = nodesByDepth; _i < nodesByDepth_1.length; _i++) {\n        var depthNodes = nodesByDepth_1[_i];\n        if (depthNodes.length > 1 ||\n            depthNodes.length === 1 && depthNodes[0].inboundLayers.length > 1) {\n            sequentialLike = false;\n            break;\n        }\n        nodes.push.apply(nodes, depthNodes);\n    }\n    if (sequentialLike) {\n        for (var _a = 0, _b = model.layers; _a < _b.length; _a++) {\n            var layer = _b[_a];\n            var flag = false;\n            for (var _c = 0, _d = layer.inboundNodes; _c < _d.length; _c++) {\n                var node = _d[_c];\n                if (nodes.indexOf(node) !== -1) {\n                    if (flag) {\n                        sequentialLike = false;\n                        break;\n                    }\n                    else {\n                        flag = true;\n                    }\n                }\n            }\n            if (!sequentialLike) {\n                break;\n            }\n        }\n    }\n    return sequentialLike;\n}\nfunction printRow(fields, positions, printFn) {\n    if (printFn === void 0) { printFn = console.log; }\n    var line = '';\n    for (var i = 0; i < fields.length; ++i) {\n        if (i > 0) {\n            line = line.slice(0, line.length - 1) + ' ';\n        }\n        line += fields[i];\n        line = line.slice(0, positions[i]);\n        line += ' '.repeat(positions[i] - line.length);\n    }\n    printFn(line);\n}\nfunction printLayerSummary(layer, positions, printFn) {\n    var outputShape;\n    try {\n        outputShape = JSON.stringify(layer.outputShape);\n    }\n    catch (err) {\n        outputShape = 'multiple';\n    }\n    var name = layer.name;\n    var className = layer.getClassName();\n    var fields = [name + \" (\" + className + \")\", outputShape, layer.countParams().toString()];\n    printRow(fields, positions, printFn);\n}\nfunction printLayerSummaryWithConnections(layer, positions, relevantNodes, printFn) {\n    var outputShape;\n    try {\n        outputShape = JSON.stringify(layer.outputShape);\n    }\n    catch (err) {\n        outputShape = 'multiple';\n    }\n    var connections = [];\n    for (var _i = 0, _a = layer.inboundNodes; _i < _a.length; _i++) {\n        var node = _a[_i];\n        if (relevantNodes != null && relevantNodes.length > 0 &&\n            relevantNodes.indexOf(node) === -1) {\n            continue;\n        }\n        for (var i = 0; i < node.inboundLayers.length; ++i) {\n            var inboundLayer = node.inboundLayers[i].name;\n            var inboundLayerIndex = node.nodeIndices[i];\n            var inboundTensorIndex = node.tensorIndices[i];\n            connections.push(inboundLayer + \"[\" + inboundLayerIndex + \"][\" + inboundTensorIndex + \"]\");\n        }\n    }\n    var name = layer.name;\n    var className = layer.getClassName();\n    var firstConnection = connections.length === 0 ? '' : connections[0];\n    var fields = [\n        name + \" (\" + className + \")\", outputShape, layer.countParams().toString(),\n        firstConnection\n    ];\n    printRow(fields, positions, printFn);\n    for (var i = 1; i < connections.length; ++i) {\n        printRow(['', '', '', connections[i]], positions, printFn);\n    }\n}\n\n},{\"./variable_utils\":229}],226:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfc = require(\"@tensorflow/tfjs-core\");\nvar tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar errors_1 = require(\"../errors\");\nfunction isInteger(x) {\n    return x === parseInt(x.toString(), 10);\n}\nexports.isInteger = isInteger;\nfunction arrayProd(array, begin, end) {\n    if (begin == null) {\n        begin = 0;\n    }\n    if (end == null) {\n        end = array.length;\n    }\n    var prod = 1;\n    for (var i = begin; i < end; ++i) {\n        prod *= array[i];\n    }\n    return prod;\n}\nexports.arrayProd = arrayProd;\nfunction toArray1D(array) {\n    array = Array.isArray(array) ? new Float32Array(array) : array;\n    return tfjs_core_1.tensor1d(array);\n}\nfunction min(array) {\n    return tfc.min(toArray1D(array)).dataSync()[0];\n}\nexports.min = min;\nfunction max(array) {\n    return tfc.max(toArray1D(array)).dataSync()[0];\n}\nexports.max = max;\nfunction sum(array) {\n    return tfc.sum(toArray1D(array)).dataSync()[0];\n}\nexports.sum = sum;\nfunction mean(array) {\n    return sum(array) / array.length;\n}\nexports.mean = mean;\nfunction variance(array) {\n    var demeaned = tfc.sub(toArray1D(array), tfjs_core_1.scalar(mean(array)));\n    var sumSquare = tfc.sum(tfc.mulStrict(demeaned, demeaned)).dataSync()[0];\n    return sumSquare / array.length;\n}\nexports.variance = variance;\nfunction median(array) {\n    var arraySorted = array.slice().sort(function (a, b) { return a - b; });\n    var lowIdx = Math.floor((arraySorted.length - 1) / 2);\n    var highIdx = Math.ceil((arraySorted.length - 1) / 2);\n    if (lowIdx === highIdx) {\n        return arraySorted[lowIdx];\n    }\n    return (arraySorted[lowIdx] + arraySorted[highIdx]) / 2;\n}\nexports.median = median;\nfunction range(begin, end) {\n    if (end < begin) {\n        throw new errors_1.ValueError(\"end (\" + end + \") < begin (\" + begin + \") is forbidden.\");\n    }\n    var out = [];\n    for (var i = begin; i < end; ++i) {\n        out.push(i);\n    }\n    return out;\n}\nexports.range = range;\n\n},{\"../errors\":196,\"@tensorflow/tfjs-core\":59}],227:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar generic_utils = require(\"../utils/generic_utils\");\nfunction isArrayItemInputOrOutputName(key, index, value) {\n    return (key === 'inboundNodes' || key === 'outputLayers' ||\n        key === 'inputLayers') &&\n        index === 0 && typeof value === 'string';\n}\nfunction convertPythonicToTs(pythonicConfig, key) {\n    if (pythonicConfig === null) {\n        return null;\n    }\n    else if (typeof pythonicConfig === 'string') {\n        return generic_utils.toCamelCase(pythonicConfig);\n    }\n    else if ((typeof pythonicConfig === 'number') ||\n        (typeof pythonicConfig === 'boolean')) {\n        return pythonicConfig;\n    }\n    else if (pythonicConfig instanceof Array) {\n        var tsArray = [];\n        var arrayLength = pythonicConfig.length;\n        for (var i = 0; i < arrayLength; ++i) {\n            var item = pythonicConfig[i];\n            if (isArrayItemInputOrOutputName(key, i, item)) {\n                tsArray.push(item);\n            }\n            else {\n                tsArray.push(convertPythonicToTs(item, key));\n            }\n        }\n        return tsArray;\n    }\n    else {\n        var tsDict = {};\n        for (var _i = 0, _a = Object.keys(pythonicConfig); _i < _a.length; _i++) {\n            var pythonicKey = _a[_i];\n            var pythonicValue = pythonicConfig[pythonicKey];\n            if (pythonicKey === 'name' && typeof pythonicValue === 'string') {\n                tsDict[pythonicKey] = pythonicValue;\n            }\n            else {\n                var tsKey = generic_utils.toCamelCase(pythonicKey);\n                tsDict[tsKey] = convertPythonicToTs(pythonicValue, tsKey);\n            }\n        }\n        return tsDict;\n    }\n}\nexports.convertPythonicToTs = convertPythonicToTs;\nfunction convertTsToPythonic(tsConfig, key) {\n    if (tsConfig === null || tsConfig === undefined) {\n        return null;\n    }\n    else if (typeof tsConfig === 'string') {\n        return generic_utils.toSnakeCase(tsConfig);\n    }\n    else if ((typeof tsConfig === 'number') || (typeof tsConfig === 'boolean')) {\n        return tsConfig;\n    }\n    else if (tsConfig instanceof Array) {\n        var pyArray = [];\n        var arrayLength = tsConfig.length;\n        for (var i = 0; i < arrayLength; ++i) {\n            var item = tsConfig[i];\n            if (isArrayItemInputOrOutputName(key, i, item)) {\n                pyArray.push(item);\n            }\n            else {\n                pyArray.push(convertTsToPythonic(item, key));\n            }\n        }\n        return pyArray;\n    }\n    else {\n        var pyDict = {};\n        for (var _i = 0, _a = Object.keys(tsConfig); _i < _a.length; _i++) {\n            var tsKey = _a[_i];\n            var tsValue = tsConfig[tsKey];\n            var pyKey = generic_utils.toSnakeCase(tsKey);\n            if ((tsKey === 'name' || tsKey === 'className') &&\n                typeof tsValue === 'string') {\n                pyDict[pyKey] = tsValue;\n            }\n            else {\n                pyDict[pyKey] = convertTsToPythonic(tsValue, tsKey);\n            }\n        }\n        return pyDict;\n    }\n}\nexports.convertTsToPythonic = convertTsToPythonic;\n\n},{\"../utils/generic_utils\":224}],228:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar errors_1 = require(\"../errors\");\nfunction isArrayOfShapes(x) {\n    return Array.isArray(x) && Array.isArray(x[0]);\n}\nexports.isArrayOfShapes = isArrayOfShapes;\nfunction normalizeShapeList(x) {\n    if (x.length === 0) {\n        return [];\n    }\n    if (!Array.isArray(x[0])) {\n        return [x];\n    }\n    return x;\n}\nexports.normalizeShapeList = normalizeShapeList;\nfunction getExactlyOneTensor(xs) {\n    var x;\n    if (Array.isArray(xs)) {\n        if (xs.length !== 1) {\n            throw new errors_1.ValueError(\"Expected Tensor length to be 1; got \" + xs.length);\n        }\n        x = xs[0];\n    }\n    else {\n        x = xs;\n    }\n    return x;\n}\nexports.getExactlyOneTensor = getExactlyOneTensor;\nfunction getExactlyOneShape(shapes) {\n    if (Array.isArray(shapes) && Array.isArray(shapes[0])) {\n        if (shapes.length === 1) {\n            shapes = shapes;\n            return shapes[0];\n        }\n        else {\n            throw new errors_1.ValueError(\"Expected exactly 1 Shape; got \" + shapes.length);\n        }\n    }\n    else {\n        return shapes;\n    }\n}\nexports.getExactlyOneShape = getExactlyOneShape;\n\n},{\"../errors\":196}],229:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction countParamsInWeights(weights) {\n    var count = 0;\n    for (var _i = 0, weights_1 = weights; _i < weights_1.length; _i++) {\n        var weight = weights_1[_i];\n        if (weight.shape.length === 0) {\n            count += 1;\n        }\n        else {\n            count += weight.shape.reduce(function (a, b) { return a * b; });\n        }\n    }\n    return count;\n}\nexports.countParamsInWeights = countParamsInWeights;\n\n},{}],230:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tfc = require(\"@tensorflow/tfjs-core\");\nvar tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar state_1 = require(\"./backend/state\");\nvar common_1 = require(\"./common\");\nvar errors_1 = require(\"./errors\");\nvar DEFAULT_VARIABLE_NAME_PREFIX = 'Variable';\nvar LayerVariable = (function () {\n    function LayerVariable(val, dtype, name, trainable, constraint) {\n        if (dtype === void 0) { dtype = 'float32'; }\n        if (name === void 0) { name = DEFAULT_VARIABLE_NAME_PREFIX; }\n        if (trainable === void 0) { trainable = true; }\n        if (constraint === void 0) { constraint = null; }\n        this.dtype = dtype == null ? 'float32' : dtype;\n        this.shape = val.shape;\n        this.id = state_1.getNextUniqueTensorId();\n        name = name == null ? DEFAULT_VARIABLE_NAME_PREFIX : name;\n        this.originalName = common_1.getScopedTensorName(name);\n        this.name = common_1.getUniqueTensorName(this.originalName);\n        this.trainable = trainable;\n        this.constraint = constraint;\n        this.val = tfc.variable(val, this.trainable, this.name, this.dtype);\n    }\n    LayerVariable.prototype.read = function () {\n        return this.val;\n    };\n    LayerVariable.prototype.write = function (newVal) {\n        checkShapesMatch(this.val, newVal);\n        this.val.assign(newVal);\n        if (this.constraint != null) {\n            this.val.assign(this.constraint.apply(this.val));\n        }\n        return this;\n    };\n    return LayerVariable;\n}());\nexports.LayerVariable = LayerVariable;\nfunction checkShapesMatch(x, y) {\n    if (x.shape.toString() !== y.shape.toString()) {\n        throw new Error('Shape mismatch: ' + JSON.stringify(x.shape) + ' vs. ' +\n            JSON.stringify(y.shape));\n    }\n}\nfunction variable(x, dtype, name, constraint) {\n    return new LayerVariable(x, dtype, name, true, constraint);\n}\nexports.variable = variable;\nfunction zerosVariable(shape, dtype, name) {\n    return new LayerVariable(tfc.zeros(shape), dtype, name);\n}\nexports.zerosVariable = zerosVariable;\nfunction zerosLike(x, dtype, name) {\n    return new LayerVariable(tfc.zerosLike(x), dtype, name);\n}\nexports.zerosLike = zerosLike;\nfunction onesVariable(shape, dtype, name) {\n    var allocated = tfc.ones(shape);\n    return new LayerVariable(allocated, dtype, name);\n}\nexports.onesVariable = onesVariable;\nfunction onesLike(x, dtype, name) {\n    var allocated = tfc.onesLike(x);\n    return new LayerVariable(allocated, dtype, name);\n}\nexports.onesLike = onesLike;\nfunction eyeVariable(size, dtype, name) {\n    return new LayerVariable(tfc.eye(size), dtype, name);\n}\nexports.eyeVariable = eyeVariable;\nfunction randomUniformVariable(shape, minval, maxval, dtype, seed, name) {\n    if (name === void 0) { name = 'randomUniform'; }\n    return new LayerVariable(tfc.randomUniform(shape, minval, maxval, dtype), dtype, name);\n}\nexports.randomUniformVariable = randomUniformVariable;\nfunction truncatedNormalVariable(shape, mean, stddev, dtype, seed, name) {\n    if (mean === void 0) { mean = 0.0; }\n    if (stddev === void 0) { stddev = 1.0; }\n    if (name === void 0) { name = 'truncatedNormal'; }\n    if (dtype === 'bool') {\n        throw new errors_1.NotImplementedError(\"randomNormal does not support dType bool.\");\n    }\n    return new LayerVariable(tfc.truncatedNormal(shape, mean, stddev, dtype, seed), dtype, name);\n}\nexports.truncatedNormalVariable = truncatedNormalVariable;\nfunction randomNormalVariable(shape, mean, stddev, dtype, seed, name) {\n    if (mean === void 0) { mean = 0.0; }\n    if (stddev === void 0) { stddev = 1.0; }\n    if (name === void 0) { name = 'randomNormal'; }\n    if (dtype === 'bool') {\n        throw new errors_1.NotImplementedError(\"randomNormalVariable does not support dType bool.\");\n    }\n    return new LayerVariable(tfc.randomNormal(shape, mean, stddev, dtype, seed), dtype, name);\n}\nexports.randomNormalVariable = randomNormalVariable;\nfunction update(x, xNew) {\n    return x.write(xNew);\n}\nexports.update = update;\nfunction updateAdd(x, increment) {\n    return x.write(tfc.add(x.read(), increment));\n}\nexports.updateAdd = updateAdd;\nfunction updateSub(x, decrement) {\n    return x.write(tfc.sub(x.read(), decrement));\n}\nexports.updateSub = updateSub;\nfunction batchGetValue(xs) {\n    return xs.map(function (x) { return x.read(); });\n}\nexports.batchGetValue = batchGetValue;\nfunction batchSetValue(variablesAndValues) {\n    variablesAndValues.map(function (variableAndValue) {\n        var variable = variableAndValue[0];\n        variable.write(variableAndValue[1]);\n    });\n}\nexports.batchSetValue = batchSetValue;\nfunction gradients(lossFn, variables) {\n    var variableList = variables.map(function (variable) { return variable.read(); });\n    var valudAndGrads = tfjs_core_1.variableGrads(lossFn, variableList);\n    return variables.map(function (variable) { return valudAndGrads.grads[variable.name]; });\n}\nexports.gradients = gradients;\n\n},{\"./backend/state\":185,\"./common\":189,\"./errors\":196,\"@tensorflow/tfjs-core\":59}],231:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar version = '0.7.2';\nexports.version = version;\n\n},{}],232:[function(require,module,exports){\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(\"@tensorflow/tfjs-core\"));\n__export(require(\"@tensorflow/tfjs-layers\"));\n__export(require(\"@tensorflow/tfjs-converter\"));\nvar tfjs_core_1 = require(\"@tensorflow/tfjs-core\");\nvar tfjs_layers_1 = require(\"@tensorflow/tfjs-layers\");\nvar tfjs_converter_1 = require(\"@tensorflow/tfjs-converter\");\nvar version_1 = require(\"./version\");\nexports.version = {\n    'tfjs-core': tfjs_core_1.version_core,\n    'tfjs-layers': tfjs_layers_1.version_layers,\n    'tfjs-converter': tfjs_converter_1.version_converter,\n    'tfjs': version_1.version\n};\n\n},{\"./version\":233,\"@tensorflow/tfjs-converter\":17,\"@tensorflow/tfjs-core\":59,\"@tensorflow/tfjs-layers\":203}],233:[function(require,module,exports){\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar version = '0.12.4';\nexports.version = version;\n\n},{}],234:[function(require,module,exports){\nmodule.exports = after\n\nfunction after(count, callback, err_cb) {\n    var bail = false\n    err_cb = err_cb || noop\n    proxy.count = count\n\n    return (count === 0) ? callback() : proxy\n\n    function proxy(err, result) {\n        if (proxy.count <= 0) {\n            throw new Error('after called too many times')\n        }\n        --proxy.count\n\n        // after first error, rest are passed to err_cb\n        if (err) {\n            bail = true\n            callback(err)\n            // future error callbacks will go to error handler\n            callback = err_cb\n        } else if (proxy.count === 0 && !bail) {\n            callback(null, result)\n        }\n    }\n}\n\nfunction noop() {}\n\n},{}],235:[function(require,module,exports){\n/**\n * An abstraction for slicing an arraybuffer even when\n * ArrayBuffer.prototype.slice is not supported\n *\n * @api public\n */\n\nmodule.exports = function(arraybuffer, start, end) {\n  var bytes = arraybuffer.byteLength;\n  start = start || 0;\n  end = end || bytes;\n\n  if (arraybuffer.slice) { return arraybuffer.slice(start, end); }\n\n  if (start < 0) { start += bytes; }\n  if (end < 0) { end += bytes; }\n  if (end > bytes) { end = bytes; }\n\n  if (start >= bytes || start >= end || bytes === 0) {\n    return new ArrayBuffer(0);\n  }\n\n  var abv = new Uint8Array(arraybuffer);\n  var result = new Uint8Array(end - start);\n  for (var i = start, ii = 0; i < end; i++, ii++) {\n    result[ii] = abv[i];\n  }\n  return result.buffer;\n};\n\n},{}],236:[function(require,module,exports){\n\n/**\n * Expose `Backoff`.\n */\n\nmodule.exports = Backoff;\n\n/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction Backoff(opts) {\n  opts = opts || {};\n  this.ms = opts.min || 100;\n  this.max = opts.max || 10000;\n  this.factor = opts.factor || 2;\n  this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n  this.attempts = 0;\n}\n\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\n\nBackoff.prototype.duration = function(){\n  var ms = this.ms * Math.pow(this.factor, this.attempts++);\n  if (this.jitter) {\n    var rand =  Math.random();\n    var deviation = Math.floor(rand * this.jitter * ms);\n    ms = (Math.floor(rand * 10) & 1) == 0  ? ms - deviation : ms + deviation;\n  }\n  return Math.min(ms, this.max) | 0;\n};\n\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\n\nBackoff.prototype.reset = function(){\n  this.attempts = 0;\n};\n\n/**\n * Set the minimum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMin = function(min){\n  this.ms = min;\n};\n\n/**\n * Set the maximum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMax = function(max){\n  this.max = max;\n};\n\n/**\n * Set the jitter\n *\n * @api public\n */\n\nBackoff.prototype.setJitter = function(jitter){\n  this.jitter = jitter;\n};\n\n\n},{}],237:[function(require,module,exports){\n/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n(function(){\n  \"use strict\";\n\n  var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\n  // Use a lookup table to find the index.\n  var lookup = new Uint8Array(256);\n  for (var i = 0; i < chars.length; i++) {\n    lookup[chars.charCodeAt(i)] = i;\n  }\n\n  exports.encode = function(arraybuffer) {\n    var bytes = new Uint8Array(arraybuffer),\n    i, len = bytes.length, base64 = \"\";\n\n    for (i = 0; i < len; i+=3) {\n      base64 += chars[bytes[i] >> 2];\n      base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n      base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n      base64 += chars[bytes[i + 2] & 63];\n    }\n\n    if ((len % 3) === 2) {\n      base64 = base64.substring(0, base64.length - 1) + \"=\";\n    } else if (len % 3 === 1) {\n      base64 = base64.substring(0, base64.length - 2) + \"==\";\n    }\n\n    return base64;\n  };\n\n  exports.decode =  function(base64) {\n    var bufferLength = base64.length * 0.75,\n    len = base64.length, i, p = 0,\n    encoded1, encoded2, encoded3, encoded4;\n\n    if (base64[base64.length - 1] === \"=\") {\n      bufferLength--;\n      if (base64[base64.length - 2] === \"=\") {\n        bufferLength--;\n      }\n    }\n\n    var arraybuffer = new ArrayBuffer(bufferLength),\n    bytes = new Uint8Array(arraybuffer);\n\n    for (i = 0; i < len; i+=4) {\n      encoded1 = lookup[base64.charCodeAt(i)];\n      encoded2 = lookup[base64.charCodeAt(i+1)];\n      encoded3 = lookup[base64.charCodeAt(i+2)];\n      encoded4 = lookup[base64.charCodeAt(i+3)];\n\n      bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n      bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n      bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n    }\n\n    return arraybuffer;\n  };\n})();\n\n},{}],238:[function(require,module,exports){\n'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  for (var i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(\n      uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n    ))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n\n},{}],239:[function(require,module,exports){\n(function (global){\n/**\n * Create a blob builder even when vendor prefixes exist\n */\n\nvar BlobBuilder = global.BlobBuilder\n  || global.WebKitBlobBuilder\n  || global.MSBlobBuilder\n  || global.MozBlobBuilder;\n\n/**\n * Check if Blob constructor is supported\n */\n\nvar blobSupported = (function() {\n  try {\n    var a = new Blob(['hi']);\n    return a.size === 2;\n  } catch(e) {\n    return false;\n  }\n})();\n\n/**\n * Check if Blob constructor supports ArrayBufferViews\n * Fails in Safari 6, so we need to map to ArrayBuffers there.\n */\n\nvar blobSupportsArrayBufferView = blobSupported && (function() {\n  try {\n    var b = new Blob([new Uint8Array([1,2])]);\n    return b.size === 2;\n  } catch(e) {\n    return false;\n  }\n})();\n\n/**\n * Check if BlobBuilder is supported\n */\n\nvar blobBuilderSupported = BlobBuilder\n  && BlobBuilder.prototype.append\n  && BlobBuilder.prototype.getBlob;\n\n/**\n * Helper function that maps ArrayBufferViews to ArrayBuffers\n * Used by BlobBuilder constructor and old browsers that didn't\n * support it in the Blob constructor.\n */\n\nfunction mapArrayBufferViews(ary) {\n  for (var i = 0; i < ary.length; i++) {\n    var chunk = ary[i];\n    if (chunk.buffer instanceof ArrayBuffer) {\n      var buf = chunk.buffer;\n\n      // if this is a subarray, make a copy so we only\n      // include the subarray region from the underlying buffer\n      if (chunk.byteLength !== buf.byteLength) {\n        var copy = new Uint8Array(chunk.byteLength);\n        copy.set(new Uint8Array(buf, chunk.byteOffset, chunk.byteLength));\n        buf = copy.buffer;\n      }\n\n      ary[i] = buf;\n    }\n  }\n}\n\nfunction BlobBuilderConstructor(ary, options) {\n  options = options || {};\n\n  var bb = new BlobBuilder();\n  mapArrayBufferViews(ary);\n\n  for (var i = 0; i < ary.length; i++) {\n    bb.append(ary[i]);\n  }\n\n  return (options.type) ? bb.getBlob(options.type) : bb.getBlob();\n};\n\nfunction BlobConstructor(ary, options) {\n  mapArrayBufferViews(ary);\n  return new Blob(ary, options || {});\n};\n\nmodule.exports = (function() {\n  if (blobSupported) {\n    return blobSupportsArrayBufferView ? global.Blob : BlobConstructor;\n  } else if (blobBuilderSupported) {\n    return BlobBuilderConstructor;\n  } else {\n    return undefined;\n  }\n})();\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],240:[function(require,module,exports){\n\n},{}],241:[function(require,module,exports){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Print warning and recommend using `buffer` v4.x which has an Object\n *               implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n    typeof console.error === 'function') {\n  console.error(\n    'This browser lacks typed array (Uint8Array) support which is required by ' +\n    '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n  )\n}\n\nfunction typedArraySupport () {\n  // Can typed array instances can be augmented?\n  try {\n    var arr = new Uint8Array(1)\n    arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n    return arr.foo() === 42\n  } catch (e) {\n    return false\n  }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n  enumerable: true,\n  get: function () {\n    if (!Buffer.isBuffer(this)) return undefined\n    return this.buffer\n  }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n  enumerable: true,\n  get: function () {\n    if (!Buffer.isBuffer(this)) return undefined\n    return this.byteOffset\n  }\n})\n\nfunction createBuffer (length) {\n  if (length > K_MAX_LENGTH) {\n    throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n  }\n  // Return an augmented `Uint8Array` instance\n  var buf = new Uint8Array(length)\n  buf.__proto__ = Buffer.prototype\n  return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new TypeError(\n        'The \"string\" argument must be of type string. Received type number'\n      )\n    }\n    return allocUnsafe(arg)\n  }\n  return from(arg, encodingOrOffset, length)\n}\n\n// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\nif (typeof Symbol !== 'undefined' && Symbol.species != null &&\n    Buffer[Symbol.species] === Buffer) {\n  Object.defineProperty(Buffer, Symbol.species, {\n    value: null,\n    configurable: true,\n    enumerable: false,\n    writable: false\n  })\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n  if (typeof value === 'string') {\n    return fromString(value, encodingOrOffset)\n  }\n\n  if (ArrayBuffer.isView(value)) {\n    return fromArrayLike(value)\n  }\n\n  if (value == null) {\n    throw TypeError(\n      'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n      'or Array-like Object. Received type ' + (typeof value)\n    )\n  }\n\n  if (isInstance(value, ArrayBuffer) ||\n      (value && isInstance(value.buffer, ArrayBuffer))) {\n    return fromArrayBuffer(value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'number') {\n    throw new TypeError(\n      'The \"value\" argument must not be of type number. Received type number'\n    )\n  }\n\n  var valueOf = value.valueOf && value.valueOf()\n  if (valueOf != null && valueOf !== value) {\n    return Buffer.from(valueOf, encodingOrOffset, length)\n  }\n\n  var b = fromObject(value)\n  if (b) return b\n\n  if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n      typeof value[Symbol.toPrimitive] === 'function') {\n    return Buffer.from(\n      value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n    )\n  }\n\n  throw new TypeError(\n    'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n    'or Array-like Object. Received type ' + (typeof value)\n  )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nBuffer.prototype.__proto__ = Uint8Array.prototype\nBuffer.__proto__ = Uint8Array\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be of type number')\n  } else if (size < 0) {\n    throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n  }\n}\n\nfunction alloc (size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpretted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(size).fill(fill, encoding)\n      : createBuffer(size).fill(fill)\n  }\n  return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n  assertSize(size)\n  return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('Unknown encoding: ' + encoding)\n  }\n\n  var length = byteLength(string, encoding) | 0\n  var buf = createBuffer(length)\n\n  var actual = buf.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    buf = buf.slice(0, actual)\n  }\n\n  return buf\n}\n\nfunction fromArrayLike (array) {\n  var length = array.length < 0 ? 0 : checked(array.length) | 0\n  var buf = createBuffer(length)\n  for (var i = 0; i < length; i += 1) {\n    buf[i] = array[i] & 255\n  }\n  return buf\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\"offset\" is outside of buffer bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\"length\" is outside of buffer bounds')\n  }\n\n  var buf\n  if (byteOffset === undefined && length === undefined) {\n    buf = new Uint8Array(array)\n  } else if (length === undefined) {\n    buf = new Uint8Array(array, byteOffset)\n  } else {\n    buf = new Uint8Array(array, byteOffset, length)\n  }\n\n  // Return an augmented `Uint8Array` instance\n  buf.__proto__ = Buffer.prototype\n  return buf\n}\n\nfunction fromObject (obj) {\n  if (Buffer.isBuffer(obj)) {\n    var len = checked(obj.length) | 0\n    var buf = createBuffer(len)\n\n    if (buf.length === 0) {\n      return buf\n    }\n\n    obj.copy(buf, 0, 0, len)\n    return buf\n  }\n\n  if (obj.length !== undefined) {\n    if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n      return createBuffer(0)\n    }\n    return fromArrayLike(obj)\n  }\n\n  if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n    return fromArrayLike(obj.data)\n  }\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= K_MAX_LENGTH) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return b != null && b._isBuffer === true &&\n    b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n  if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n  if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError(\n      'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n    )\n  }\n\n  if (a === b) return 0\n\n  var x = a.length\n  var y = b.length\n\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!Array.isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  var i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  var buffer = Buffer.allocUnsafe(length)\n  var pos = 0\n  for (i = 0; i < list.length; ++i) {\n    var buf = list[i]\n    if (isInstance(buf, Uint8Array)) {\n      buf = Buffer.from(buf)\n    }\n    if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    }\n    buf.copy(buffer, pos)\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    throw new TypeError(\n      'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n      'Received type ' + typeof string\n    )\n  }\n\n  var len = string.length\n  var mustMatch = (arguments.length > 2 && arguments[2] === true)\n  if (!mustMatch && len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) {\n          return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n        }\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  var loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  var i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  var len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (var i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  var len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (var i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  var len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (var i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  var length = this.length\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  var str = ''\n  var max = exports.INSPECT_MAX_BYTES\n  str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n  if (this.length > max) str += ' ... '\n  return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (isInstance(target, Uint8Array)) {\n    target = Buffer.from(target, target.offset, target.byteLength)\n  }\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError(\n      'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n      'Received type ' + (typeof target)\n    )\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  var x = thisEnd - thisStart\n  var y = end - start\n  var len = Math.min(x, y)\n\n  var thisCopy = this.slice(thisStart, thisEnd)\n  var targetCopy = target.slice(start, end)\n\n  for (var i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset // Coerce to Number.\n  if (numberIsNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  var indexSize = 1\n  var arrLength = arr.length\n  var valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  var i\n  if (dir) {\n    var foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      var found = true\n      for (var j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  var remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  var strLen = string.length\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  for (var i = 0; i < length; ++i) {\n    var parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (numberIsNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n  return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset >>> 0\n    if (isFinite(length)) {\n      length = length >>> 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  var remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n        return asciiWrite(this, string, offset, length)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Write(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  var res = []\n\n  var i = start\n  while (i < end) {\n    var firstByte = buf[i]\n    var codePoint = null\n    var bytesPerSequence = (firstByte > 0xEF) ? 4\n      : (firstByte > 0xDF) ? 3\n        : (firstByte > 0xBF) ? 2\n          : 1\n\n    if (i + bytesPerSequence <= end) {\n      var secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  var len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  var res = ''\n  var i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  var len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  var out = ''\n  for (var i = start; i < end; ++i) {\n    out += toHex(buf[i])\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  var bytes = buf.slice(start, end)\n  var res = ''\n  for (var i = 0; i < bytes.length; i += 2) {\n    res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  var len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  var newBuf = this.subarray(start, end)\n  // Return an augmented `Uint8Array` instance\n  newBuf.__proto__ = Buffer.prototype\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  var val = this[offset + --byteLength]\n  var mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var i = byteLength\n  var mul = 1\n  var val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var mul = 1\n  var i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  this[offset] = (value >>> 8)\n  this[offset + 1] = (value & 0xff)\n  return offset + 2\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  this[offset + 3] = (value >>> 24)\n  this[offset + 2] = (value >>> 16)\n  this[offset + 1] = (value >>> 8)\n  this[offset] = (value & 0xff)\n  return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  this[offset] = (value >>> 24)\n  this[offset + 1] = (value >>> 16)\n  this[offset + 2] = (value >>> 8)\n  this[offset + 3] = (value & 0xff)\n  return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    var limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = 0\n  var mul = 1\n  var sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    var limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  var sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  this[offset] = (value >>> 8)\n  this[offset + 1] = (value & 0xff)\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  this[offset + 2] = (value >>> 16)\n  this[offset + 3] = (value >>> 24)\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  this[offset] = (value >>> 24)\n  this[offset + 1] = (value >>> 16)\n  this[offset + 2] = (value >>> 8)\n  this[offset + 3] = (value & 0xff)\n  return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  var len = end - start\n\n  if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n    // Use built-in when available, missing from IE11\n    this.copyWithin(targetStart, start, end)\n  } else if (this === target && start < targetStart && targetStart < end) {\n    // descending copy from end\n    for (var i = len - 1; i >= 0; --i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, end),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n    if (val.length === 1) {\n      var code = val.charCodeAt(0)\n      if ((encoding === 'utf8' && code < 128) ||\n          encoding === 'latin1') {\n        // Fast path: If `val` fits into a single byte, use that numeric value.\n        val = code\n      }\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  var i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    var bytes = Buffer.isBuffer(val)\n      ? val\n      : Buffer.from(val, encoding)\n    var len = bytes.length\n    if (len === 0) {\n      throw new TypeError('The value \"' + val +\n        '\" is invalid for argument \"value\"')\n    }\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node takes equal signs as end of the Base64 encoding\n  str = str.split('=')[0]\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = str.trim().replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction toHex (n) {\n  if (n < 16) return '0' + n.toString(16)\n  return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  var codePoint\n  var length = string.length\n  var leadSurrogate = null\n  var bytes = []\n\n  for (var i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  var c, hi, lo\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  for (var i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n  return obj instanceof type ||\n    (obj != null && obj.constructor != null && obj.constructor.name != null &&\n      obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n  // For IE11 support\n  return obj !== obj // eslint-disable-line no-self-compare\n}\n\n},{\"base64-js\":238,\"ieee754\":261}],242:[function(require,module,exports){\n/**\n * Slice reference.\n */\n\nvar slice = [].slice;\n\n/**\n * Bind `obj` to `fn`.\n *\n * @param {Object} obj\n * @param {Function|String} fn or string\n * @return {Function}\n * @api public\n */\n\nmodule.exports = function(obj, fn){\n  if ('string' == typeof fn) fn = obj[fn];\n  if ('function' != typeof fn) throw new Error('bind() requires a function');\n  var args = slice.call(arguments, 2);\n  return function(){\n    return fn.apply(obj, args.concat(slice.call(arguments)));\n  }\n};\n\n},{}],243:[function(require,module,exports){\n\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n  module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n  if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n  for (var key in Emitter.prototype) {\r\n    obj[key] = Emitter.prototype[key];\r\n  }\r\n  return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n  this._callbacks = this._callbacks || {};\r\n  (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n    .push(fn);\r\n  return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n  function on() {\r\n    this.off(event, on);\r\n    fn.apply(this, arguments);\r\n  }\r\n\r\n  on.fn = fn;\r\n  this.on(event, on);\r\n  return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n  this._callbacks = this._callbacks || {};\r\n\r\n  // all\r\n  if (0 == arguments.length) {\r\n    this._callbacks = {};\r\n    return this;\r\n  }\r\n\r\n  // specific event\r\n  var callbacks = this._callbacks['$' + event];\r\n  if (!callbacks) return this;\r\n\r\n  // remove all handlers\r\n  if (1 == arguments.length) {\r\n    delete this._callbacks['$' + event];\r\n    return this;\r\n  }\r\n\r\n  // remove specific handler\r\n  var cb;\r\n  for (var i = 0; i < callbacks.length; i++) {\r\n    cb = callbacks[i];\r\n    if (cb === fn || cb.fn === fn) {\r\n      callbacks.splice(i, 1);\r\n      break;\r\n    }\r\n  }\r\n  return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n  this._callbacks = this._callbacks || {};\r\n  var args = [].slice.call(arguments, 1)\r\n    , callbacks = this._callbacks['$' + event];\r\n\r\n  if (callbacks) {\r\n    callbacks = callbacks.slice(0);\r\n    for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n      callbacks[i].apply(this, args);\r\n    }\r\n  }\r\n\r\n  return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n  this._callbacks = this._callbacks || {};\r\n  return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n  return !! this.listeners(event).length;\r\n};\r\n\n},{}],244:[function(require,module,exports){\n\nmodule.exports = function(a, b){\n  var fn = function(){};\n  fn.prototype = b.prototype;\n  a.prototype = new fn;\n  a.prototype.constructor = a;\n};\n},{}],245:[function(require,module,exports){\n(function (process){\n/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n               && 'undefined' != typeof chrome.storage\n                  ? chrome.storage.local\n                  : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n  '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC',\n  '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF',\n  '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC',\n  '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF',\n  '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC',\n  '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033',\n  '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366',\n  '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933',\n  '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC',\n  '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF',\n  '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n  // NB: In an Electron preload script, document will be defined but not fully\n  // initialized. Since we know we're in Chrome, we'll just detect this case\n  // explicitly\n  if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n    return true;\n  }\n\n  // Internet Explorer and Edge do not support colors.\n  if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n    return false;\n  }\n\n  // is webkit? http://stackoverflow.com/a/16459606/376773\n  // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n  return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n    // is firebug? http://stackoverflow.com/a/398120/376773\n    (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n    // is firefox >= v31?\n    // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n    (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n    // double check webkit in userAgent just in case we are in a worker\n    (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n  try {\n    return JSON.stringify(v);\n  } catch (err) {\n    return '[UnexpectedJSONParseError]: ' + err.message;\n  }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n  var useColors = this.useColors;\n\n  args[0] = (useColors ? '%c' : '')\n    + this.namespace\n    + (useColors ? ' %c' : ' ')\n    + args[0]\n    + (useColors ? '%c ' : ' ')\n    + '+' + exports.humanize(this.diff);\n\n  if (!useColors) return;\n\n  var c = 'color: ' + this.color;\n  args.splice(1, 0, c, 'color: inherit')\n\n  // the final \"%c\" is somewhat tricky, because there could be other\n  // arguments passed either before or after the %c, so we need to\n  // figure out the correct index to insert the CSS into\n  var index = 0;\n  var lastC = 0;\n  args[0].replace(/%[a-zA-Z%]/g, function(match) {\n    if ('%%' === match) return;\n    index++;\n    if ('%c' === match) {\n      // we only are interested in the *last* %c\n      // (the user may have provided their own)\n      lastC = index;\n    }\n  });\n\n  args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n  // this hackery is required for IE8/9, where\n  // the `console.log` function doesn't have 'apply'\n  return 'object' === typeof console\n    && console.log\n    && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n  try {\n    if (null == namespaces) {\n      exports.storage.removeItem('debug');\n    } else {\n      exports.storage.debug = namespaces;\n    }\n  } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n  var r;\n  try {\n    r = exports.storage.debug;\n  } catch(e) {}\n\n  // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n  if (!r && typeof process !== 'undefined' && 'env' in process) {\n    r = process.env.DEBUG;\n  }\n\n  return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n  try {\n    return window.localStorage;\n  } catch (e) {}\n}\n\n}).call(this,require('_process'))\n},{\"./debug\":246,\"_process\":267}],246:[function(require,module,exports){\n\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * Active `debug` instances.\n */\nexports.instances = [];\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n  var hash = 0, i;\n\n  for (i in namespace) {\n    hash  = ((hash << 5) - hash) + namespace.charCodeAt(i);\n    hash |= 0; // Convert to 32bit integer\n  }\n\n  return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n  var prevTime;\n\n  function debug() {\n    // disabled?\n    if (!debug.enabled) return;\n\n    var self = debug;\n\n    // set `diff` timestamp\n    var curr = +new Date();\n    var ms = curr - (prevTime || curr);\n    self.diff = ms;\n    self.prev = prevTime;\n    self.curr = curr;\n    prevTime = curr;\n\n    // turn the `arguments` into a proper Array\n    var args = new Array(arguments.length);\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i];\n    }\n\n    args[0] = exports.coerce(args[0]);\n\n    if ('string' !== typeof args[0]) {\n      // anything else let's inspect with %O\n      args.unshift('%O');\n    }\n\n    // apply any `formatters` transformations\n    var index = 0;\n    args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n      // if we encounter an escaped % then don't increase the array index\n      if (match === '%%') return match;\n      index++;\n      var formatter = exports.formatters[format];\n      if ('function' === typeof formatter) {\n        var val = args[index];\n        match = formatter.call(self, val);\n\n        // now we need to remove `args[index]` since it's inlined in the `format`\n        args.splice(index, 1);\n        index--;\n      }\n      return match;\n    });\n\n    // apply env-specific formatting (colors, etc.)\n    exports.formatArgs.call(self, args);\n\n    var logFn = debug.log || exports.log || console.log.bind(console);\n    logFn.apply(self, args);\n  }\n\n  debug.namespace = namespace;\n  debug.enabled = exports.enabled(namespace);\n  debug.useColors = exports.useColors();\n  debug.color = selectColor(namespace);\n  debug.destroy = destroy;\n\n  // env-specific initialization logic for debug instances\n  if ('function' === typeof exports.init) {\n    exports.init(debug);\n  }\n\n  exports.instances.push(debug);\n\n  return debug;\n}\n\nfunction destroy () {\n  var index = exports.instances.indexOf(this);\n  if (index !== -1) {\n    exports.instances.splice(index, 1);\n    return true;\n  } else {\n    return false;\n  }\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n  exports.save(namespaces);\n\n  exports.names = [];\n  exports.skips = [];\n\n  var i;\n  var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n  var len = split.length;\n\n  for (i = 0; i < len; i++) {\n    if (!split[i]) continue; // ignore empty strings\n    namespaces = split[i].replace(/\\*/g, '.*?');\n    if (namespaces[0] === '-') {\n      exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n    } else {\n      exports.names.push(new RegExp('^' + namespaces + '$'));\n    }\n  }\n\n  for (i = 0; i < exports.instances.length; i++) {\n    var instance = exports.instances[i];\n    instance.enabled = exports.enabled(instance.namespace);\n  }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n  exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n  if (name[name.length - 1] === '*') {\n    return true;\n  }\n  var i, len;\n  for (i = 0, len = exports.skips.length; i < len; i++) {\n    if (exports.skips[i].test(name)) {\n      return false;\n    }\n  }\n  for (i = 0, len = exports.names.length; i < len; i++) {\n    if (exports.names[i].test(name)) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n  if (val instanceof Error) return val.stack || val.message;\n  return val;\n}\n\n},{\"ms\":264}],247:[function(require,module,exports){\n\nmodule.exports = require('./socket');\n\n/**\n * Exports parser\n *\n * @api public\n *\n */\nmodule.exports.parser = require('engine.io-parser');\n\n},{\"./socket\":248,\"engine.io-parser\":256}],248:[function(require,module,exports){\n(function (global){\n/**\n * Module dependencies.\n */\n\nvar transports = require('./transports/index');\nvar Emitter = require('component-emitter');\nvar debug = require('debug')('engine.io-client:socket');\nvar index = require('indexof');\nvar parser = require('engine.io-parser');\nvar parseuri = require('parseuri');\nvar parseqs = require('parseqs');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Socket;\n\n/**\n * Socket constructor.\n *\n * @param {String|Object} uri or options\n * @param {Object} options\n * @api public\n */\n\nfunction Socket (uri, opts) {\n  if (!(this instanceof Socket)) return new Socket(uri, opts);\n\n  opts = opts || {};\n\n  if (uri && 'object' === typeof uri) {\n    opts = uri;\n    uri = null;\n  }\n\n  if (uri) {\n    uri = parseuri(uri);\n    opts.hostname = uri.host;\n    opts.secure = uri.protocol === 'https' || uri.protocol === 'wss';\n    opts.port = uri.port;\n    if (uri.query) opts.query = uri.query;\n  } else if (opts.host) {\n    opts.hostname = parseuri(opts.host).host;\n  }\n\n  this.secure = null != opts.secure ? opts.secure\n    : (global.location && 'https:' === location.protocol);\n\n  if (opts.hostname && !opts.port) {\n    // if no port is specified manually, use the protocol default\n    opts.port = this.secure ? '443' : '80';\n  }\n\n  this.agent = opts.agent || false;\n  this.hostname = opts.hostname ||\n    (global.location ? location.hostname : 'localhost');\n  this.port = opts.port || (global.location && location.port\n      ? location.port\n      : (this.secure ? 443 : 80));\n  this.query = opts.query || {};\n  if ('string' === typeof this.query) this.query = parseqs.decode(this.query);\n  this.upgrade = false !== opts.upgrade;\n  this.path = (opts.path || '/engine.io').replace(/\\/$/, '') + '/';\n  this.forceJSONP = !!opts.forceJSONP;\n  this.jsonp = false !== opts.jsonp;\n  this.forceBase64 = !!opts.forceBase64;\n  this.enablesXDR = !!opts.enablesXDR;\n  this.timestampParam = opts.timestampParam || 't';\n  this.timestampRequests = opts.timestampRequests;\n  this.transports = opts.transports || ['polling', 'websocket'];\n  this.transportOptions = opts.transportOptions || {};\n  this.readyState = '';\n  this.writeBuffer = [];\n  this.prevBufferLen = 0;\n  this.policyPort = opts.policyPort || 843;\n  this.rememberUpgrade = opts.rememberUpgrade || false;\n  this.binaryType = null;\n  this.onlyBinaryUpgrades = opts.onlyBinaryUpgrades;\n  this.perMessageDeflate = false !== opts.perMessageDeflate ? (opts.perMessageDeflate || {}) : false;\n\n  if (true === this.perMessageDeflate) this.perMessageDeflate = {};\n  if (this.perMessageDeflate && null == this.perMessageDeflate.threshold) {\n    this.perMessageDeflate.threshold = 1024;\n  }\n\n  // SSL options for Node.js client\n  this.pfx = opts.pfx || null;\n  this.key = opts.key || null;\n  this.passphrase = opts.passphrase || null;\n  this.cert = opts.cert || null;\n  this.ca = opts.ca || null;\n  this.ciphers = opts.ciphers || null;\n  this.rejectUnauthorized = opts.rejectUnauthorized === undefined ? true : opts.rejectUnauthorized;\n  this.forceNode = !!opts.forceNode;\n\n  // other options for Node.js client\n  var freeGlobal = typeof global === 'object' && global;\n  if (freeGlobal.global === freeGlobal) {\n    if (opts.extraHeaders && Object.keys(opts.extraHeaders).length > 0) {\n      this.extraHeaders = opts.extraHeaders;\n    }\n\n    if (opts.localAddress) {\n      this.localAddress = opts.localAddress;\n    }\n  }\n\n  // set on handshake\n  this.id = null;\n  this.upgrades = null;\n  this.pingInterval = null;\n  this.pingTimeout = null;\n\n  // set on heartbeat\n  this.pingIntervalTimer = null;\n  this.pingTimeoutTimer = null;\n\n  this.open();\n}\n\nSocket.priorWebsocketSuccess = false;\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Socket.prototype);\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nSocket.protocol = parser.protocol; // this is an int\n\n/**\n * Expose deps for legacy compatibility\n * and standalone browser access.\n */\n\nSocket.Socket = Socket;\nSocket.Transport = require('./transport');\nSocket.transports = require('./transports/index');\nSocket.parser = require('engine.io-parser');\n\n/**\n * Creates transport of the given type.\n *\n * @param {String} transport name\n * @return {Transport}\n * @api private\n */\n\nSocket.prototype.createTransport = function (name) {\n  debug('creating transport \"%s\"', name);\n  var query = clone(this.query);\n\n  // append engine.io protocol identifier\n  query.EIO = parser.protocol;\n\n  // transport name\n  query.transport = name;\n\n  // per-transport options\n  var options = this.transportOptions[name] || {};\n\n  // session id if we already have one\n  if (this.id) query.sid = this.id;\n\n  var transport = new transports[name]({\n    query: query,\n    socket: this,\n    agent: options.agent || this.agent,\n    hostname: options.hostname || this.hostname,\n    port: options.port || this.port,\n    secure: options.secure || this.secure,\n    path: options.path || this.path,\n    forceJSONP: options.forceJSONP || this.forceJSONP,\n    jsonp: options.jsonp || this.jsonp,\n    forceBase64: options.forceBase64 || this.forceBase64,\n    enablesXDR: options.enablesXDR || this.enablesXDR,\n    timestampRequests: options.timestampRequests || this.timestampRequests,\n    timestampParam: options.timestampParam || this.timestampParam,\n    policyPort: options.policyPort || this.policyPort,\n    pfx: options.pfx || this.pfx,\n    key: options.key || this.key,\n    passphrase: options.passphrase || this.passphrase,\n    cert: options.cert || this.cert,\n    ca: options.ca || this.ca,\n    ciphers: options.ciphers || this.ciphers,\n    rejectUnauthorized: options.rejectUnauthorized || this.rejectUnauthorized,\n    perMessageDeflate: options.perMessageDeflate || this.perMessageDeflate,\n    extraHeaders: options.extraHeaders || this.extraHeaders,\n    forceNode: options.forceNode || this.forceNode,\n    localAddress: options.localAddress || this.localAddress,\n    requestTimeout: options.requestTimeout || this.requestTimeout,\n    protocols: options.protocols || void (0)\n  });\n\n  return transport;\n};\n\nfunction clone (obj) {\n  var o = {};\n  for (var i in obj) {\n    if (obj.hasOwnProperty(i)) {\n      o[i] = obj[i];\n    }\n  }\n  return o;\n}\n\n/**\n * Initializes transport to use and starts probe.\n *\n * @api private\n */\nSocket.prototype.open = function () {\n  var transport;\n  if (this.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf('websocket') !== -1) {\n    transport = 'websocket';\n  } else if (0 === this.transports.length) {\n    // Emit error on next tick so it can be listened to\n    var self = this;\n    setTimeout(function () {\n      self.emit('error', 'No transports available');\n    }, 0);\n    return;\n  } else {\n    transport = this.transports[0];\n  }\n  this.readyState = 'opening';\n\n  // Retry with the next transport if the transport is disabled (jsonp: false)\n  try {\n    transport = this.createTransport(transport);\n  } catch (e) {\n    this.transports.shift();\n    this.open();\n    return;\n  }\n\n  transport.open();\n  this.setTransport(transport);\n};\n\n/**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @api private\n */\n\nSocket.prototype.setTransport = function (transport) {\n  debug('setting transport %s', transport.name);\n  var self = this;\n\n  if (this.transport) {\n    debug('clearing existing transport %s', this.transport.name);\n    this.transport.removeAllListeners();\n  }\n\n  // set up transport\n  this.transport = transport;\n\n  // set up transport listeners\n  transport\n  .on('drain', function () {\n    self.onDrain();\n  })\n  .on('packet', function (packet) {\n    self.onPacket(packet);\n  })\n  .on('error', function (e) {\n    self.onError(e);\n  })\n  .on('close', function () {\n    self.onClose('transport close');\n  });\n};\n\n/**\n * Probes a transport.\n *\n * @param {String} transport name\n * @api private\n */\n\nSocket.prototype.probe = function (name) {\n  debug('probing transport \"%s\"', name);\n  var transport = this.createTransport(name, { probe: 1 });\n  var failed = false;\n  var self = this;\n\n  Socket.priorWebsocketSuccess = false;\n\n  function onTransportOpen () {\n    if (self.onlyBinaryUpgrades) {\n      var upgradeLosesBinary = !this.supportsBinary && self.transport.supportsBinary;\n      failed = failed || upgradeLosesBinary;\n    }\n    if (failed) return;\n\n    debug('probe transport \"%s\" opened', name);\n    transport.send([{ type: 'ping', data: 'probe' }]);\n    transport.once('packet', function (msg) {\n      if (failed) return;\n      if ('pong' === msg.type && 'probe' === msg.data) {\n        debug('probe transport \"%s\" pong', name);\n        self.upgrading = true;\n        self.emit('upgrading', transport);\n        if (!transport) return;\n        Socket.priorWebsocketSuccess = 'websocket' === transport.name;\n\n        debug('pausing current transport \"%s\"', self.transport.name);\n        self.transport.pause(function () {\n          if (failed) return;\n          if ('closed' === self.readyState) return;\n          debug('changing transport and sending upgrade packet');\n\n          cleanup();\n\n          self.setTransport(transport);\n          transport.send([{ type: 'upgrade' }]);\n          self.emit('upgrade', transport);\n          transport = null;\n          self.upgrading = false;\n          self.flush();\n        });\n      } else {\n        debug('probe transport \"%s\" failed', name);\n        var err = new Error('probe error');\n        err.transport = transport.name;\n        self.emit('upgradeError', err);\n      }\n    });\n  }\n\n  function freezeTransport () {\n    if (failed) return;\n\n    // Any callback called by transport should be ignored since now\n    failed = true;\n\n    cleanup();\n\n    transport.close();\n    transport = null;\n  }\n\n  // Handle any error that happens while probing\n  function onerror (err) {\n    var error = new Error('probe error: ' + err);\n    error.transport = transport.name;\n\n    freezeTransport();\n\n    debug('probe transport \"%s\" failed because of error: %s', name, err);\n\n    self.emit('upgradeError', error);\n  }\n\n  function onTransportClose () {\n    onerror('transport closed');\n  }\n\n  // When the socket is closed while we're probing\n  function onclose () {\n    onerror('socket closed');\n  }\n\n  // When the socket is upgraded while we're probing\n  function onupgrade (to) {\n    if (transport && to.name !== transport.name) {\n      debug('\"%s\" works - aborting \"%s\"', to.name, transport.name);\n      freezeTransport();\n    }\n  }\n\n  // Remove all listeners on the transport and on self\n  function cleanup () {\n    transport.removeListener('open', onTransportOpen);\n    transport.removeListener('error', onerror);\n    transport.removeListener('close', onTransportClose);\n    self.removeListener('close', onclose);\n    self.removeListener('upgrading', onupgrade);\n  }\n\n  transport.once('open', onTransportOpen);\n  transport.once('error', onerror);\n  transport.once('close', onTransportClose);\n\n  this.once('close', onclose);\n  this.once('upgrading', onupgrade);\n\n  transport.open();\n};\n\n/**\n * Called when connection is deemed open.\n *\n * @api public\n */\n\nSocket.prototype.onOpen = function () {\n  debug('socket open');\n  this.readyState = 'open';\n  Socket.priorWebsocketSuccess = 'websocket' === this.transport.name;\n  this.emit('open');\n  this.flush();\n\n  // we check for `readyState` in case an `open`\n  // listener already closed the socket\n  if ('open' === this.readyState && this.upgrade && this.transport.pause) {\n    debug('starting upgrade probes');\n    for (var i = 0, l = this.upgrades.length; i < l; i++) {\n      this.probe(this.upgrades[i]);\n    }\n  }\n};\n\n/**\n * Handles a packet.\n *\n * @api private\n */\n\nSocket.prototype.onPacket = function (packet) {\n  if ('opening' === this.readyState || 'open' === this.readyState ||\n      'closing' === this.readyState) {\n    debug('socket receive: type \"%s\", data \"%s\"', packet.type, packet.data);\n\n    this.emit('packet', packet);\n\n    // Socket is live - any packet counts\n    this.emit('heartbeat');\n\n    switch (packet.type) {\n      case 'open':\n        this.onHandshake(JSON.parse(packet.data));\n        break;\n\n      case 'pong':\n        this.setPing();\n        this.emit('pong');\n        break;\n\n      case 'error':\n        var err = new Error('server error');\n        err.code = packet.data;\n        this.onError(err);\n        break;\n\n      case 'message':\n        this.emit('data', packet.data);\n        this.emit('message', packet.data);\n        break;\n    }\n  } else {\n    debug('packet received with socket readyState \"%s\"', this.readyState);\n  }\n};\n\n/**\n * Called upon handshake completion.\n *\n * @param {Object} handshake obj\n * @api private\n */\n\nSocket.prototype.onHandshake = function (data) {\n  this.emit('handshake', data);\n  this.id = data.sid;\n  this.transport.query.sid = data.sid;\n  this.upgrades = this.filterUpgrades(data.upgrades);\n  this.pingInterval = data.pingInterval;\n  this.pingTimeout = data.pingTimeout;\n  this.onOpen();\n  // In case open handler closes socket\n  if ('closed' === this.readyState) return;\n  this.setPing();\n\n  // Prolong liveness of socket on heartbeat\n  this.removeListener('heartbeat', this.onHeartbeat);\n  this.on('heartbeat', this.onHeartbeat);\n};\n\n/**\n * Resets ping timeout.\n *\n * @api private\n */\n\nSocket.prototype.onHeartbeat = function (timeout) {\n  clearTimeout(this.pingTimeoutTimer);\n  var self = this;\n  self.pingTimeoutTimer = setTimeout(function () {\n    if ('closed' === self.readyState) return;\n    self.onClose('ping timeout');\n  }, timeout || (self.pingInterval + self.pingTimeout));\n};\n\n/**\n * Pings server every `this.pingInterval` and expects response\n * within `this.pingTimeout` or closes connection.\n *\n * @api private\n */\n\nSocket.prototype.setPing = function () {\n  var self = this;\n  clearTimeout(self.pingIntervalTimer);\n  self.pingIntervalTimer = setTimeout(function () {\n    debug('writing ping packet - expecting pong within %sms', self.pingTimeout);\n    self.ping();\n    self.onHeartbeat(self.pingTimeout);\n  }, self.pingInterval);\n};\n\n/**\n* Sends a ping packet.\n*\n* @api private\n*/\n\nSocket.prototype.ping = function () {\n  var self = this;\n  this.sendPacket('ping', function () {\n    self.emit('ping');\n  });\n};\n\n/**\n * Called on `drain` event\n *\n * @api private\n */\n\nSocket.prototype.onDrain = function () {\n  this.writeBuffer.splice(0, this.prevBufferLen);\n\n  // setting prevBufferLen = 0 is very important\n  // for example, when upgrading, upgrade packet is sent over,\n  // and a nonzero prevBufferLen could cause problems on `drain`\n  this.prevBufferLen = 0;\n\n  if (0 === this.writeBuffer.length) {\n    this.emit('drain');\n  } else {\n    this.flush();\n  }\n};\n\n/**\n * Flush write buffers.\n *\n * @api private\n */\n\nSocket.prototype.flush = function () {\n  if ('closed' !== this.readyState && this.transport.writable &&\n    !this.upgrading && this.writeBuffer.length) {\n    debug('flushing %d packets in socket', this.writeBuffer.length);\n    this.transport.send(this.writeBuffer);\n    // keep track of current length of writeBuffer\n    // splice writeBuffer and callbackBuffer on `drain`\n    this.prevBufferLen = this.writeBuffer.length;\n    this.emit('flush');\n  }\n};\n\n/**\n * Sends a message.\n *\n * @param {String} message.\n * @param {Function} callback function.\n * @param {Object} options.\n * @return {Socket} for chaining.\n * @api public\n */\n\nSocket.prototype.write =\nSocket.prototype.send = function (msg, options, fn) {\n  this.sendPacket('message', msg, options, fn);\n  return this;\n};\n\n/**\n * Sends a packet.\n *\n * @param {String} packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} callback function.\n * @api private\n */\n\nSocket.prototype.sendPacket = function (type, data, options, fn) {\n  if ('function' === typeof data) {\n    fn = data;\n    data = undefined;\n  }\n\n  if ('function' === typeof options) {\n    fn = options;\n    options = null;\n  }\n\n  if ('closing' === this.readyState || 'closed' === this.readyState) {\n    return;\n  }\n\n  options = options || {};\n  options.compress = false !== options.compress;\n\n  var packet = {\n    type: type,\n    data: data,\n    options: options\n  };\n  this.emit('packetCreate', packet);\n  this.writeBuffer.push(packet);\n  if (fn) this.once('flush', fn);\n  this.flush();\n};\n\n/**\n * Closes the connection.\n *\n * @api private\n */\n\nSocket.prototype.close = function () {\n  if ('opening' === this.readyState || 'open' === this.readyState) {\n    this.readyState = 'closing';\n\n    var self = this;\n\n    if (this.writeBuffer.length) {\n      this.once('drain', function () {\n        if (this.upgrading) {\n          waitForUpgrade();\n        } else {\n          close();\n        }\n      });\n    } else if (this.upgrading) {\n      waitForUpgrade();\n    } else {\n      close();\n    }\n  }\n\n  function close () {\n    self.onClose('forced close');\n    debug('socket closing - telling transport to close');\n    self.transport.close();\n  }\n\n  function cleanupAndClose () {\n    self.removeListener('upgrade', cleanupAndClose);\n    self.removeListener('upgradeError', cleanupAndClose);\n    close();\n  }\n\n  function waitForUpgrade () {\n    // wait for upgrade to finish since we can't send packets while pausing a transport\n    self.once('upgrade', cleanupAndClose);\n    self.once('upgradeError', cleanupAndClose);\n  }\n\n  return this;\n};\n\n/**\n * Called upon transport error\n *\n * @api private\n */\n\nSocket.prototype.onError = function (err) {\n  debug('socket error %j', err);\n  Socket.priorWebsocketSuccess = false;\n  this.emit('error', err);\n  this.onClose('transport error', err);\n};\n\n/**\n * Called upon transport close.\n *\n * @api private\n */\n\nSocket.prototype.onClose = function (reason, desc) {\n  if ('opening' === this.readyState || 'open' === this.readyState || 'closing' === this.readyState) {\n    debug('socket close with reason: \"%s\"', reason);\n    var self = this;\n\n    // clear timers\n    clearTimeout(this.pingIntervalTimer);\n    clearTimeout(this.pingTimeoutTimer);\n\n    // stop event from firing again for transport\n    this.transport.removeAllListeners('close');\n\n    // ensure transport won't stay open\n    this.transport.close();\n\n    // ignore further transport communication\n    this.transport.removeAllListeners();\n\n    // set ready state\n    this.readyState = 'closed';\n\n    // clear session id\n    this.id = null;\n\n    // emit close event\n    this.emit('close', reason, desc);\n\n    // clean buffers after, so users can still\n    // grab the buffers on `close` event\n    self.writeBuffer = [];\n    self.prevBufferLen = 0;\n  }\n};\n\n/**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} server upgrades\n * @api private\n *\n */\n\nSocket.prototype.filterUpgrades = function (upgrades) {\n  var filteredUpgrades = [];\n  for (var i = 0, j = upgrades.length; i < j; i++) {\n    if (~index(this.transports, upgrades[i])) filteredUpgrades.push(upgrades[i]);\n  }\n  return filteredUpgrades;\n};\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"./transport\":249,\"./transports/index\":250,\"component-emitter\":243,\"debug\":245,\"engine.io-parser\":256,\"indexof\":262,\"parseqs\":265,\"parseuri\":266}],249:[function(require,module,exports){\n/**\n * Module dependencies.\n */\n\nvar parser = require('engine.io-parser');\nvar Emitter = require('component-emitter');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Transport;\n\n/**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\n */\n\nfunction Transport (opts) {\n  this.path = opts.path;\n  this.hostname = opts.hostname;\n  this.port = opts.port;\n  this.secure = opts.secure;\n  this.query = opts.query;\n  this.timestampParam = opts.timestampParam;\n  this.timestampRequests = opts.timestampRequests;\n  this.readyState = '';\n  this.agent = opts.agent || false;\n  this.socket = opts.socket;\n  this.enablesXDR = opts.enablesXDR;\n\n  // SSL options for Node.js client\n  this.pfx = opts.pfx;\n  this.key = opts.key;\n  this.passphrase = opts.passphrase;\n  this.cert = opts.cert;\n  this.ca = opts.ca;\n  this.ciphers = opts.ciphers;\n  this.rejectUnauthorized = opts.rejectUnauthorized;\n  this.forceNode = opts.forceNode;\n\n  // other options for Node.js client\n  this.extraHeaders = opts.extraHeaders;\n  this.localAddress = opts.localAddress;\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Transport.prototype);\n\n/**\n * Emits an error.\n *\n * @param {String} str\n * @return {Transport} for chaining\n * @api public\n */\n\nTransport.prototype.onError = function (msg, desc) {\n  var err = new Error(msg);\n  err.type = 'TransportError';\n  err.description = desc;\n  this.emit('error', err);\n  return this;\n};\n\n/**\n * Opens the transport.\n *\n * @api public\n */\n\nTransport.prototype.open = function () {\n  if ('closed' === this.readyState || '' === this.readyState) {\n    this.readyState = 'opening';\n    this.doOpen();\n  }\n\n  return this;\n};\n\n/**\n * Closes the transport.\n *\n * @api private\n */\n\nTransport.prototype.close = function () {\n  if ('opening' === this.readyState || 'open' === this.readyState) {\n    this.doClose();\n    this.onClose();\n  }\n\n  return this;\n};\n\n/**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api private\n */\n\nTransport.prototype.send = function (packets) {\n  if ('open' === this.readyState) {\n    this.write(packets);\n  } else {\n    throw new Error('Transport not open');\n  }\n};\n\n/**\n * Called upon open\n *\n * @api private\n */\n\nTransport.prototype.onOpen = function () {\n  this.readyState = 'open';\n  this.writable = true;\n  this.emit('open');\n};\n\n/**\n * Called with data.\n *\n * @param {String} data\n * @api private\n */\n\nTransport.prototype.onData = function (data) {\n  var packet = parser.decodePacket(data, this.socket.binaryType);\n  this.onPacket(packet);\n};\n\n/**\n * Called with a decoded packet.\n */\n\nTransport.prototype.onPacket = function (packet) {\n  this.emit('packet', packet);\n};\n\n/**\n * Called upon close.\n *\n * @api private\n */\n\nTransport.prototype.onClose = function () {\n  this.readyState = 'closed';\n  this.emit('close');\n};\n\n},{\"component-emitter\":243,\"engine.io-parser\":256}],250:[function(require,module,exports){\n(function (global){\n/**\n * Module dependencies\n */\n\nvar XMLHttpRequest = require('xmlhttprequest-ssl');\nvar XHR = require('./polling-xhr');\nvar JSONP = require('./polling-jsonp');\nvar websocket = require('./websocket');\n\n/**\n * Export transports.\n */\n\nexports.polling = polling;\nexports.websocket = websocket;\n\n/**\n * Polling transport polymorphic constructor.\n * Decides on xhr vs jsonp based on feature detection.\n *\n * @api private\n */\n\nfunction polling (opts) {\n  var xhr;\n  var xd = false;\n  var xs = false;\n  var jsonp = false !== opts.jsonp;\n\n  if (global.location) {\n    var isSSL = 'https:' === location.protocol;\n    var port = location.port;\n\n    // some user agents have empty `location.port`\n    if (!port) {\n      port = isSSL ? 443 : 80;\n    }\n\n    xd = opts.hostname !== location.hostname || port !== opts.port;\n    xs = opts.secure !== isSSL;\n  }\n\n  opts.xdomain = xd;\n  opts.xscheme = xs;\n  xhr = new XMLHttpRequest(opts);\n\n  if ('open' in xhr && !opts.forceJSONP) {\n    return new XHR(opts);\n  } else {\n    if (!jsonp) throw new Error('JSONP disabled');\n    return new JSONP(opts);\n  }\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"./polling-jsonp\":251,\"./polling-xhr\":252,\"./websocket\":254,\"xmlhttprequest-ssl\":255}],251:[function(require,module,exports){\n(function (global){\n\n/**\n * Module requirements.\n */\n\nvar Polling = require('./polling');\nvar inherit = require('component-inherit');\n\n/**\n * Module exports.\n */\n\nmodule.exports = JSONPPolling;\n\n/**\n * Cached regular expressions.\n */\n\nvar rNewline = /\\n/g;\nvar rEscapedNewline = /\\\\n/g;\n\n/**\n * Global JSONP callbacks.\n */\n\nvar callbacks;\n\n/**\n * Noop.\n */\n\nfunction empty () { }\n\n/**\n * JSONP Polling constructor.\n *\n * @param {Object} opts.\n * @api public\n */\n\nfunction JSONPPolling (opts) {\n  Polling.call(this, opts);\n\n  this.query = this.query || {};\n\n  // define global callbacks array if not present\n  // we do this here (lazily) to avoid unneeded global pollution\n  if (!callbacks) {\n    // we need to consider multiple engines in the same page\n    if (!global.___eio) global.___eio = [];\n    callbacks = global.___eio;\n  }\n\n  // callback identifier\n  this.index = callbacks.length;\n\n  // add callback to jsonp global\n  var self = this;\n  callbacks.push(function (msg) {\n    self.onData(msg);\n  });\n\n  // append to query string\n  this.query.j = this.index;\n\n  // prevent spurious errors from being emitted when the window is unloaded\n  if (global.document && global.addEventListener) {\n    global.addEventListener('beforeunload', function () {\n      if (self.script) self.script.onerror = empty;\n    }, false);\n  }\n}\n\n/**\n * Inherits from Polling.\n */\n\ninherit(JSONPPolling, Polling);\n\n/*\n * JSONP only supports binary as base64 encoded strings\n */\n\nJSONPPolling.prototype.supportsBinary = false;\n\n/**\n * Closes the socket.\n *\n * @api private\n */\n\nJSONPPolling.prototype.doClose = function () {\n  if (this.script) {\n    this.script.parentNode.removeChild(this.script);\n    this.script = null;\n  }\n\n  if (this.form) {\n    this.form.parentNode.removeChild(this.form);\n    this.form = null;\n    this.iframe = null;\n  }\n\n  Polling.prototype.doClose.call(this);\n};\n\n/**\n * Starts a poll cycle.\n *\n * @api private\n */\n\nJSONPPolling.prototype.doPoll = function () {\n  var self = this;\n  var script = document.createElement('script');\n\n  if (this.script) {\n    this.script.parentNode.removeChild(this.script);\n    this.script = null;\n  }\n\n  script.async = true;\n  script.src = this.uri();\n  script.onerror = function (e) {\n    self.onError('jsonp poll error', e);\n  };\n\n  var insertAt = document.getElementsByTagName('script')[0];\n  if (insertAt) {\n    insertAt.parentNode.insertBefore(script, insertAt);\n  } else {\n    (document.head || document.body).appendChild(script);\n  }\n  this.script = script;\n\n  var isUAgecko = 'undefined' !== typeof navigator && /gecko/i.test(navigator.userAgent);\n\n  if (isUAgecko) {\n    setTimeout(function () {\n      var iframe = document.createElement('iframe');\n      document.body.appendChild(iframe);\n      document.body.removeChild(iframe);\n    }, 100);\n  }\n};\n\n/**\n * Writes with a hidden iframe.\n *\n * @param {String} data to send\n * @param {Function} called upon flush.\n * @api private\n */\n\nJSONPPolling.prototype.doWrite = function (data, fn) {\n  var self = this;\n\n  if (!this.form) {\n    var form = document.createElement('form');\n    var area = document.createElement('textarea');\n    var id = this.iframeId = 'eio_iframe_' + this.index;\n    var iframe;\n\n    form.className = 'socketio';\n    form.style.position = 'absolute';\n    form.style.top = '-1000px';\n    form.style.left = '-1000px';\n    form.target = id;\n    form.method = 'POST';\n    form.setAttribute('accept-charset', 'utf-8');\n    area.name = 'd';\n    form.appendChild(area);\n    document.body.appendChild(form);\n\n    this.form = form;\n    this.area = area;\n  }\n\n  this.form.action = this.uri();\n\n  function complete () {\n    initIframe();\n    fn();\n  }\n\n  function initIframe () {\n    if (self.iframe) {\n      try {\n        self.form.removeChild(self.iframe);\n      } catch (e) {\n        self.onError('jsonp polling iframe removal error', e);\n      }\n    }\n\n    try {\n      // ie6 dynamic iframes with target=\"\" support (thanks Chris Lambacher)\n      var html = '<iframe src=\"javascript:0\" name=\"' + self.iframeId + '\">';\n      iframe = document.createElement(html);\n    } catch (e) {\n      iframe = document.createElement('iframe');\n      iframe.name = self.iframeId;\n      iframe.src = 'javascript:0';\n    }\n\n    iframe.id = self.iframeId;\n\n    self.form.appendChild(iframe);\n    self.iframe = iframe;\n  }\n\n  initIframe();\n\n  // escape \\n to prevent it from being converted into \\r\\n by some UAs\n  // double escaping is required for escaped new lines because unescaping of new lines can be done safely on server-side\n  data = data.replace(rEscapedNewline, '\\\\\\n');\n  this.area.value = data.replace(rNewline, '\\\\n');\n\n  try {\n    this.form.submit();\n  } catch (e) {}\n\n  if (this.iframe.attachEvent) {\n    this.iframe.onreadystatechange = function () {\n      if (self.iframe.readyState === 'complete') {\n        complete();\n      }\n    };\n  } else {\n    this.iframe.onload = complete;\n  }\n};\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"./polling\":253,\"component-inherit\":244}],252:[function(require,module,exports){\n(function (global){\n/**\n * Module requirements.\n */\n\nvar XMLHttpRequest = require('xmlhttprequest-ssl');\nvar Polling = require('./polling');\nvar Emitter = require('component-emitter');\nvar inherit = require('component-inherit');\nvar debug = require('debug')('engine.io-client:polling-xhr');\n\n/**\n * Module exports.\n */\n\nmodule.exports = XHR;\nmodule.exports.Request = Request;\n\n/**\n * Empty function\n */\n\nfunction empty () {}\n\n/**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction XHR (opts) {\n  Polling.call(this, opts);\n  this.requestTimeout = opts.requestTimeout;\n  this.extraHeaders = opts.extraHeaders;\n\n  if (global.location) {\n    var isSSL = 'https:' === location.protocol;\n    var port = location.port;\n\n    // some user agents have empty `location.port`\n    if (!port) {\n      port = isSSL ? 443 : 80;\n    }\n\n    this.xd = opts.hostname !== global.location.hostname ||\n      port !== opts.port;\n    this.xs = opts.secure !== isSSL;\n  }\n}\n\n/**\n * Inherits from Polling.\n */\n\ninherit(XHR, Polling);\n\n/**\n * XHR supports binary\n */\n\nXHR.prototype.supportsBinary = true;\n\n/**\n * Creates a request.\n *\n * @param {String} method\n * @api private\n */\n\nXHR.prototype.request = function (opts) {\n  opts = opts || {};\n  opts.uri = this.uri();\n  opts.xd = this.xd;\n  opts.xs = this.xs;\n  opts.agent = this.agent || false;\n  opts.supportsBinary = this.supportsBinary;\n  opts.enablesXDR = this.enablesXDR;\n\n  // SSL options for Node.js client\n  opts.pfx = this.pfx;\n  opts.key = this.key;\n  opts.passphrase = this.passphrase;\n  opts.cert = this.cert;\n  opts.ca = this.ca;\n  opts.ciphers = this.ciphers;\n  opts.rejectUnauthorized = this.rejectUnauthorized;\n  opts.requestTimeout = this.requestTimeout;\n\n  // other options for Node.js client\n  opts.extraHeaders = this.extraHeaders;\n\n  return new Request(opts);\n};\n\n/**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @api private\n */\n\nXHR.prototype.doWrite = function (data, fn) {\n  var isBinary = typeof data !== 'string' && data !== undefined;\n  var req = this.request({ method: 'POST', data: data, isBinary: isBinary });\n  var self = this;\n  req.on('success', fn);\n  req.on('error', function (err) {\n    self.onError('xhr post error', err);\n  });\n  this.sendXhr = req;\n};\n\n/**\n * Starts a poll cycle.\n *\n * @api private\n */\n\nXHR.prototype.doPoll = function () {\n  debug('xhr poll');\n  var req = this.request();\n  var self = this;\n  req.on('data', function (data) {\n    self.onData(data);\n  });\n  req.on('error', function (err) {\n    self.onError('xhr poll error', err);\n  });\n  this.pollXhr = req;\n};\n\n/**\n * Request constructor\n *\n * @param {Object} options\n * @api public\n */\n\nfunction Request (opts) {\n  this.method = opts.method || 'GET';\n  this.uri = opts.uri;\n  this.xd = !!opts.xd;\n  this.xs = !!opts.xs;\n  this.async = false !== opts.async;\n  this.data = undefined !== opts.data ? opts.data : null;\n  this.agent = opts.agent;\n  this.isBinary = opts.isBinary;\n  this.supportsBinary = opts.supportsBinary;\n  this.enablesXDR = opts.enablesXDR;\n  this.requestTimeout = opts.requestTimeout;\n\n  // SSL options for Node.js client\n  this.pfx = opts.pfx;\n  this.key = opts.key;\n  this.passphrase = opts.passphrase;\n  this.cert = opts.cert;\n  this.ca = opts.ca;\n  this.ciphers = opts.ciphers;\n  this.rejectUnauthorized = opts.rejectUnauthorized;\n\n  // other options for Node.js client\n  this.extraHeaders = opts.extraHeaders;\n\n  this.create();\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Request.prototype);\n\n/**\n * Creates the XHR object and sends the request.\n *\n * @api private\n */\n\nRequest.prototype.create = function () {\n  var opts = { agent: this.agent, xdomain: this.xd, xscheme: this.xs, enablesXDR: this.enablesXDR };\n\n  // SSL options for Node.js client\n  opts.pfx = this.pfx;\n  opts.key = this.key;\n  opts.passphrase = this.passphrase;\n  opts.cert = this.cert;\n  opts.ca = this.ca;\n  opts.ciphers = this.ciphers;\n  opts.rejectUnauthorized = this.rejectUnauthorized;\n\n  var xhr = this.xhr = new XMLHttpRequest(opts);\n  var self = this;\n\n  try {\n    debug('xhr open %s: %s', this.method, this.uri);\n    xhr.open(this.method, this.uri, this.async);\n    try {\n      if (this.extraHeaders) {\n        xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n        for (var i in this.extraHeaders) {\n          if (this.extraHeaders.hasOwnProperty(i)) {\n            xhr.setRequestHeader(i, this.extraHeaders[i]);\n          }\n        }\n      }\n    } catch (e) {}\n\n    if ('POST' === this.method) {\n      try {\n        if (this.isBinary) {\n          xhr.setRequestHeader('Content-type', 'application/octet-stream');\n        } else {\n          xhr.setRequestHeader('Content-type', 'text/plain;charset=UTF-8');\n        }\n      } catch (e) {}\n    }\n\n    try {\n      xhr.setRequestHeader('Accept', '*/*');\n    } catch (e) {}\n\n    // ie6 check\n    if ('withCredentials' in xhr) {\n      xhr.withCredentials = true;\n    }\n\n    if (this.requestTimeout) {\n      xhr.timeout = this.requestTimeout;\n    }\n\n    if (this.hasXDR()) {\n      xhr.onload = function () {\n        self.onLoad();\n      };\n      xhr.onerror = function () {\n        self.onError(xhr.responseText);\n      };\n    } else {\n      xhr.onreadystatechange = function () {\n        if (xhr.readyState === 2) {\n          try {\n            var contentType = xhr.getResponseHeader('Content-Type');\n            if (self.supportsBinary && contentType === 'application/octet-stream') {\n              xhr.responseType = 'arraybuffer';\n            }\n          } catch (e) {}\n        }\n        if (4 !== xhr.readyState) return;\n        if (200 === xhr.status || 1223 === xhr.status) {\n          self.onLoad();\n        } else {\n          // make sure the `error` event handler that's user-set\n          // does not throw in the same tick and gets caught here\n          setTimeout(function () {\n            self.onError(xhr.status);\n          }, 0);\n        }\n      };\n    }\n\n    debug('xhr data %s', this.data);\n    xhr.send(this.data);\n  } catch (e) {\n    // Need to defer since .create() is called directly fhrom the constructor\n    // and thus the 'error' event can only be only bound *after* this exception\n    // occurs.  Therefore, also, we cannot throw here at all.\n    setTimeout(function () {\n      self.onError(e);\n    }, 0);\n    return;\n  }\n\n  if (global.document) {\n    this.index = Request.requestsCount++;\n    Request.requests[this.index] = this;\n  }\n};\n\n/**\n * Called upon successful response.\n *\n * @api private\n */\n\nRequest.prototype.onSuccess = function () {\n  this.emit('success');\n  this.cleanup();\n};\n\n/**\n * Called if we have data.\n *\n * @api private\n */\n\nRequest.prototype.onData = function (data) {\n  this.emit('data', data);\n  this.onSuccess();\n};\n\n/**\n * Called upon error.\n *\n * @api private\n */\n\nRequest.prototype.onError = function (err) {\n  this.emit('error', err);\n  this.cleanup(true);\n};\n\n/**\n * Cleans up house.\n *\n * @api private\n */\n\nRequest.prototype.cleanup = function (fromError) {\n  if ('undefined' === typeof this.xhr || null === this.xhr) {\n    return;\n  }\n  // xmlhttprequest\n  if (this.hasXDR()) {\n    this.xhr.onload = this.xhr.onerror = empty;\n  } else {\n    this.xhr.onreadystatechange = empty;\n  }\n\n  if (fromError) {\n    try {\n      this.xhr.abort();\n    } catch (e) {}\n  }\n\n  if (global.document) {\n    delete Request.requests[this.index];\n  }\n\n  this.xhr = null;\n};\n\n/**\n * Called upon load.\n *\n * @api private\n */\n\nRequest.prototype.onLoad = function () {\n  var data;\n  try {\n    var contentType;\n    try {\n      contentType = this.xhr.getResponseHeader('Content-Type');\n    } catch (e) {}\n    if (contentType === 'application/octet-stream') {\n      data = this.xhr.response || this.xhr.responseText;\n    } else {\n      data = this.xhr.responseText;\n    }\n  } catch (e) {\n    this.onError(e);\n  }\n  if (null != data) {\n    this.onData(data);\n  }\n};\n\n/**\n * Check if it has XDomainRequest.\n *\n * @api private\n */\n\nRequest.prototype.hasXDR = function () {\n  return 'undefined' !== typeof global.XDomainRequest && !this.xs && this.enablesXDR;\n};\n\n/**\n * Aborts the request.\n *\n * @api public\n */\n\nRequest.prototype.abort = function () {\n  this.cleanup();\n};\n\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\n\nRequest.requestsCount = 0;\nRequest.requests = {};\n\nif (global.document) {\n  if (global.attachEvent) {\n    global.attachEvent('onunload', unloadHandler);\n  } else if (global.addEventListener) {\n    global.addEventListener('beforeunload', unloadHandler, false);\n  }\n}\n\nfunction unloadHandler () {\n  for (var i in Request.requests) {\n    if (Request.requests.hasOwnProperty(i)) {\n      Request.requests[i].abort();\n    }\n  }\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"./polling\":253,\"component-emitter\":243,\"component-inherit\":244,\"debug\":245,\"xmlhttprequest-ssl\":255}],253:[function(require,module,exports){\n/**\n * Module dependencies.\n */\n\nvar Transport = require('../transport');\nvar parseqs = require('parseqs');\nvar parser = require('engine.io-parser');\nvar inherit = require('component-inherit');\nvar yeast = require('yeast');\nvar debug = require('debug')('engine.io-client:polling');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Polling;\n\n/**\n * Is XHR2 supported?\n */\n\nvar hasXHR2 = (function () {\n  var XMLHttpRequest = require('xmlhttprequest-ssl');\n  var xhr = new XMLHttpRequest({ xdomain: false });\n  return null != xhr.responseType;\n})();\n\n/**\n * Polling interface.\n *\n * @param {Object} opts\n * @api private\n */\n\nfunction Polling (opts) {\n  var forceBase64 = (opts && opts.forceBase64);\n  if (!hasXHR2 || forceBase64) {\n    this.supportsBinary = false;\n  }\n  Transport.call(this, opts);\n}\n\n/**\n * Inherits from Transport.\n */\n\ninherit(Polling, Transport);\n\n/**\n * Transport name.\n */\n\nPolling.prototype.name = 'polling';\n\n/**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @api private\n */\n\nPolling.prototype.doOpen = function () {\n  this.poll();\n};\n\n/**\n * Pauses polling.\n *\n * @param {Function} callback upon buffers are flushed and transport is paused\n * @api private\n */\n\nPolling.prototype.pause = function (onPause) {\n  var self = this;\n\n  this.readyState = 'pausing';\n\n  function pause () {\n    debug('paused');\n    self.readyState = 'paused';\n    onPause();\n  }\n\n  if (this.polling || !this.writable) {\n    var total = 0;\n\n    if (this.polling) {\n      debug('we are currently polling - waiting to pause');\n      total++;\n      this.once('pollComplete', function () {\n        debug('pre-pause polling complete');\n        --total || pause();\n      });\n    }\n\n    if (!this.writable) {\n      debug('we are currently writing - waiting to pause');\n      total++;\n      this.once('drain', function () {\n        debug('pre-pause writing complete');\n        --total || pause();\n      });\n    }\n  } else {\n    pause();\n  }\n};\n\n/**\n * Starts polling cycle.\n *\n * @api public\n */\n\nPolling.prototype.poll = function () {\n  debug('polling');\n  this.polling = true;\n  this.doPoll();\n  this.emit('poll');\n};\n\n/**\n * Overloads onData to detect payloads.\n *\n * @api private\n */\n\nPolling.prototype.onData = function (data) {\n  var self = this;\n  debug('polling got data %s', data);\n  var callback = function (packet, index, total) {\n    // if its the first message we consider the transport open\n    if ('opening' === self.readyState) {\n      self.onOpen();\n    }\n\n    // if its a close packet, we close the ongoing requests\n    if ('close' === packet.type) {\n      self.onClose();\n      return false;\n    }\n\n    // otherwise bypass onData and handle the message\n    self.onPacket(packet);\n  };\n\n  // decode payload\n  parser.decodePayload(data, this.socket.binaryType, callback);\n\n  // if an event did not trigger closing\n  if ('closed' !== this.readyState) {\n    // if we got data we're not polling\n    this.polling = false;\n    this.emit('pollComplete');\n\n    if ('open' === this.readyState) {\n      this.poll();\n    } else {\n      debug('ignoring poll - transport state \"%s\"', this.readyState);\n    }\n  }\n};\n\n/**\n * For polling, send a close packet.\n *\n * @api private\n */\n\nPolling.prototype.doClose = function () {\n  var self = this;\n\n  function close () {\n    debug('writing close packet');\n    self.write([{ type: 'close' }]);\n  }\n\n  if ('open' === this.readyState) {\n    debug('transport open - closing');\n    close();\n  } else {\n    // in case we're trying to close while\n    // handshaking is in progress (GH-164)\n    debug('transport not open - deferring close');\n    this.once('open', close);\n  }\n};\n\n/**\n * Writes a packets payload.\n *\n * @param {Array} data packets\n * @param {Function} drain callback\n * @api private\n */\n\nPolling.prototype.write = function (packets) {\n  var self = this;\n  this.writable = false;\n  var callbackfn = function () {\n    self.writable = true;\n    self.emit('drain');\n  };\n\n  parser.encodePayload(packets, this.supportsBinary, function (data) {\n    self.doWrite(data, callbackfn);\n  });\n};\n\n/**\n * Generates uri for connection.\n *\n * @api private\n */\n\nPolling.prototype.uri = function () {\n  var query = this.query || {};\n  var schema = this.secure ? 'https' : 'http';\n  var port = '';\n\n  // cache busting is forced\n  if (false !== this.timestampRequests) {\n    query[this.timestampParam] = yeast();\n  }\n\n  if (!this.supportsBinary && !query.sid) {\n    query.b64 = 1;\n  }\n\n  query = parseqs.encode(query);\n\n  // avoid port if default for schema\n  if (this.port && (('https' === schema && Number(this.port) !== 443) ||\n     ('http' === schema && Number(this.port) !== 80))) {\n    port = ':' + this.port;\n  }\n\n  // prepend ? to query\n  if (query.length) {\n    query = '?' + query;\n  }\n\n  var ipv6 = this.hostname.indexOf(':') !== -1;\n  return schema + '://' + (ipv6 ? '[' + this.hostname + ']' : this.hostname) + port + this.path + query;\n};\n\n},{\"../transport\":249,\"component-inherit\":244,\"debug\":245,\"engine.io-parser\":256,\"parseqs\":265,\"xmlhttprequest-ssl\":255,\"yeast\":306}],254:[function(require,module,exports){\n(function (global){\n/**\n * Module dependencies.\n */\n\nvar Transport = require('../transport');\nvar parser = require('engine.io-parser');\nvar parseqs = require('parseqs');\nvar inherit = require('component-inherit');\nvar yeast = require('yeast');\nvar debug = require('debug')('engine.io-client:websocket');\nvar BrowserWebSocket = global.WebSocket || global.MozWebSocket;\nvar NodeWebSocket;\nif (typeof window === 'undefined') {\n  try {\n    NodeWebSocket = require('ws');\n  } catch (e) { }\n}\n\n/**\n * Get either the `WebSocket` or `MozWebSocket` globals\n * in the browser or try to resolve WebSocket-compatible\n * interface exposed by `ws` for Node-like environment.\n */\n\nvar WebSocket = BrowserWebSocket;\nif (!WebSocket && typeof window === 'undefined') {\n  WebSocket = NodeWebSocket;\n}\n\n/**\n * Module exports.\n */\n\nmodule.exports = WS;\n\n/**\n * WebSocket transport constructor.\n *\n * @api {Object} connection options\n * @api public\n */\n\nfunction WS (opts) {\n  var forceBase64 = (opts && opts.forceBase64);\n  if (forceBase64) {\n    this.supportsBinary = false;\n  }\n  this.perMessageDeflate = opts.perMessageDeflate;\n  this.usingBrowserWebSocket = BrowserWebSocket && !opts.forceNode;\n  this.protocols = opts.protocols;\n  if (!this.usingBrowserWebSocket) {\n    WebSocket = NodeWebSocket;\n  }\n  Transport.call(this, opts);\n}\n\n/**\n * Inherits from Transport.\n */\n\ninherit(WS, Transport);\n\n/**\n * Transport name.\n *\n * @api public\n */\n\nWS.prototype.name = 'websocket';\n\n/*\n * WebSockets support binary\n */\n\nWS.prototype.supportsBinary = true;\n\n/**\n * Opens socket.\n *\n * @api private\n */\n\nWS.prototype.doOpen = function () {\n  if (!this.check()) {\n    // let probe timeout\n    return;\n  }\n\n  var uri = this.uri();\n  var protocols = this.protocols;\n  var opts = {\n    agent: this.agent,\n    perMessageDeflate: this.perMessageDeflate\n  };\n\n  // SSL options for Node.js client\n  opts.pfx = this.pfx;\n  opts.key = this.key;\n  opts.passphrase = this.passphrase;\n  opts.cert = this.cert;\n  opts.ca = this.ca;\n  opts.ciphers = this.ciphers;\n  opts.rejectUnauthorized = this.rejectUnauthorized;\n  if (this.extraHeaders) {\n    opts.headers = this.extraHeaders;\n  }\n  if (this.localAddress) {\n    opts.localAddress = this.localAddress;\n  }\n\n  try {\n    this.ws = this.usingBrowserWebSocket ? (protocols ? new WebSocket(uri, protocols) : new WebSocket(uri)) : new WebSocket(uri, protocols, opts);\n  } catch (err) {\n    return this.emit('error', err);\n  }\n\n  if (this.ws.binaryType === undefined) {\n    this.supportsBinary = false;\n  }\n\n  if (this.ws.supports && this.ws.supports.binary) {\n    this.supportsBinary = true;\n    this.ws.binaryType = 'nodebuffer';\n  } else {\n    this.ws.binaryType = 'arraybuffer';\n  }\n\n  this.addEventListeners();\n};\n\n/**\n * Adds event listeners to the socket\n *\n * @api private\n */\n\nWS.prototype.addEventListeners = function () {\n  var self = this;\n\n  this.ws.onopen = function () {\n    self.onOpen();\n  };\n  this.ws.onclose = function () {\n    self.onClose();\n  };\n  this.ws.onmessage = function (ev) {\n    self.onData(ev.data);\n  };\n  this.ws.onerror = function (e) {\n    self.onError('websocket error', e);\n  };\n};\n\n/**\n * Writes data to socket.\n *\n * @param {Array} array of packets.\n * @api private\n */\n\nWS.prototype.write = function (packets) {\n  var self = this;\n  this.writable = false;\n\n  // encodePacket efficient as it uses WS framing\n  // no need for encodePayload\n  var total = packets.length;\n  for (var i = 0, l = total; i < l; i++) {\n    (function (packet) {\n      parser.encodePacket(packet, self.supportsBinary, function (data) {\n        if (!self.usingBrowserWebSocket) {\n          // always create a new object (GH-437)\n          var opts = {};\n          if (packet.options) {\n            opts.compress = packet.options.compress;\n          }\n\n          if (self.perMessageDeflate) {\n            var len = 'string' === typeof data ? global.Buffer.byteLength(data) : data.length;\n            if (len < self.perMessageDeflate.threshold) {\n              opts.compress = false;\n            }\n          }\n        }\n\n        // Sometimes the websocket has already been closed but the browser didn't\n        // have a chance of informing us about it yet, in that case send will\n        // throw an error\n        try {\n          if (self.usingBrowserWebSocket) {\n            // TypeError is thrown when passing the second argument on Safari\n            self.ws.send(data);\n          } else {\n            self.ws.send(data, opts);\n          }\n        } catch (e) {\n          debug('websocket closed before onclose event');\n        }\n\n        --total || done();\n      });\n    })(packets[i]);\n  }\n\n  function done () {\n    self.emit('flush');\n\n    // fake drain\n    // defer to next tick to allow Socket to clear writeBuffer\n    setTimeout(function () {\n      self.writable = true;\n      self.emit('drain');\n    }, 0);\n  }\n};\n\n/**\n * Called upon close\n *\n * @api private\n */\n\nWS.prototype.onClose = function () {\n  Transport.prototype.onClose.call(this);\n};\n\n/**\n * Closes socket.\n *\n * @api private\n */\n\nWS.prototype.doClose = function () {\n  if (typeof this.ws !== 'undefined') {\n    this.ws.close();\n  }\n};\n\n/**\n * Generates uri for connection.\n *\n * @api private\n */\n\nWS.prototype.uri = function () {\n  var query = this.query || {};\n  var schema = this.secure ? 'wss' : 'ws';\n  var port = '';\n\n  // avoid port if default for schema\n  if (this.port && (('wss' === schema && Number(this.port) !== 443) ||\n    ('ws' === schema && Number(this.port) !== 80))) {\n    port = ':' + this.port;\n  }\n\n  // append timestamp to URI\n  if (this.timestampRequests) {\n    query[this.timestampParam] = yeast();\n  }\n\n  // communicate binary support capabilities\n  if (!this.supportsBinary) {\n    query.b64 = 1;\n  }\n\n  query = parseqs.encode(query);\n\n  // prepend ? to query\n  if (query.length) {\n    query = '?' + query;\n  }\n\n  var ipv6 = this.hostname.indexOf(':') !== -1;\n  return schema + '://' + (ipv6 ? '[' + this.hostname + ']' : this.hostname) + port + this.path + query;\n};\n\n/**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @api public\n */\n\nWS.prototype.check = function () {\n  return !!WebSocket && !('__initialize' in WebSocket && this.name === WS.prototype.name);\n};\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"../transport\":249,\"component-inherit\":244,\"debug\":245,\"engine.io-parser\":256,\"parseqs\":265,\"ws\":240,\"yeast\":306}],255:[function(require,module,exports){\n(function (global){\n// browser shim for xmlhttprequest module\n\nvar hasCORS = require('has-cors');\n\nmodule.exports = function (opts) {\n  var xdomain = opts.xdomain;\n\n  // scheme must be same when usign XDomainRequest\n  // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx\n  var xscheme = opts.xscheme;\n\n  // XDomainRequest has a flow of not sending cookie, therefore it should be disabled as a default.\n  // https://github.com/Automattic/engine.io-client/pull/217\n  var enablesXDR = opts.enablesXDR;\n\n  // XMLHttpRequest can be disabled on IE\n  try {\n    if ('undefined' !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n      return new XMLHttpRequest();\n    }\n  } catch (e) { }\n\n  // Use XDomainRequest for IE8 if enablesXDR is true\n  // because loading bar keeps flashing when using jsonp-polling\n  // https://github.com/yujiosaka/socke.io-ie8-loading-example\n  try {\n    if ('undefined' !== typeof XDomainRequest && !xscheme && enablesXDR) {\n      return new XDomainRequest();\n    }\n  } catch (e) { }\n\n  if (!xdomain) {\n    try {\n      return new global[['Active'].concat('Object').join('X')]('Microsoft.XMLHTTP');\n    } catch (e) { }\n  }\n};\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"has-cors\":260}],256:[function(require,module,exports){\n(function (global){\n/**\n * Module dependencies.\n */\n\nvar keys = require('./keys');\nvar hasBinary = require('has-binary2');\nvar sliceBuffer = require('arraybuffer.slice');\nvar after = require('after');\nvar utf8 = require('./utf8');\n\nvar base64encoder;\nif (global && global.ArrayBuffer) {\n  base64encoder = require('base64-arraybuffer');\n}\n\n/**\n * Check if we are running an android browser. That requires us to use\n * ArrayBuffer with polling transports...\n *\n * http://ghinda.net/jpeg-blob-ajax-android/\n */\n\nvar isAndroid = typeof navigator !== 'undefined' && /Android/i.test(navigator.userAgent);\n\n/**\n * Check if we are running in PhantomJS.\n * Uploading a Blob with PhantomJS does not work correctly, as reported here:\n * https://github.com/ariya/phantomjs/issues/11395\n * @type boolean\n */\nvar isPhantomJS = typeof navigator !== 'undefined' && /PhantomJS/i.test(navigator.userAgent);\n\n/**\n * When true, avoids using Blobs to encode payloads.\n * @type boolean\n */\nvar dontSendBlobs = isAndroid || isPhantomJS;\n\n/**\n * Current protocol version.\n */\n\nexports.protocol = 3;\n\n/**\n * Packet types.\n */\n\nvar packets = exports.packets = {\n    open:     0    // non-ws\n  , close:    1    // non-ws\n  , ping:     2\n  , pong:     3\n  , message:  4\n  , upgrade:  5\n  , noop:     6\n};\n\nvar packetslist = keys(packets);\n\n/**\n * Premade error packet.\n */\n\nvar err = { type: 'error', data: 'parser error' };\n\n/**\n * Create a blob api even for blob builder when vendor prefixes exist\n */\n\nvar Blob = require('blob');\n\n/**\n * Encodes a packet.\n *\n *     <packet type id> [ <data> ]\n *\n * Example:\n *\n *     5hello world\n *     3\n *     4\n *\n * Binary is encoded in an identical principle\n *\n * @api private\n */\n\nexports.encodePacket = function (packet, supportsBinary, utf8encode, callback) {\n  if (typeof supportsBinary === 'function') {\n    callback = supportsBinary;\n    supportsBinary = false;\n  }\n\n  if (typeof utf8encode === 'function') {\n    callback = utf8encode;\n    utf8encode = null;\n  }\n\n  var data = (packet.data === undefined)\n    ? undefined\n    : packet.data.buffer || packet.data;\n\n  if (global.ArrayBuffer && data instanceof ArrayBuffer) {\n    return encodeArrayBuffer(packet, supportsBinary, callback);\n  } else if (Blob && data instanceof global.Blob) {\n    return encodeBlob(packet, supportsBinary, callback);\n  }\n\n  // might be an object with { base64: true, data: dataAsBase64String }\n  if (data && data.base64) {\n    return encodeBase64Object(packet, callback);\n  }\n\n  // Sending data as a utf-8 string\n  var encoded = packets[packet.type];\n\n  // data fragment is optional\n  if (undefined !== packet.data) {\n    encoded += utf8encode ? utf8.encode(String(packet.data), { strict: false }) : String(packet.data);\n  }\n\n  return callback('' + encoded);\n\n};\n\nfunction encodeBase64Object(packet, callback) {\n  // packet data is an object { base64: true, data: dataAsBase64String }\n  var message = 'b' + exports.packets[packet.type] + packet.data.data;\n  return callback(message);\n}\n\n/**\n * Encode packet helpers for binary types\n */\n\nfunction encodeArrayBuffer(packet, supportsBinary, callback) {\n  if (!supportsBinary) {\n    return exports.encodeBase64Packet(packet, callback);\n  }\n\n  var data = packet.data;\n  var contentArray = new Uint8Array(data);\n  var resultBuffer = new Uint8Array(1 + data.byteLength);\n\n  resultBuffer[0] = packets[packet.type];\n  for (var i = 0; i < contentArray.length; i++) {\n    resultBuffer[i+1] = contentArray[i];\n  }\n\n  return callback(resultBuffer.buffer);\n}\n\nfunction encodeBlobAsArrayBuffer(packet, supportsBinary, callback) {\n  if (!supportsBinary) {\n    return exports.encodeBase64Packet(packet, callback);\n  }\n\n  var fr = new FileReader();\n  fr.onload = function() {\n    packet.data = fr.result;\n    exports.encodePacket(packet, supportsBinary, true, callback);\n  };\n  return fr.readAsArrayBuffer(packet.data);\n}\n\nfunction encodeBlob(packet, supportsBinary, callback) {\n  if (!supportsBinary) {\n    return exports.encodeBase64Packet(packet, callback);\n  }\n\n  if (dontSendBlobs) {\n    return encodeBlobAsArrayBuffer(packet, supportsBinary, callback);\n  }\n\n  var length = new Uint8Array(1);\n  length[0] = packets[packet.type];\n  var blob = new Blob([length.buffer, packet.data]);\n\n  return callback(blob);\n}\n\n/**\n * Encodes a packet with binary data in a base64 string\n *\n * @param {Object} packet, has `type` and `data`\n * @return {String} base64 encoded message\n */\n\nexports.encodeBase64Packet = function(packet, callback) {\n  var message = 'b' + exports.packets[packet.type];\n  if (Blob && packet.data instanceof global.Blob) {\n    var fr = new FileReader();\n    fr.onload = function() {\n      var b64 = fr.result.split(',')[1];\n      callback(message + b64);\n    };\n    return fr.readAsDataURL(packet.data);\n  }\n\n  var b64data;\n  try {\n    b64data = String.fromCharCode.apply(null, new Uint8Array(packet.data));\n  } catch (e) {\n    // iPhone Safari doesn't let you apply with typed arrays\n    var typed = new Uint8Array(packet.data);\n    var basic = new Array(typed.length);\n    for (var i = 0; i < typed.length; i++) {\n      basic[i] = typed[i];\n    }\n    b64data = String.fromCharCode.apply(null, basic);\n  }\n  message += global.btoa(b64data);\n  return callback(message);\n};\n\n/**\n * Decodes a packet. Changes format to Blob if requested.\n *\n * @return {Object} with `type` and `data` (if any)\n * @api private\n */\n\nexports.decodePacket = function (data, binaryType, utf8decode) {\n  if (data === undefined) {\n    return err;\n  }\n  // String data\n  if (typeof data === 'string') {\n    if (data.charAt(0) === 'b') {\n      return exports.decodeBase64Packet(data.substr(1), binaryType);\n    }\n\n    if (utf8decode) {\n      data = tryDecode(data);\n      if (data === false) {\n        return err;\n      }\n    }\n    var type = data.charAt(0);\n\n    if (Number(type) != type || !packetslist[type]) {\n      return err;\n    }\n\n    if (data.length > 1) {\n      return { type: packetslist[type], data: data.substring(1) };\n    } else {\n      return { type: packetslist[type] };\n    }\n  }\n\n  var asArray = new Uint8Array(data);\n  var type = asArray[0];\n  var rest = sliceBuffer(data, 1);\n  if (Blob && binaryType === 'blob') {\n    rest = new Blob([rest]);\n  }\n  return { type: packetslist[type], data: rest };\n};\n\nfunction tryDecode(data) {\n  try {\n    data = utf8.decode(data, { strict: false });\n  } catch (e) {\n    return false;\n  }\n  return data;\n}\n\n/**\n * Decodes a packet encoded in a base64 string\n *\n * @param {String} base64 encoded message\n * @return {Object} with `type` and `data` (if any)\n */\n\nexports.decodeBase64Packet = function(msg, binaryType) {\n  var type = packetslist[msg.charAt(0)];\n  if (!base64encoder) {\n    return { type: type, data: { base64: true, data: msg.substr(1) } };\n  }\n\n  var data = base64encoder.decode(msg.substr(1));\n\n  if (binaryType === 'blob' && Blob) {\n    data = new Blob([data]);\n  }\n\n  return { type: type, data: data };\n};\n\n/**\n * Encodes multiple messages (payload).\n *\n *     <length>:data\n *\n * Example:\n *\n *     11:hello world2:hi\n *\n * If any contents are binary, they will be encoded as base64 strings. Base64\n * encoded strings are marked with a b before the length specifier\n *\n * @param {Array} packets\n * @api private\n */\n\nexports.encodePayload = function (packets, supportsBinary, callback) {\n  if (typeof supportsBinary === 'function') {\n    callback = supportsBinary;\n    supportsBinary = null;\n  }\n\n  var isBinary = hasBinary(packets);\n\n  if (supportsBinary && isBinary) {\n    if (Blob && !dontSendBlobs) {\n      return exports.encodePayloadAsBlob(packets, callback);\n    }\n\n    return exports.encodePayloadAsArrayBuffer(packets, callback);\n  }\n\n  if (!packets.length) {\n    return callback('0:');\n  }\n\n  function setLengthHeader(message) {\n    return message.length + ':' + message;\n  }\n\n  function encodeOne(packet, doneCallback) {\n    exports.encodePacket(packet, !isBinary ? false : supportsBinary, false, function(message) {\n      doneCallback(null, setLengthHeader(message));\n    });\n  }\n\n  map(packets, encodeOne, function(err, results) {\n    return callback(results.join(''));\n  });\n};\n\n/**\n * Async array map using after\n */\n\nfunction map(ary, each, done) {\n  var result = new Array(ary.length);\n  var next = after(ary.length, done);\n\n  var eachWithIndex = function(i, el, cb) {\n    each(el, function(error, msg) {\n      result[i] = msg;\n      cb(error, result);\n    });\n  };\n\n  for (var i = 0; i < ary.length; i++) {\n    eachWithIndex(i, ary[i], next);\n  }\n}\n\n/*\n * Decodes data when a payload is maybe expected. Possible binary contents are\n * decoded from their base64 representation\n *\n * @param {String} data, callback method\n * @api public\n */\n\nexports.decodePayload = function (data, binaryType, callback) {\n  if (typeof data !== 'string') {\n    return exports.decodePayloadAsBinary(data, binaryType, callback);\n  }\n\n  if (typeof binaryType === 'function') {\n    callback = binaryType;\n    binaryType = null;\n  }\n\n  var packet;\n  if (data === '') {\n    // parser error - ignoring payload\n    return callback(err, 0, 1);\n  }\n\n  var length = '', n, msg;\n\n  for (var i = 0, l = data.length; i < l; i++) {\n    var chr = data.charAt(i);\n\n    if (chr !== ':') {\n      length += chr;\n      continue;\n    }\n\n    if (length === '' || (length != (n = Number(length)))) {\n      // parser error - ignoring payload\n      return callback(err, 0, 1);\n    }\n\n    msg = data.substr(i + 1, n);\n\n    if (length != msg.length) {\n      // parser error - ignoring payload\n      return callback(err, 0, 1);\n    }\n\n    if (msg.length) {\n      packet = exports.decodePacket(msg, binaryType, false);\n\n      if (err.type === packet.type && err.data === packet.data) {\n        // parser error in individual packet - ignoring payload\n        return callback(err, 0, 1);\n      }\n\n      var ret = callback(packet, i + n, l);\n      if (false === ret) return;\n    }\n\n    // advance cursor\n    i += n;\n    length = '';\n  }\n\n  if (length !== '') {\n    // parser error - ignoring payload\n    return callback(err, 0, 1);\n  }\n\n};\n\n/**\n * Encodes multiple messages (payload) as binary.\n *\n * <1 = binary, 0 = string><number from 0-9><number from 0-9>[...]<number\n * 255><data>\n *\n * Example:\n * 1 3 255 1 2 3, if the binary contents are interpreted as 8 bit integers\n *\n * @param {Array} packets\n * @return {ArrayBuffer} encoded payload\n * @api private\n */\n\nexports.encodePayloadAsArrayBuffer = function(packets, callback) {\n  if (!packets.length) {\n    return callback(new ArrayBuffer(0));\n  }\n\n  function encodeOne(packet, doneCallback) {\n    exports.encodePacket(packet, true, true, function(data) {\n      return doneCallback(null, data);\n    });\n  }\n\n  map(packets, encodeOne, function(err, encodedPackets) {\n    var totalLength = encodedPackets.reduce(function(acc, p) {\n      var len;\n      if (typeof p === 'string'){\n        len = p.length;\n      } else {\n        len = p.byteLength;\n      }\n      return acc + len.toString().length + len + 2; // string/binary identifier + separator = 2\n    }, 0);\n\n    var resultArray = new Uint8Array(totalLength);\n\n    var bufferIndex = 0;\n    encodedPackets.forEach(function(p) {\n      var isString = typeof p === 'string';\n      var ab = p;\n      if (isString) {\n        var view = new Uint8Array(p.length);\n        for (var i = 0; i < p.length; i++) {\n          view[i] = p.charCodeAt(i);\n        }\n        ab = view.buffer;\n      }\n\n      if (isString) { // not true binary\n        resultArray[bufferIndex++] = 0;\n      } else { // true binary\n        resultArray[bufferIndex++] = 1;\n      }\n\n      var lenStr = ab.byteLength.toString();\n      for (var i = 0; i < lenStr.length; i++) {\n        resultArray[bufferIndex++] = parseInt(lenStr[i]);\n      }\n      resultArray[bufferIndex++] = 255;\n\n      var view = new Uint8Array(ab);\n      for (var i = 0; i < view.length; i++) {\n        resultArray[bufferIndex++] = view[i];\n      }\n    });\n\n    return callback(resultArray.buffer);\n  });\n};\n\n/**\n * Encode as Blob\n */\n\nexports.encodePayloadAsBlob = function(packets, callback) {\n  function encodeOne(packet, doneCallback) {\n    exports.encodePacket(packet, true, true, function(encoded) {\n      var binaryIdentifier = new Uint8Array(1);\n      binaryIdentifier[0] = 1;\n      if (typeof encoded === 'string') {\n        var view = new Uint8Array(encoded.length);\n        for (var i = 0; i < encoded.length; i++) {\n          view[i] = encoded.charCodeAt(i);\n        }\n        encoded = view.buffer;\n        binaryIdentifier[0] = 0;\n      }\n\n      var len = (encoded instanceof ArrayBuffer)\n        ? encoded.byteLength\n        : encoded.size;\n\n      var lenStr = len.toString();\n      var lengthAry = new Uint8Array(lenStr.length + 1);\n      for (var i = 0; i < lenStr.length; i++) {\n        lengthAry[i] = parseInt(lenStr[i]);\n      }\n      lengthAry[lenStr.length] = 255;\n\n      if (Blob) {\n        var blob = new Blob([binaryIdentifier.buffer, lengthAry.buffer, encoded]);\n        doneCallback(null, blob);\n      }\n    });\n  }\n\n  map(packets, encodeOne, function(err, results) {\n    return callback(new Blob(results));\n  });\n};\n\n/*\n * Decodes data when a payload is maybe expected. Strings are decoded by\n * interpreting each byte as a key code for entries marked to start with 0. See\n * description of encodePayloadAsBinary\n *\n * @param {ArrayBuffer} data, callback method\n * @api public\n */\n\nexports.decodePayloadAsBinary = function (data, binaryType, callback) {\n  if (typeof binaryType === 'function') {\n    callback = binaryType;\n    binaryType = null;\n  }\n\n  var bufferTail = data;\n  var buffers = [];\n\n  while (bufferTail.byteLength > 0) {\n    var tailArray = new Uint8Array(bufferTail);\n    var isString = tailArray[0] === 0;\n    var msgLength = '';\n\n    for (var i = 1; ; i++) {\n      if (tailArray[i] === 255) break;\n\n      // 310 = char length of Number.MAX_VALUE\n      if (msgLength.length > 310) {\n        return callback(err, 0, 1);\n      }\n\n      msgLength += tailArray[i];\n    }\n\n    bufferTail = sliceBuffer(bufferTail, 2 + msgLength.length);\n    msgLength = parseInt(msgLength);\n\n    var msg = sliceBuffer(bufferTail, 0, msgLength);\n    if (isString) {\n      try {\n        msg = String.fromCharCode.apply(null, new Uint8Array(msg));\n      } catch (e) {\n        // iPhone Safari doesn't let you apply to typed arrays\n        var typed = new Uint8Array(msg);\n        msg = '';\n        for (var i = 0; i < typed.length; i++) {\n          msg += String.fromCharCode(typed[i]);\n        }\n      }\n    }\n\n    buffers.push(msg);\n    bufferTail = sliceBuffer(bufferTail, msgLength);\n  }\n\n  var total = buffers.length;\n  buffers.forEach(function(buffer, i) {\n    callback(exports.decodePacket(buffer, binaryType, true), i, total);\n  });\n};\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"./keys\":257,\"./utf8\":258,\"after\":234,\"arraybuffer.slice\":235,\"base64-arraybuffer\":237,\"blob\":239,\"has-binary2\":259}],257:[function(require,module,exports){\n\n/**\n * Gets the keys for an object.\n *\n * @return {Array} keys\n * @api private\n */\n\nmodule.exports = Object.keys || function keys (obj){\n  var arr = [];\n  var has = Object.prototype.hasOwnProperty;\n\n  for (var i in obj) {\n    if (has.call(obj, i)) {\n      arr.push(i);\n    }\n  }\n  return arr;\n};\n\n},{}],258:[function(require,module,exports){\n(function (global){\n/*! https://mths.be/utf8js v2.1.2 by @mathias */\n;(function(root) {\n\n\t// Detect free variables `exports`\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code,\n\t// and use it as `root`\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar stringFromCharCode = String.fromCharCode;\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2decode(string) {\n\t\tvar output = [];\n\t\tvar counter = 0;\n\t\tvar length = string.length;\n\t\tvar value;\n\t\tvar extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2encode(array) {\n\t\tvar length = array.length;\n\t\tvar index = -1;\n\t\tvar value;\n\t\tvar output = '';\n\t\twhile (++index < length) {\n\t\t\tvalue = array[index];\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t}\n\t\treturn output;\n\t}\n\n\tfunction checkScalarValue(codePoint, strict) {\n\t\tif (codePoint >= 0xD800 && codePoint <= 0xDFFF) {\n\t\t\tif (strict) {\n\t\t\t\tthrow Error(\n\t\t\t\t\t'Lone surrogate U+' + codePoint.toString(16).toUpperCase() +\n\t\t\t\t\t' is not a scalar value'\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction createByte(codePoint, shift) {\n\t\treturn stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80);\n\t}\n\n\tfunction encodeCodePoint(codePoint, strict) {\n\t\tif ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence\n\t\t\treturn stringFromCharCode(codePoint);\n\t\t}\n\t\tvar symbol = '';\n\t\tif ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0);\n\t\t}\n\t\telse if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence\n\t\t\tif (!checkScalarValue(codePoint, strict)) {\n\t\t\t\tcodePoint = 0xFFFD;\n\t\t\t}\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\telse if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0);\n\t\t\tsymbol += createByte(codePoint, 12);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\tsymbol += stringFromCharCode((codePoint & 0x3F) | 0x80);\n\t\treturn symbol;\n\t}\n\n\tfunction utf8encode(string, opts) {\n\t\topts = opts || {};\n\t\tvar strict = false !== opts.strict;\n\n\t\tvar codePoints = ucs2decode(string);\n\t\tvar length = codePoints.length;\n\t\tvar index = -1;\n\t\tvar codePoint;\n\t\tvar byteString = '';\n\t\twhile (++index < length) {\n\t\t\tcodePoint = codePoints[index];\n\t\t\tbyteString += encodeCodePoint(codePoint, strict);\n\t\t}\n\t\treturn byteString;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction readContinuationByte() {\n\t\tif (byteIndex >= byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tvar continuationByte = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\tif ((continuationByte & 0xC0) == 0x80) {\n\t\t\treturn continuationByte & 0x3F;\n\t\t}\n\n\t\t// If we end up here, it’s not a continuation byte\n\t\tthrow Error('Invalid continuation byte');\n\t}\n\n\tfunction decodeSymbol(strict) {\n\t\tvar byte1;\n\t\tvar byte2;\n\t\tvar byte3;\n\t\tvar byte4;\n\t\tvar codePoint;\n\n\t\tif (byteIndex > byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tif (byteIndex == byteCount) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Read first byte\n\t\tbyte1 = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\t// 1-byte sequence (no continuation bytes)\n\t\tif ((byte1 & 0x80) == 0) {\n\t\t\treturn byte1;\n\t\t}\n\n\t\t// 2-byte sequence\n\t\tif ((byte1 & 0xE0) == 0xC0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x1F) << 6) | byte2;\n\t\t\tif (codePoint >= 0x80) {\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 3-byte sequence (may include unpaired surrogates)\n\t\tif ((byte1 & 0xF0) == 0xE0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3;\n\t\t\tif (codePoint >= 0x0800) {\n\t\t\t\treturn checkScalarValue(codePoint, strict) ? codePoint : 0xFFFD;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 4-byte sequence\n\t\tif ((byte1 & 0xF8) == 0xF0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tbyte4 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0C) |\n\t\t\t\t(byte3 << 0x06) | byte4;\n\t\t\tif (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\n\t\t\t\treturn codePoint;\n\t\t\t}\n\t\t}\n\n\t\tthrow Error('Invalid UTF-8 detected');\n\t}\n\n\tvar byteArray;\n\tvar byteCount;\n\tvar byteIndex;\n\tfunction utf8decode(byteString, opts) {\n\t\topts = opts || {};\n\t\tvar strict = false !== opts.strict;\n\n\t\tbyteArray = ucs2decode(byteString);\n\t\tbyteCount = byteArray.length;\n\t\tbyteIndex = 0;\n\t\tvar codePoints = [];\n\t\tvar tmp;\n\t\twhile ((tmp = decodeSymbol(strict)) !== false) {\n\t\t\tcodePoints.push(tmp);\n\t\t}\n\t\treturn ucs2encode(codePoints);\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar utf8 = {\n\t\t'version': '2.1.2',\n\t\t'encode': utf8encode,\n\t\t'decode': utf8decode\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn utf8;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = utf8;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tvar object = {};\n\t\t\tvar hasOwnProperty = object.hasOwnProperty;\n\t\t\tfor (var key in utf8) {\n\t\t\t\thasOwnProperty.call(utf8, key) && (freeExports[key] = utf8[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.utf8 = utf8;\n\t}\n\n}(this));\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],259:[function(require,module,exports){\n(function (Buffer){\n/* global Blob File */\n\n/*\n * Module requirements.\n */\n\nvar isArray = require('isarray');\n\nvar toString = Object.prototype.toString;\nvar withNativeBlob = typeof Blob === 'function' ||\n                        typeof Blob !== 'undefined' && toString.call(Blob) === '[object BlobConstructor]';\nvar withNativeFile = typeof File === 'function' ||\n                        typeof File !== 'undefined' && toString.call(File) === '[object FileConstructor]';\n\n/**\n * Module exports.\n */\n\nmodule.exports = hasBinary;\n\n/**\n * Checks for binary data.\n *\n * Supports Buffer, ArrayBuffer, Blob and File.\n *\n * @param {Object} anything\n * @api public\n */\n\nfunction hasBinary (obj) {\n  if (!obj || typeof obj !== 'object') {\n    return false;\n  }\n\n  if (isArray(obj)) {\n    for (var i = 0, l = obj.length; i < l; i++) {\n      if (hasBinary(obj[i])) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  if ((typeof Buffer === 'function' && Buffer.isBuffer && Buffer.isBuffer(obj)) ||\n    (typeof ArrayBuffer === 'function' && obj instanceof ArrayBuffer) ||\n    (withNativeBlob && obj instanceof Blob) ||\n    (withNativeFile && obj instanceof File)\n  ) {\n    return true;\n  }\n\n  // see: https://github.com/Automattic/has-binary/pull/4\n  if (obj.toJSON && typeof obj.toJSON === 'function' && arguments.length === 1) {\n    return hasBinary(obj.toJSON(), true);\n  }\n\n  for (var key in obj) {\n    if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\n}).call(this,require(\"buffer\").Buffer)\n},{\"buffer\":241,\"isarray\":263}],260:[function(require,module,exports){\n\n/**\n * Module exports.\n *\n * Logic borrowed from Modernizr:\n *\n *   - https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cors.js\n */\n\ntry {\n  module.exports = typeof XMLHttpRequest !== 'undefined' &&\n    'withCredentials' in new XMLHttpRequest();\n} catch (err) {\n  // if XMLHttp support is disabled in IE then it will throw\n  // when trying to create\n  module.exports = false;\n}\n\n},{}],261:[function(require,module,exports){\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n\n},{}],262:[function(require,module,exports){\n\nvar indexOf = [].indexOf;\n\nmodule.exports = function(arr, obj){\n  if (indexOf) return arr.indexOf(obj);\n  for (var i = 0; i < arr.length; ++i) {\n    if (arr[i] === obj) return i;\n  }\n  return -1;\n};\n},{}],263:[function(require,module,exports){\nvar toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n  return toString.call(arr) == '[object Array]';\n};\n\n},{}],264:[function(require,module,exports){\n/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n  options = options || {};\n  var type = typeof val;\n  if (type === 'string' && val.length > 0) {\n    return parse(val);\n  } else if (type === 'number' && isNaN(val) === false) {\n    return options.long ? fmtLong(val) : fmtShort(val);\n  }\n  throw new Error(\n    'val is not a non-empty string or a valid number. val=' +\n      JSON.stringify(val)\n  );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n  str = String(str);\n  if (str.length > 100) {\n    return;\n  }\n  var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n    str\n  );\n  if (!match) {\n    return;\n  }\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n    default:\n      return undefined;\n  }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n  if (ms >= d) {\n    return Math.round(ms / d) + 'd';\n  }\n  if (ms >= h) {\n    return Math.round(ms / h) + 'h';\n  }\n  if (ms >= m) {\n    return Math.round(ms / m) + 'm';\n  }\n  if (ms >= s) {\n    return Math.round(ms / s) + 's';\n  }\n  return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n  return plural(ms, d, 'day') ||\n    plural(ms, h, 'hour') ||\n    plural(ms, m, 'minute') ||\n    plural(ms, s, 'second') ||\n    ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n  if (ms < n) {\n    return;\n  }\n  if (ms < n * 1.5) {\n    return Math.floor(ms / n) + ' ' + name;\n  }\n  return Math.ceil(ms / n) + ' ' + name + 's';\n}\n\n},{}],265:[function(require,module,exports){\n/**\r\n * Compiles a querystring\r\n * Returns string representation of the object\r\n *\r\n * @param {Object}\r\n * @api private\r\n */\r\n\r\nexports.encode = function (obj) {\r\n  var str = '';\r\n\r\n  for (var i in obj) {\r\n    if (obj.hasOwnProperty(i)) {\r\n      if (str.length) str += '&';\r\n      str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\r\n    }\r\n  }\r\n\r\n  return str;\r\n};\r\n\r\n/**\r\n * Parses a simple querystring into an object\r\n *\r\n * @param {String} qs\r\n * @api private\r\n */\r\n\r\nexports.decode = function(qs){\r\n  var qry = {};\r\n  var pairs = qs.split('&');\r\n  for (var i = 0, l = pairs.length; i < l; i++) {\r\n    var pair = pairs[i].split('=');\r\n    qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\r\n  }\r\n  return qry;\r\n};\r\n\n},{}],266:[function(require,module,exports){\n/**\r\n * Parses an URI\r\n *\r\n * @author Steven Levithan <stevenlevithan.com> (MIT license)\r\n * @api private\r\n */\r\n\r\nvar re = /^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\r\n\r\nvar parts = [\r\n    'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\r\n];\r\n\r\nmodule.exports = function parseuri(str) {\r\n    var src = str,\r\n        b = str.indexOf('['),\r\n        e = str.indexOf(']');\r\n\r\n    if (b != -1 && e != -1) {\r\n        str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\r\n    }\r\n\r\n    var m = re.exec(str || ''),\r\n        uri = {},\r\n        i = 14;\r\n\r\n    while (i--) {\r\n        uri[parts[i]] = m[i] || '';\r\n    }\r\n\r\n    if (b != -1 && e != -1) {\r\n        uri.source = src;\r\n        uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\r\n        uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\r\n        uri.ipv6uri = true;\r\n    }\r\n\r\n    return uri;\r\n};\r\n\n},{}],267:[function(require,module,exports){\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 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;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\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\n},{}],268:[function(require,module,exports){\n// minimal library entry point.\r\n\r\n\"use strict\";\r\nmodule.exports = require(\"./src/index-minimal\");\r\n\n},{\"./src/index-minimal\":269}],269:[function(require,module,exports){\n\"use strict\";\r\nvar protobuf = exports;\r\n\r\n/**\r\n * Build type, one of `\"full\"`, `\"light\"` or `\"minimal\"`.\r\n * @name build\r\n * @type {string}\r\n * @const\r\n */\r\nprotobuf.build = \"minimal\";\r\n\r\n// Serialization\r\nprotobuf.Writer       = require(\"./writer\");\r\nprotobuf.BufferWriter = require(\"./writer_buffer\");\r\nprotobuf.Reader       = require(\"./reader\");\r\nprotobuf.BufferReader = require(\"./reader_buffer\");\r\n\r\n// Utility\r\nprotobuf.util         = require(\"./util/minimal\");\r\nprotobuf.rpc          = require(\"./rpc\");\r\nprotobuf.roots        = require(\"./roots\");\r\nprotobuf.configure    = configure;\r\n\r\n/* istanbul ignore next */\r\n/**\r\n * Reconfigures the library according to the environment.\r\n * @returns {undefined}\r\n */\r\nfunction configure() {\r\n    protobuf.Reader._configure(protobuf.BufferReader);\r\n    protobuf.util._configure();\r\n}\r\n\r\n// Set up buffer utility according to the environment\r\nprotobuf.Writer._configure(protobuf.BufferWriter);\r\nconfigure();\r\n\n},{\"./reader\":270,\"./reader_buffer\":271,\"./roots\":272,\"./rpc\":273,\"./util/minimal\":276,\"./writer\":277,\"./writer_buffer\":278}],270:[function(require,module,exports){\n\"use strict\";\r\nmodule.exports = Reader;\r\n\r\nvar util      = require(\"./util/minimal\");\r\n\r\nvar BufferReader; // cyclic\r\n\r\nvar LongBits  = util.LongBits,\r\n    utf8      = util.utf8;\r\n\r\n/* istanbul ignore next */\r\nfunction indexOutOfRange(reader, writeLength) {\r\n    return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\r\n}\r\n\r\n/**\r\n * Constructs a new reader instance using the specified buffer.\r\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n * @param {Uint8Array} buffer Buffer to read from\r\n */\r\nfunction Reader(buffer) {\r\n\r\n    /**\r\n     * Read buffer.\r\n     * @type {Uint8Array}\r\n     */\r\n    this.buf = buffer;\r\n\r\n    /**\r\n     * Read buffer position.\r\n     * @type {number}\r\n     */\r\n    this.pos = 0;\r\n\r\n    /**\r\n     * Read buffer length.\r\n     * @type {number}\r\n     */\r\n    this.len = buffer.length;\r\n}\r\n\r\nvar create_array = typeof Uint8Array !== \"undefined\"\r\n    ? function create_typed_array(buffer) {\r\n        if (buffer instanceof Uint8Array || Array.isArray(buffer))\r\n            return new Reader(buffer);\r\n        throw Error(\"illegal buffer\");\r\n    }\r\n    /* istanbul ignore next */\r\n    : function create_array(buffer) {\r\n        if (Array.isArray(buffer))\r\n            return new Reader(buffer);\r\n        throw Error(\"illegal buffer\");\r\n    };\r\n\r\n/**\r\n * Creates a new reader using the specified buffer.\r\n * @function\r\n * @param {Uint8Array|Buffer} buffer Buffer to read from\r\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\r\n * @throws {Error} If `buffer` is not a valid buffer\r\n */\r\nReader.create = util.Buffer\r\n    ? function create_buffer_setup(buffer) {\r\n        return (Reader.create = function create_buffer(buffer) {\r\n            return util.Buffer.isBuffer(buffer)\r\n                ? new BufferReader(buffer)\r\n                /* istanbul ignore next */\r\n                : create_array(buffer);\r\n        })(buffer);\r\n    }\r\n    /* istanbul ignore next */\r\n    : create_array;\r\n\r\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\r\n\r\n/**\r\n * Reads a varint as an unsigned 32 bit value.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.uint32 = (function read_uint32_setup() {\r\n    var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\r\n    return function read_uint32() {\r\n        value = (         this.buf[this.pos] & 127       ) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n        value = (value | (this.buf[this.pos] & 127) <<  7) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n        value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n        value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n        value = (value | (this.buf[this.pos] &  15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\r\n\r\n        /* istanbul ignore if */\r\n        if ((this.pos += 5) > this.len) {\r\n            this.pos = this.len;\r\n            throw indexOutOfRange(this, 10);\r\n        }\r\n        return value;\r\n    };\r\n})();\r\n\r\n/**\r\n * Reads a varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.int32 = function read_int32() {\r\n    return this.uint32() | 0;\r\n};\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 32 bit value.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.sint32 = function read_sint32() {\r\n    var value = this.uint32();\r\n    return value >>> 1 ^ -(value & 1) | 0;\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readLongVarint() {\r\n    // tends to deopt with local vars for octet etc.\r\n    var bits = new LongBits(0, 0);\r\n    var i = 0;\r\n    if (this.len - this.pos > 4) { // fast route (lo)\r\n        for (; i < 4; ++i) {\r\n            // 1st..4th\r\n            bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\r\n            if (this.buf[this.pos++] < 128)\r\n                return bits;\r\n        }\r\n        // 5th\r\n        bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\r\n        bits.hi = (bits.hi | (this.buf[this.pos] & 127) >>  4) >>> 0;\r\n        if (this.buf[this.pos++] < 128)\r\n            return bits;\r\n        i = 0;\r\n    } else {\r\n        for (; i < 3; ++i) {\r\n            /* istanbul ignore if */\r\n            if (this.pos >= this.len)\r\n                throw indexOutOfRange(this);\r\n            // 1st..3th\r\n            bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\r\n            if (this.buf[this.pos++] < 128)\r\n                return bits;\r\n        }\r\n        // 4th\r\n        bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\r\n        return bits;\r\n    }\r\n    if (this.len - this.pos > 4) { // fast route (hi)\r\n        for (; i < 5; ++i) {\r\n            // 6th..10th\r\n            bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\r\n            if (this.buf[this.pos++] < 128)\r\n                return bits;\r\n        }\r\n    } else {\r\n        for (; i < 5; ++i) {\r\n            /* istanbul ignore if */\r\n            if (this.pos >= this.len)\r\n                throw indexOutOfRange(this);\r\n            // 6th..10th\r\n            bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\r\n            if (this.buf[this.pos++] < 128)\r\n                return bits;\r\n        }\r\n    }\r\n    /* istanbul ignore next */\r\n    throw Error(\"invalid varint encoding\");\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads a varint as a signed 64 bit value.\r\n * @name Reader#int64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a varint as an unsigned 64 bit value.\r\n * @name Reader#uint64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a zig-zag encoded varint as a signed 64 bit value.\r\n * @name Reader#sint64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a varint as a boolean.\r\n * @returns {boolean} Value read\r\n */\r\nReader.prototype.bool = function read_bool() {\r\n    return this.uint32() !== 0;\r\n};\r\n\r\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\r\n    return (buf[end - 4]\r\n          | buf[end - 3] << 8\r\n          | buf[end - 2] << 16\r\n          | buf[end - 1] << 24) >>> 0;\r\n}\r\n\r\n/**\r\n * Reads fixed 32 bits as an unsigned 32 bit integer.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.fixed32 = function read_fixed32() {\r\n\r\n    /* istanbul ignore if */\r\n    if (this.pos + 4 > this.len)\r\n        throw indexOutOfRange(this, 4);\r\n\r\n    return readFixed32_end(this.buf, this.pos += 4);\r\n};\r\n\r\n/**\r\n * Reads fixed 32 bits as a signed 32 bit integer.\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.sfixed32 = function read_sfixed32() {\r\n\r\n    /* istanbul ignore if */\r\n    if (this.pos + 4 > this.len)\r\n        throw indexOutOfRange(this, 4);\r\n\r\n    return readFixed32_end(this.buf, this.pos += 4) | 0;\r\n};\r\n\r\n/* eslint-disable no-invalid-this */\r\n\r\nfunction readFixed64(/* this: Reader */) {\r\n\r\n    /* istanbul ignore if */\r\n    if (this.pos + 8 > this.len)\r\n        throw indexOutOfRange(this, 8);\r\n\r\n    return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\r\n}\r\n\r\n/* eslint-enable no-invalid-this */\r\n\r\n/**\r\n * Reads fixed 64 bits.\r\n * @name Reader#fixed64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads zig-zag encoded fixed 64 bits.\r\n * @name Reader#sfixed64\r\n * @function\r\n * @returns {Long} Value read\r\n */\r\n\r\n/**\r\n * Reads a float (32 bit) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.float = function read_float() {\r\n\r\n    /* istanbul ignore if */\r\n    if (this.pos + 4 > this.len)\r\n        throw indexOutOfRange(this, 4);\r\n\r\n    var value = util.float.readFloatLE(this.buf, this.pos);\r\n    this.pos += 4;\r\n    return value;\r\n};\r\n\r\n/**\r\n * Reads a double (64 bit float) as a number.\r\n * @function\r\n * @returns {number} Value read\r\n */\r\nReader.prototype.double = function read_double() {\r\n\r\n    /* istanbul ignore if */\r\n    if (this.pos + 8 > this.len)\r\n        throw indexOutOfRange(this, 4);\r\n\r\n    var value = util.float.readDoubleLE(this.buf, this.pos);\r\n    this.pos += 8;\r\n    return value;\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @returns {Uint8Array} Value read\r\n */\r\nReader.prototype.bytes = function read_bytes() {\r\n    var length = this.uint32(),\r\n        start  = this.pos,\r\n        end    = this.pos + length;\r\n\r\n    /* istanbul ignore if */\r\n    if (end > this.len)\r\n        throw indexOutOfRange(this, length);\r\n\r\n    this.pos += length;\r\n    if (Array.isArray(this.buf)) // plain array\r\n        return this.buf.slice(start, end);\r\n    return start === end // fix for IE 10/Win8 and others' subarray returning array of size 1\r\n        ? new this.buf.constructor(0)\r\n        : this._slice.call(this.buf, start, end);\r\n};\r\n\r\n/**\r\n * Reads a string preceeded by its byte length as a varint.\r\n * @returns {string} Value read\r\n */\r\nReader.prototype.string = function read_string() {\r\n    var bytes = this.bytes();\r\n    return utf8.read(bytes, 0, bytes.length);\r\n};\r\n\r\n/**\r\n * Skips the specified number of bytes if specified, otherwise skips a varint.\r\n * @param {number} [length] Length if known, otherwise a varint is assumed\r\n * @returns {Reader} `this`\r\n */\r\nReader.prototype.skip = function skip(length) {\r\n    if (typeof length === \"number\") {\r\n        /* istanbul ignore if */\r\n        if (this.pos + length > this.len)\r\n            throw indexOutOfRange(this, length);\r\n        this.pos += length;\r\n    } else {\r\n        do {\r\n            /* istanbul ignore if */\r\n            if (this.pos >= this.len)\r\n                throw indexOutOfRange(this);\r\n        } while (this.buf[this.pos++] & 128);\r\n    }\r\n    return this;\r\n};\r\n\r\n/**\r\n * Skips the next element of the specified wire type.\r\n * @param {number} wireType Wire type received\r\n * @returns {Reader} `this`\r\n */\r\nReader.prototype.skipType = function(wireType) {\r\n    switch (wireType) {\r\n        case 0:\r\n            this.skip();\r\n            break;\r\n        case 1:\r\n            this.skip(8);\r\n            break;\r\n        case 2:\r\n            this.skip(this.uint32());\r\n            break;\r\n        case 3:\r\n            while ((wireType = this.uint32() & 7) !== 4) {\r\n                this.skipType(wireType);\r\n            }\r\n            break;\r\n        case 5:\r\n            this.skip(4);\r\n            break;\r\n\r\n        /* istanbul ignore next */\r\n        default:\r\n            throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\r\n    }\r\n    return this;\r\n};\r\n\r\nReader._configure = function(BufferReader_) {\r\n    BufferReader = BufferReader_;\r\n\r\n    var fn = util.Long ? \"toLong\" : /* istanbul ignore next */ \"toNumber\";\r\n    util.merge(Reader.prototype, {\r\n\r\n        int64: function read_int64() {\r\n            return readLongVarint.call(this)[fn](false);\r\n        },\r\n\r\n        uint64: function read_uint64() {\r\n            return readLongVarint.call(this)[fn](true);\r\n        },\r\n\r\n        sint64: function read_sint64() {\r\n            return readLongVarint.call(this).zzDecode()[fn](false);\r\n        },\r\n\r\n        fixed64: function read_fixed64() {\r\n            return readFixed64.call(this)[fn](true);\r\n        },\r\n\r\n        sfixed64: function read_sfixed64() {\r\n            return readFixed64.call(this)[fn](false);\r\n        }\r\n\r\n    });\r\n};\r\n\n},{\"./util/minimal\":276}],271:[function(require,module,exports){\n\"use strict\";\r\nmodule.exports = BufferReader;\r\n\r\n// extends Reader\r\nvar Reader = require(\"./reader\");\r\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\n/**\r\n * Constructs a new buffer reader instance.\r\n * @classdesc Wire format reader using node buffers.\r\n * @extends Reader\r\n * @constructor\r\n * @param {Buffer} buffer Buffer to read from\r\n */\r\nfunction BufferReader(buffer) {\r\n    Reader.call(this, buffer);\r\n\r\n    /**\r\n     * Read buffer.\r\n     * @name BufferReader#buf\r\n     * @type {Buffer}\r\n     */\r\n}\r\n\r\n/* istanbul ignore else */\r\nif (util.Buffer)\r\n    BufferReader.prototype._slice = util.Buffer.prototype.slice;\r\n\r\n/**\r\n * @override\r\n */\r\nBufferReader.prototype.string = function read_string_buffer() {\r\n    var len = this.uint32(); // modifies pos\r\n    return this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len));\r\n};\r\n\r\n/**\r\n * Reads a sequence of bytes preceeded by its length as a varint.\r\n * @name BufferReader#bytes\r\n * @function\r\n * @returns {Buffer} Value read\r\n */\r\n\n},{\"./reader\":270,\"./util/minimal\":276}],272:[function(require,module,exports){\n\"use strict\";\r\nmodule.exports = {};\r\n\r\n/**\r\n * Named roots.\r\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\r\n * Can also be used manually to make roots available accross modules.\r\n * @name roots\r\n * @type {Object.<string,Root>}\r\n * @example\r\n * // pbjs -r myroot -o compiled.js ...\r\n *\r\n * // in another module:\r\n * require(\"./compiled.js\");\r\n *\r\n * // in any subsequent module:\r\n * var root = protobuf.roots[\"myroot\"];\r\n */\r\n\n},{}],273:[function(require,module,exports){\n\"use strict\";\r\n\r\n/**\r\n * Streaming RPC helpers.\r\n * @namespace\r\n */\r\nvar rpc = exports;\r\n\r\n/**\r\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\r\n * @typedef RPCImpl\r\n * @type {function}\r\n * @param {Method|rpc.ServiceMethod<Message<{}>,Message<{}>>} method Reflected or static method being called\r\n * @param {Uint8Array} requestData Request data\r\n * @param {RPCImplCallback} callback Callback function\r\n * @returns {undefined}\r\n * @example\r\n * function rpcImpl(method, requestData, callback) {\r\n *     if (protobuf.util.lcFirst(method.name) !== \"myMethod\") // compatible with static code\r\n *         throw Error(\"no such method\");\r\n *     asynchronouslyObtainAResponse(requestData, function(err, responseData) {\r\n *         callback(err, responseData);\r\n *     });\r\n * }\r\n */\r\n\r\n/**\r\n * Node-style callback as used by {@link RPCImpl}.\r\n * @typedef RPCImplCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any, otherwise `null`\r\n * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\nrpc.Service = require(\"./rpc/service\");\r\n\n},{\"./rpc/service\":274}],274:[function(require,module,exports){\n\"use strict\";\r\nmodule.exports = Service;\r\n\r\nvar util = require(\"../util/minimal\");\r\n\r\n// Extends EventEmitter\r\n(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service;\r\n\r\n/**\r\n * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}.\r\n *\r\n * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`.\r\n * @typedef rpc.ServiceMethodCallback\r\n * @template TRes extends Message<TRes>\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {TRes} [response] Response message\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * A service method part of a {@link rpc.Service} as created by {@link Service.create}.\r\n * @typedef rpc.ServiceMethod\r\n * @template TReq extends Message<TReq>\r\n * @template TRes extends Message<TRes>\r\n * @type {function}\r\n * @param {TReq|Properties<TReq>} request Request message or plain object\r\n * @param {rpc.ServiceMethodCallback<TRes>} [callback] Node-style callback called with the error, if any, and the response message\r\n * @returns {Promise<Message<TRes>>} Promise if `callback` has been omitted, otherwise `undefined`\r\n */\r\n\r\n/**\r\n * Constructs a new RPC service instance.\r\n * @classdesc An RPC service as returned by {@link Service#create}.\r\n * @exports rpc.Service\r\n * @extends util.EventEmitter\r\n * @constructor\r\n * @param {RPCImpl} rpcImpl RPC implementation\r\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\r\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\r\n */\r\nfunction Service(rpcImpl, requestDelimited, responseDelimited) {\r\n\r\n    if (typeof rpcImpl !== \"function\")\r\n        throw TypeError(\"rpcImpl must be a function\");\r\n\r\n    util.EventEmitter.call(this);\r\n\r\n    /**\r\n     * RPC implementation. Becomes `null` once the service is ended.\r\n     * @type {RPCImpl|null}\r\n     */\r\n    this.rpcImpl = rpcImpl;\r\n\r\n    /**\r\n     * Whether requests are length-delimited.\r\n     * @type {boolean}\r\n     */\r\n    this.requestDelimited = Boolean(requestDelimited);\r\n\r\n    /**\r\n     * Whether responses are length-delimited.\r\n     * @type {boolean}\r\n     */\r\n    this.responseDelimited = Boolean(responseDelimited);\r\n}\r\n\r\n/**\r\n * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}.\r\n * @param {Method|rpc.ServiceMethod<TReq,TRes>} method Reflected or static method\r\n * @param {Constructor<TReq>} requestCtor Request constructor\r\n * @param {Constructor<TRes>} responseCtor Response constructor\r\n * @param {TReq|Properties<TReq>} request Request message or plain object\r\n * @param {rpc.ServiceMethodCallback<TRes>} callback Service callback\r\n * @returns {undefined}\r\n * @template TReq extends Message<TReq>\r\n * @template TRes extends Message<TRes>\r\n */\r\nService.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) {\r\n\r\n    if (!request)\r\n        throw TypeError(\"request must be specified\");\r\n\r\n    var self = this;\r\n    if (!callback)\r\n        return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request);\r\n\r\n    if (!self.rpcImpl) {\r\n        setTimeout(function() { callback(Error(\"already ended\")); }, 0);\r\n        return undefined;\r\n    }\r\n\r\n    try {\r\n        return self.rpcImpl(\r\n            method,\r\n            requestCtor[self.requestDelimited ? \"encodeDelimited\" : \"encode\"](request).finish(),\r\n            function rpcCallback(err, response) {\r\n\r\n                if (err) {\r\n                    self.emit(\"error\", err, method);\r\n                    return callback(err);\r\n                }\r\n\r\n                if (response === null) {\r\n                    self.end(/* endedByRPC */ true);\r\n                    return undefined;\r\n                }\r\n\r\n                if (!(response instanceof responseCtor)) {\r\n                    try {\r\n                        response = responseCtor[self.responseDelimited ? \"decodeDelimited\" : \"decode\"](response);\r\n                    } catch (err) {\r\n                        self.emit(\"error\", err, method);\r\n                        return callback(err);\r\n                    }\r\n                }\r\n\r\n                self.emit(\"data\", response, method);\r\n                return callback(null, response);\r\n            }\r\n        );\r\n    } catch (err) {\r\n        self.emit(\"error\", err, method);\r\n        setTimeout(function() { callback(err); }, 0);\r\n        return undefined;\r\n    }\r\n};\r\n\r\n/**\r\n * Ends this service and emits the `end` event.\r\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\r\n * @returns {rpc.Service} `this`\r\n */\r\nService.prototype.end = function end(endedByRPC) {\r\n    if (this.rpcImpl) {\r\n        if (!endedByRPC) // signal end to rpcImpl\r\n            this.rpcImpl(null, null, null);\r\n        this.rpcImpl = null;\r\n        this.emit(\"end\").off();\r\n    }\r\n    return this;\r\n};\r\n\n},{\"../util/minimal\":276}],275:[function(require,module,exports){\n\"use strict\";\r\nmodule.exports = LongBits;\r\n\r\nvar util = require(\"../util/minimal\");\r\n\r\n/**\r\n * Constructs new long bits.\r\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\r\n * @memberof util\r\n * @constructor\r\n * @param {number} lo Low 32 bits, unsigned\r\n * @param {number} hi High 32 bits, unsigned\r\n */\r\nfunction LongBits(lo, hi) {\r\n\r\n    // note that the casts below are theoretically unnecessary as of today, but older statically\r\n    // generated converter code might still call the ctor with signed 32bits. kept for compat.\r\n\r\n    /**\r\n     * Low bits.\r\n     * @type {number}\r\n     */\r\n    this.lo = lo >>> 0;\r\n\r\n    /**\r\n     * High bits.\r\n     * @type {number}\r\n     */\r\n    this.hi = hi >>> 0;\r\n}\r\n\r\n/**\r\n * Zero bits.\r\n * @memberof util.LongBits\r\n * @type {util.LongBits}\r\n */\r\nvar zero = LongBits.zero = new LongBits(0, 0);\r\n\r\nzero.toNumber = function() { return 0; };\r\nzero.zzEncode = zero.zzDecode = function() { return this; };\r\nzero.length = function() { return 1; };\r\n\r\n/**\r\n * Zero hash.\r\n * @memberof util.LongBits\r\n * @type {string}\r\n */\r\nvar zeroHash = LongBits.zeroHash = \"\\0\\0\\0\\0\\0\\0\\0\\0\";\r\n\r\n/**\r\n * Constructs new long bits from the specified number.\r\n * @param {number} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.fromNumber = function fromNumber(value) {\r\n    if (value === 0)\r\n        return zero;\r\n    var sign = value < 0;\r\n    if (sign)\r\n        value = -value;\r\n    var lo = value >>> 0,\r\n        hi = (value - lo) / 4294967296 >>> 0;\r\n    if (sign) {\r\n        hi = ~hi >>> 0;\r\n        lo = ~lo >>> 0;\r\n        if (++lo > 4294967295) {\r\n            lo = 0;\r\n            if (++hi > 4294967295)\r\n                hi = 0;\r\n        }\r\n    }\r\n    return new LongBits(lo, hi);\r\n};\r\n\r\n/**\r\n * Constructs new long bits from a number, long or string.\r\n * @param {Long|number|string} value Value\r\n * @returns {util.LongBits} Instance\r\n */\r\nLongBits.from = function from(value) {\r\n    if (typeof value === \"number\")\r\n        return LongBits.fromNumber(value);\r\n    if (util.isString(value)) {\r\n        /* istanbul ignore else */\r\n        if (util.Long)\r\n            value = util.Long.fromString(value);\r\n        else\r\n            return LongBits.fromNumber(parseInt(value, 10));\r\n    }\r\n    return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a possibly unsafe JavaScript number.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {number} Possibly unsafe number\r\n */\r\nLongBits.prototype.toNumber = function toNumber(unsigned) {\r\n    if (!unsigned && this.hi >>> 31) {\r\n        var lo = ~this.lo + 1 >>> 0,\r\n            hi = ~this.hi     >>> 0;\r\n        if (!lo)\r\n            hi = hi + 1 >>> 0;\r\n        return -(lo + hi * 4294967296);\r\n    }\r\n    return this.lo + this.hi * 4294967296;\r\n};\r\n\r\n/**\r\n * Converts this long bits to a long.\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long} Long\r\n */\r\nLongBits.prototype.toLong = function toLong(unsigned) {\r\n    return util.Long\r\n        ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\r\n        /* istanbul ignore next */\r\n        : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\r\n};\r\n\r\nvar charCodeAt = String.prototype.charCodeAt;\r\n\r\n/**\r\n * Constructs new long bits from the specified 8 characters long hash.\r\n * @param {string} hash Hash\r\n * @returns {util.LongBits} Bits\r\n */\r\nLongBits.fromHash = function fromHash(hash) {\r\n    if (hash === zeroHash)\r\n        return zero;\r\n    return new LongBits(\r\n        ( charCodeAt.call(hash, 0)\r\n        | charCodeAt.call(hash, 1) << 8\r\n        | charCodeAt.call(hash, 2) << 16\r\n        | charCodeAt.call(hash, 3) << 24) >>> 0\r\n    ,\r\n        ( charCodeAt.call(hash, 4)\r\n        | charCodeAt.call(hash, 5) << 8\r\n        | charCodeAt.call(hash, 6) << 16\r\n        | charCodeAt.call(hash, 7) << 24) >>> 0\r\n    );\r\n};\r\n\r\n/**\r\n * Converts this long bits to a 8 characters long hash.\r\n * @returns {string} Hash\r\n */\r\nLongBits.prototype.toHash = function toHash() {\r\n    return String.fromCharCode(\r\n        this.lo        & 255,\r\n        this.lo >>> 8  & 255,\r\n        this.lo >>> 16 & 255,\r\n        this.lo >>> 24      ,\r\n        this.hi        & 255,\r\n        this.hi >>> 8  & 255,\r\n        this.hi >>> 16 & 255,\r\n        this.hi >>> 24\r\n    );\r\n};\r\n\r\n/**\r\n * Zig-zag encodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBits.prototype.zzEncode = function zzEncode() {\r\n    var mask =   this.hi >> 31;\r\n    this.hi  = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\r\n    this.lo  = ( this.lo << 1                   ^ mask) >>> 0;\r\n    return this;\r\n};\r\n\r\n/**\r\n * Zig-zag decodes this long bits.\r\n * @returns {util.LongBits} `this`\r\n */\r\nLongBits.prototype.zzDecode = function zzDecode() {\r\n    var mask = -(this.lo & 1);\r\n    this.lo  = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\r\n    this.hi  = ( this.hi >>> 1                  ^ mask) >>> 0;\r\n    return this;\r\n};\r\n\r\n/**\r\n * Calculates the length of this longbits when encoded as a varint.\r\n * @returns {number} Length\r\n */\r\nLongBits.prototype.length = function length() {\r\n    var part0 =  this.lo,\r\n        part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\r\n        part2 =  this.hi >>> 24;\r\n    return part2 === 0\r\n         ? part1 === 0\r\n           ? part0 < 16384\r\n             ? part0 < 128 ? 1 : 2\r\n             : part0 < 2097152 ? 3 : 4\r\n           : part1 < 16384\r\n             ? part1 < 128 ? 5 : 6\r\n             : part1 < 2097152 ? 7 : 8\r\n         : part2 < 128 ? 9 : 10;\r\n};\r\n\n},{\"../util/minimal\":276}],276:[function(require,module,exports){\n(function (global){\n\"use strict\";\r\nvar util = exports;\r\n\r\n// used to return a Promise where callback is omitted\r\nutil.asPromise = require(\"@protobufjs/aspromise\");\r\n\r\n// converts to / from base64 encoded strings\r\nutil.base64 = require(\"@protobufjs/base64\");\r\n\r\n// base class of rpc.Service\r\nutil.EventEmitter = require(\"@protobufjs/eventemitter\");\r\n\r\n// float handling accross browsers\r\nutil.float = require(\"@protobufjs/float\");\r\n\r\n// requires modules optionally and hides the call from bundlers\r\nutil.inquire = require(\"@protobufjs/inquire\");\r\n\r\n// converts to / from utf8 encoded strings\r\nutil.utf8 = require(\"@protobufjs/utf8\");\r\n\r\n// provides a node-like buffer pool in the browser\r\nutil.pool = require(\"@protobufjs/pool\");\r\n\r\n// utility to work with the low and high bits of a 64 bit value\r\nutil.LongBits = require(\"./longbits\");\r\n\r\n// global object reference\r\nutil.global = typeof window !== \"undefined\" && window\r\n           || typeof global !== \"undefined\" && global\r\n           || typeof self   !== \"undefined\" && self\r\n           || this; // eslint-disable-line no-invalid-this\r\n\r\n/**\r\n * An immuable empty array.\r\n * @memberof util\r\n * @type {Array.<*>}\r\n * @const\r\n */\r\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\r\n\r\n/**\r\n * An immutable empty object.\r\n * @type {Object}\r\n * @const\r\n */\r\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\r\n\r\n/**\r\n * Whether running within node or not.\r\n * @memberof util\r\n * @type {boolean}\r\n * @const\r\n */\r\nutil.isNode = Boolean(util.global.process && util.global.process.versions && util.global.process.versions.node);\r\n\r\n/**\r\n * Tests if the specified value is an integer.\r\n * @function\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is an integer\r\n */\r\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\r\n    return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\r\n};\r\n\r\n/**\r\n * Tests if the specified value is a string.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a string\r\n */\r\nutil.isString = function isString(value) {\r\n    return typeof value === \"string\" || value instanceof String;\r\n};\r\n\r\n/**\r\n * Tests if the specified value is a non-null object.\r\n * @param {*} value Value to test\r\n * @returns {boolean} `true` if the value is a non-null object\r\n */\r\nutil.isObject = function isObject(value) {\r\n    return value && typeof value === \"object\";\r\n};\r\n\r\n/**\r\n * Checks if a property on a message is considered to be present.\r\n * This is an alias of {@link util.isSet}.\r\n * @function\r\n * @param {Object} obj Plain object or message instance\r\n * @param {string} prop Property name\r\n * @returns {boolean} `true` if considered to be present, otherwise `false`\r\n */\r\nutil.isset =\r\n\r\n/**\r\n * Checks if a property on a message is considered to be present.\r\n * @param {Object} obj Plain object or message instance\r\n * @param {string} prop Property name\r\n * @returns {boolean} `true` if considered to be present, otherwise `false`\r\n */\r\nutil.isSet = function isSet(obj, prop) {\r\n    var value = obj[prop];\r\n    if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\r\n        return typeof value !== \"object\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\r\n    return false;\r\n};\r\n\r\n/**\r\n * Any compatible Buffer instance.\r\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\r\n * @interface Buffer\r\n * @extends Uint8Array\r\n */\r\n\r\n/**\r\n * Node's Buffer class if available.\r\n * @type {Constructor<Buffer>}\r\n */\r\nutil.Buffer = (function() {\r\n    try {\r\n        var Buffer = util.inquire(\"buffer\").Buffer;\r\n        // refuse to use non-node buffers if not explicitly assigned (perf reasons):\r\n        return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\r\n    } catch (e) {\r\n        /* istanbul ignore next */\r\n        return null;\r\n    }\r\n})();\r\n\r\n// Internal alias of or polyfull for Buffer.from.\r\nutil._Buffer_from = null;\r\n\r\n// Internal alias of or polyfill for Buffer.allocUnsafe.\r\nutil._Buffer_allocUnsafe = null;\r\n\r\n/**\r\n * Creates a new buffer of whatever type supported by the environment.\r\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\r\n * @returns {Uint8Array|Buffer} Buffer\r\n */\r\nutil.newBuffer = function newBuffer(sizeOrArray) {\r\n    /* istanbul ignore next */\r\n    return typeof sizeOrArray === \"number\"\r\n        ? util.Buffer\r\n            ? util._Buffer_allocUnsafe(sizeOrArray)\r\n            : new util.Array(sizeOrArray)\r\n        : util.Buffer\r\n            ? util._Buffer_from(sizeOrArray)\r\n            : typeof Uint8Array === \"undefined\"\r\n                ? sizeOrArray\r\n                : new Uint8Array(sizeOrArray);\r\n};\r\n\r\n/**\r\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\r\n * @type {Constructor<Uint8Array>}\r\n */\r\nutil.Array = typeof Uint8Array !== \"undefined\" ? Uint8Array /* istanbul ignore next */ : Array;\r\n\r\n/**\r\n * Any compatible Long instance.\r\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\r\n * @interface Long\r\n * @property {number} low Low bits\r\n * @property {number} high High bits\r\n * @property {boolean} unsigned Whether unsigned or not\r\n */\r\n\r\n/**\r\n * Long.js's Long class if available.\r\n * @type {Constructor<Long>}\r\n */\r\nutil.Long = /* istanbul ignore next */ util.global.dcodeIO && /* istanbul ignore next */ util.global.dcodeIO.Long\r\n         || /* istanbul ignore next */ util.global.Long\r\n         || util.inquire(\"long\");\r\n\r\n/**\r\n * Regular expression used to verify 2 bit (`bool`) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key2Re = /^true|false|0|1$/;\r\n\r\n/**\r\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\r\n\r\n/**\r\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\r\n * @type {RegExp}\r\n * @const\r\n */\r\nutil.key64Re = /^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\r\n\r\n/**\r\n * Converts a number or long to an 8 characters long hash string.\r\n * @param {Long|number} value Value to convert\r\n * @returns {string} Hash\r\n */\r\nutil.longToHash = function longToHash(value) {\r\n    return value\r\n        ? util.LongBits.from(value).toHash()\r\n        : util.LongBits.zeroHash;\r\n};\r\n\r\n/**\r\n * Converts an 8 characters long hash string to a long or number.\r\n * @param {string} hash Hash\r\n * @param {boolean} [unsigned=false] Whether unsigned or not\r\n * @returns {Long|number} Original value\r\n */\r\nutil.longFromHash = function longFromHash(hash, unsigned) {\r\n    var bits = util.LongBits.fromHash(hash);\r\n    if (util.Long)\r\n        return util.Long.fromBits(bits.lo, bits.hi, unsigned);\r\n    return bits.toNumber(Boolean(unsigned));\r\n};\r\n\r\n/**\r\n * Merges the properties of the source object into the destination object.\r\n * @memberof util\r\n * @param {Object.<string,*>} dst Destination object\r\n * @param {Object.<string,*>} src Source object\r\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\r\n * @returns {Object.<string,*>} Destination object\r\n */\r\nfunction merge(dst, src, ifNotSet) { // used by converters\r\n    for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\r\n        if (dst[keys[i]] === undefined || !ifNotSet)\r\n            dst[keys[i]] = src[keys[i]];\r\n    return dst;\r\n}\r\n\r\nutil.merge = merge;\r\n\r\n/**\r\n * Converts the first character of a string to lower case.\r\n * @param {string} str String to convert\r\n * @returns {string} Converted string\r\n */\r\nutil.lcFirst = function lcFirst(str) {\r\n    return str.charAt(0).toLowerCase() + str.substring(1);\r\n};\r\n\r\n/**\r\n * Creates a custom error constructor.\r\n * @memberof util\r\n * @param {string} name Error name\r\n * @returns {Constructor<Error>} Custom error constructor\r\n */\r\nfunction newError(name) {\r\n\r\n    function CustomError(message, properties) {\r\n\r\n        if (!(this instanceof CustomError))\r\n            return new CustomError(message, properties);\r\n\r\n        // Error.call(this, message);\r\n        // ^ just returns a new error instance because the ctor can be called as a function\r\n\r\n        Object.defineProperty(this, \"message\", { get: function() { return message; } });\r\n\r\n        /* istanbul ignore next */\r\n        if (Error.captureStackTrace) // node\r\n            Error.captureStackTrace(this, CustomError);\r\n        else\r\n            Object.defineProperty(this, \"stack\", { value: (new Error()).stack || \"\" });\r\n\r\n        if (properties)\r\n            merge(this, properties);\r\n    }\r\n\r\n    (CustomError.prototype = Object.create(Error.prototype)).constructor = CustomError;\r\n\r\n    Object.defineProperty(CustomError.prototype, \"name\", { get: function() { return name; } });\r\n\r\n    CustomError.prototype.toString = function toString() {\r\n        return this.name + \": \" + this.message;\r\n    };\r\n\r\n    return CustomError;\r\n}\r\n\r\nutil.newError = newError;\r\n\r\n/**\r\n * Constructs a new protocol error.\r\n * @classdesc Error subclass indicating a protocol specifc error.\r\n * @memberof util\r\n * @extends Error\r\n * @template T extends Message<T>\r\n * @constructor\r\n * @param {string} message Error message\r\n * @param {Object.<string,*>} [properties] Additional properties\r\n * @example\r\n * try {\r\n *     MyMessage.decode(someBuffer); // throws if required fields are missing\r\n * } catch (e) {\r\n *     if (e instanceof ProtocolError && e.instance)\r\n *         console.log(\"decoded so far: \" + JSON.stringify(e.instance));\r\n * }\r\n */\r\nutil.ProtocolError = newError(\"ProtocolError\");\r\n\r\n/**\r\n * So far decoded message instance.\r\n * @name util.ProtocolError#instance\r\n * @type {Message<T>}\r\n */\r\n\r\n/**\r\n * A OneOf getter as returned by {@link util.oneOfGetter}.\r\n * @typedef OneOfGetter\r\n * @type {function}\r\n * @returns {string|undefined} Set field name, if any\r\n */\r\n\r\n/**\r\n * Builds a getter for a oneof's present field name.\r\n * @param {string[]} fieldNames Field names\r\n * @returns {OneOfGetter} Unbound getter\r\n */\r\nutil.oneOfGetter = function getOneOf(fieldNames) {\r\n    var fieldMap = {};\r\n    for (var i = 0; i < fieldNames.length; ++i)\r\n        fieldMap[fieldNames[i]] = 1;\r\n\r\n    /**\r\n     * @returns {string|undefined} Set field name, if any\r\n     * @this Object\r\n     * @ignore\r\n     */\r\n    return function() { // eslint-disable-line consistent-return\r\n        for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\r\n            if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\r\n                return keys[i];\r\n    };\r\n};\r\n\r\n/**\r\n * A OneOf setter as returned by {@link util.oneOfSetter}.\r\n * @typedef OneOfSetter\r\n * @type {function}\r\n * @param {string|undefined} value Field name\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Builds a setter for a oneof's present field name.\r\n * @param {string[]} fieldNames Field names\r\n * @returns {OneOfSetter} Unbound setter\r\n */\r\nutil.oneOfSetter = function setOneOf(fieldNames) {\r\n\r\n    /**\r\n     * @param {string} name Field name\r\n     * @returns {undefined}\r\n     * @this Object\r\n     * @ignore\r\n     */\r\n    return function(name) {\r\n        for (var i = 0; i < fieldNames.length; ++i)\r\n            if (fieldNames[i] !== name)\r\n                delete this[fieldNames[i]];\r\n    };\r\n};\r\n\r\n/**\r\n * Default conversion options used for {@link Message#toJSON} implementations.\r\n *\r\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\r\n *\r\n * - Longs become strings\r\n * - Enums become string keys\r\n * - Bytes become base64 encoded strings\r\n * - (Sub-)Messages become plain objects\r\n * - Maps become plain objects with all string keys\r\n * - Repeated fields become arrays\r\n * - NaN and Infinity for float and double fields become strings\r\n *\r\n * @type {IConversionOptions}\r\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\r\n */\r\nutil.toJSONOptions = {\r\n    longs: String,\r\n    enums: String,\r\n    bytes: String,\r\n    json: true\r\n};\r\n\r\n// Sets up buffer utility according to the environment (called in index-minimal)\r\nutil._configure = function() {\r\n    var Buffer = util.Buffer;\r\n    /* istanbul ignore if */\r\n    if (!Buffer) {\r\n        util._Buffer_from = util._Buffer_allocUnsafe = null;\r\n        return;\r\n    }\r\n    // because node 4.x buffers are incompatible & immutable\r\n    // see: https://github.com/dcodeIO/protobuf.js/pull/665\r\n    util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\r\n        /* istanbul ignore next */\r\n        function Buffer_from(value, encoding) {\r\n            return new Buffer(value, encoding);\r\n        };\r\n    util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\r\n        /* istanbul ignore next */\r\n        function Buffer_allocUnsafe(size) {\r\n            return new Buffer(size);\r\n        };\r\n};\r\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"./longbits\":275,\"@protobufjs/aspromise\":5,\"@protobufjs/base64\":6,\"@protobufjs/eventemitter\":7,\"@protobufjs/float\":8,\"@protobufjs/inquire\":9,\"@protobufjs/pool\":10,\"@protobufjs/utf8\":11}],277:[function(require,module,exports){\n\"use strict\";\r\nmodule.exports = Writer;\r\n\r\nvar util      = require(\"./util/minimal\");\r\n\r\nvar BufferWriter; // cyclic\r\n\r\nvar LongBits  = util.LongBits,\r\n    base64    = util.base64,\r\n    utf8      = util.utf8;\r\n\r\n/**\r\n * Constructs a new writer operation instance.\r\n * @classdesc Scheduled writer operation.\r\n * @constructor\r\n * @param {function(*, Uint8Array, number)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {*} val Value to write\r\n * @ignore\r\n */\r\nfunction Op(fn, len, val) {\r\n\r\n    /**\r\n     * Function to call.\r\n     * @type {function(Uint8Array, number, *)}\r\n     */\r\n    this.fn = fn;\r\n\r\n    /**\r\n     * Value byte length.\r\n     * @type {number}\r\n     */\r\n    this.len = len;\r\n\r\n    /**\r\n     * Next operation.\r\n     * @type {Writer.Op|undefined}\r\n     */\r\n    this.next = undefined;\r\n\r\n    /**\r\n     * Value to write.\r\n     * @type {*}\r\n     */\r\n    this.val = val; // type varies\r\n}\r\n\r\n/* istanbul ignore next */\r\nfunction noop() {} // eslint-disable-line no-empty-function\r\n\r\n/**\r\n * Constructs a new writer state instance.\r\n * @classdesc Copied writer state.\r\n * @memberof Writer\r\n * @constructor\r\n * @param {Writer} writer Writer to copy state from\r\n * @ignore\r\n */\r\nfunction State(writer) {\r\n\r\n    /**\r\n     * Current head.\r\n     * @type {Writer.Op}\r\n     */\r\n    this.head = writer.head;\r\n\r\n    /**\r\n     * Current tail.\r\n     * @type {Writer.Op}\r\n     */\r\n    this.tail = writer.tail;\r\n\r\n    /**\r\n     * Current buffer length.\r\n     * @type {number}\r\n     */\r\n    this.len = writer.len;\r\n\r\n    /**\r\n     * Next state.\r\n     * @type {State|null}\r\n     */\r\n    this.next = writer.states;\r\n}\r\n\r\n/**\r\n * Constructs a new writer instance.\r\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\r\n * @constructor\r\n */\r\nfunction Writer() {\r\n\r\n    /**\r\n     * Current length.\r\n     * @type {number}\r\n     */\r\n    this.len = 0;\r\n\r\n    /**\r\n     * Operations head.\r\n     * @type {Object}\r\n     */\r\n    this.head = new Op(noop, 0, 0);\r\n\r\n    /**\r\n     * Operations tail\r\n     * @type {Object}\r\n     */\r\n    this.tail = this.head;\r\n\r\n    /**\r\n     * Linked forked states.\r\n     * @type {Object|null}\r\n     */\r\n    this.states = null;\r\n\r\n    // When a value is written, the writer calculates its byte length and puts it into a linked\r\n    // list of operations to perform when finish() is called. This both allows us to allocate\r\n    // buffers of the exact required size and reduces the amount of work we have to do compared\r\n    // to first calculating over objects and then encoding over objects. In our case, the encoding\r\n    // part is just a linked list walk calling operations with already prepared values.\r\n}\r\n\r\n/**\r\n * Creates a new writer.\r\n * @function\r\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\r\n */\r\nWriter.create = util.Buffer\r\n    ? function create_buffer_setup() {\r\n        return (Writer.create = function create_buffer() {\r\n            return new BufferWriter();\r\n        })();\r\n    }\r\n    /* istanbul ignore next */\r\n    : function create_array() {\r\n        return new Writer();\r\n    };\r\n\r\n/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\nWriter.alloc = function alloc(size) {\r\n    return new util.Array(size);\r\n};\r\n\r\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\r\n/* istanbul ignore else */\r\nif (util.Array !== Array)\r\n    Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\r\n\r\n/**\r\n * Pushes a new operation to the queue.\r\n * @param {function(Uint8Array, number, *)} fn Function to call\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @returns {Writer} `this`\r\n * @private\r\n */\r\nWriter.prototype._push = function push(fn, len, val) {\r\n    this.tail = this.tail.next = new Op(fn, len, val);\r\n    this.len += len;\r\n    return this;\r\n};\r\n\r\nfunction writeByte(val, buf, pos) {\r\n    buf[pos] = val & 255;\r\n}\r\n\r\nfunction writeVarint32(val, buf, pos) {\r\n    while (val > 127) {\r\n        buf[pos++] = val & 127 | 128;\r\n        val >>>= 7;\r\n    }\r\n    buf[pos] = val;\r\n}\r\n\r\n/**\r\n * Constructs a new varint writer operation instance.\r\n * @classdesc Scheduled varint writer operation.\r\n * @extends Op\r\n * @constructor\r\n * @param {number} len Value byte length\r\n * @param {number} val Value to write\r\n * @ignore\r\n */\r\nfunction VarintOp(len, val) {\r\n    this.len = len;\r\n    this.next = undefined;\r\n    this.val = val;\r\n}\r\n\r\nVarintOp.prototype = Object.create(Op.prototype);\r\nVarintOp.prototype.fn = writeVarint32;\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as a varint.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.uint32 = function write_uint32(value) {\r\n    // here, the call to this.push has been inlined and a varint specific Op subclass is used.\r\n    // uint32 is by far the most frequently used operation and benefits significantly from this.\r\n    this.len += (this.tail = this.tail.next = new VarintOp(\r\n        (value = value >>> 0)\r\n                < 128       ? 1\r\n        : value < 16384     ? 2\r\n        : value < 2097152   ? 3\r\n        : value < 268435456 ? 4\r\n        :                     5,\r\n    value)).len;\r\n    return this;\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as a varint.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.int32 = function write_int32(value) {\r\n    return value < 0\r\n        ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\r\n        : this.uint32(value);\r\n};\r\n\r\n/**\r\n * Writes a 32 bit value as a varint, zig-zag encoded.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.sint32 = function write_sint32(value) {\r\n    return this.uint32((value << 1 ^ value >> 31) >>> 0);\r\n};\r\n\r\nfunction writeVarint64(val, buf, pos) {\r\n    while (val.hi) {\r\n        buf[pos++] = val.lo & 127 | 128;\r\n        val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\r\n        val.hi >>>= 7;\r\n    }\r\n    while (val.lo > 127) {\r\n        buf[pos++] = val.lo & 127 | 128;\r\n        val.lo = val.lo >>> 7;\r\n    }\r\n    buf[pos++] = val.lo;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as a varint.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.uint64 = function write_uint64(value) {\r\n    var bits = LongBits.from(value);\r\n    return this._push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint.\r\n * @function\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.int64 = Writer.prototype.uint64;\r\n\r\n/**\r\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.sint64 = function write_sint64(value) {\r\n    var bits = LongBits.from(value).zzEncode();\r\n    return this._push(writeVarint64, bits.length(), bits);\r\n};\r\n\r\n/**\r\n * Writes a boolish value as a varint.\r\n * @param {boolean} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.bool = function write_bool(value) {\r\n    return this._push(writeByte, 1, value ? 1 : 0);\r\n};\r\n\r\nfunction writeFixed32(val, buf, pos) {\r\n    buf[pos    ] =  val         & 255;\r\n    buf[pos + 1] =  val >>> 8   & 255;\r\n    buf[pos + 2] =  val >>> 16  & 255;\r\n    buf[pos + 3] =  val >>> 24;\r\n}\r\n\r\n/**\r\n * Writes an unsigned 32 bit value as fixed 32 bits.\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.fixed32 = function write_fixed32(value) {\r\n    return this._push(writeFixed32, 4, value >>> 0);\r\n};\r\n\r\n/**\r\n * Writes a signed 32 bit value as fixed 32 bits.\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\r\n\r\n/**\r\n * Writes an unsigned 64 bit value as fixed 64 bits.\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.fixed64 = function write_fixed64(value) {\r\n    var bits = LongBits.from(value);\r\n    return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\r\n};\r\n\r\n/**\r\n * Writes a signed 64 bit value as fixed 64 bits.\r\n * @function\r\n * @param {Long|number|string} value Value to write\r\n * @returns {Writer} `this`\r\n * @throws {TypeError} If `value` is a string and no long library is present.\r\n */\r\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\r\n\r\n/**\r\n * Writes a float (32 bit).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.float = function write_float(value) {\r\n    return this._push(util.float.writeFloatLE, 4, value);\r\n};\r\n\r\n/**\r\n * Writes a double (64 bit float).\r\n * @function\r\n * @param {number} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.double = function write_double(value) {\r\n    return this._push(util.float.writeDoubleLE, 8, value);\r\n};\r\n\r\nvar writeBytes = util.Array.prototype.set\r\n    ? function writeBytes_set(val, buf, pos) {\r\n        buf.set(val, pos); // also works for plain array values\r\n    }\r\n    /* istanbul ignore next */\r\n    : function writeBytes_for(val, buf, pos) {\r\n        for (var i = 0; i < val.length; ++i)\r\n            buf[pos + i] = val[i];\r\n    };\r\n\r\n/**\r\n * Writes a sequence of bytes.\r\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.bytes = function write_bytes(value) {\r\n    var len = value.length >>> 0;\r\n    if (!len)\r\n        return this._push(writeByte, 1, 0);\r\n    if (util.isString(value)) {\r\n        var buf = Writer.alloc(len = base64.length(value));\r\n        base64.decode(value, buf, 0);\r\n        value = buf;\r\n    }\r\n    return this.uint32(len)._push(writeBytes, len, value);\r\n};\r\n\r\n/**\r\n * Writes a string.\r\n * @param {string} value Value to write\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.string = function write_string(value) {\r\n    var len = utf8.length(value);\r\n    return len\r\n        ? this.uint32(len)._push(utf8.write, len, value)\r\n        : this._push(writeByte, 1, 0);\r\n};\r\n\r\n/**\r\n * Forks this writer's state by pushing it to a stack.\r\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.fork = function fork() {\r\n    this.states = new State(this);\r\n    this.head = this.tail = new Op(noop, 0, 0);\r\n    this.len = 0;\r\n    return this;\r\n};\r\n\r\n/**\r\n * Resets this instance to the last state.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.reset = function reset() {\r\n    if (this.states) {\r\n        this.head   = this.states.head;\r\n        this.tail   = this.states.tail;\r\n        this.len    = this.states.len;\r\n        this.states = this.states.next;\r\n    } else {\r\n        this.head = this.tail = new Op(noop, 0, 0);\r\n        this.len  = 0;\r\n    }\r\n    return this;\r\n};\r\n\r\n/**\r\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\r\n * @returns {Writer} `this`\r\n */\r\nWriter.prototype.ldelim = function ldelim() {\r\n    var head = this.head,\r\n        tail = this.tail,\r\n        len  = this.len;\r\n    this.reset().uint32(len);\r\n    if (len) {\r\n        this.tail.next = head.next; // skip noop\r\n        this.tail = tail;\r\n        this.len += len;\r\n    }\r\n    return this;\r\n};\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @returns {Uint8Array} Finished buffer\r\n */\r\nWriter.prototype.finish = function finish() {\r\n    var head = this.head.next, // skip noop\r\n        buf  = this.constructor.alloc(this.len),\r\n        pos  = 0;\r\n    while (head) {\r\n        head.fn(head.val, buf, pos);\r\n        pos += head.len;\r\n        head = head.next;\r\n    }\r\n    // this.head = this.tail = null;\r\n    return buf;\r\n};\r\n\r\nWriter._configure = function(BufferWriter_) {\r\n    BufferWriter = BufferWriter_;\r\n};\r\n\n},{\"./util/minimal\":276}],278:[function(require,module,exports){\n\"use strict\";\r\nmodule.exports = BufferWriter;\r\n\r\n// extends Writer\r\nvar Writer = require(\"./writer\");\r\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\r\n\r\nvar util = require(\"./util/minimal\");\r\n\r\nvar Buffer = util.Buffer;\r\n\r\n/**\r\n * Constructs a new buffer writer instance.\r\n * @classdesc Wire format writer using node buffers.\r\n * @extends Writer\r\n * @constructor\r\n */\r\nfunction BufferWriter() {\r\n    Writer.call(this);\r\n}\r\n\r\n/**\r\n * Allocates a buffer of the specified size.\r\n * @param {number} size Buffer size\r\n * @returns {Buffer} Buffer\r\n */\r\nBufferWriter.alloc = function alloc_buffer(size) {\r\n    return (BufferWriter.alloc = util._Buffer_allocUnsafe)(size);\r\n};\r\n\r\nvar writeBytesBuffer = Buffer && Buffer.prototype instanceof Uint8Array && Buffer.prototype.set.name === \"set\"\r\n    ? function writeBytesBuffer_set(val, buf, pos) {\r\n        buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\r\n                           // also works for plain array values\r\n    }\r\n    /* istanbul ignore next */\r\n    : function writeBytesBuffer_copy(val, buf, pos) {\r\n        if (val.copy) // Buffer values\r\n            val.copy(buf, pos, 0, val.length);\r\n        else for (var i = 0; i < val.length;) // plain array values\r\n            buf[pos++] = val[i++];\r\n    };\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\r\n    if (util.isString(value))\r\n        value = util._Buffer_from(value, \"base64\");\r\n    var len = value.length >>> 0;\r\n    this.uint32(len);\r\n    if (len)\r\n        this._push(writeBytesBuffer, len, value);\r\n    return this;\r\n};\r\n\r\nfunction writeStringBuffer(val, buf, pos) {\r\n    if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\r\n        util.utf8.write(val, buf, pos);\r\n    else\r\n        buf.utf8Write(val, pos);\r\n}\r\n\r\n/**\r\n * @override\r\n */\r\nBufferWriter.prototype.string = function write_string_buffer(value) {\r\n    var len = Buffer.byteLength(value);\r\n    this.uint32(len);\r\n    if (len)\r\n        this._push(writeStringBuffer, len, value);\r\n    return this;\r\n};\r\n\r\n\r\n/**\r\n * Finishes the write operation.\r\n * @name BufferWriter#finish\r\n * @function\r\n * @returns {Buffer} Finished buffer\r\n */\r\n\n},{\"./util/minimal\":276,\"./writer\":277}],279:[function(require,module,exports){\n(function (global){\n/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t    counter = 0,\n\t\t    length = string.length,\n\t\t    value,\n\t\t    extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t//  0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t    inputLength = input.length,\n\t\t    out,\n\t\t    i = 0,\n\t\t    n = initialN,\n\t\t    bias = initialBias,\n\t\t    basic,\n\t\t    j,\n\t\t    index,\n\t\t    oldi,\n\t\t    w,\n\t\t    k,\n\t\t    digit,\n\t\t    t,\n\t\t    /** Cached calculation results */\n\t\t    baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t    delta,\n\t\t    handledCPCount,\n\t\t    basicLength,\n\t\t    bias,\n\t\t    j,\n\t\t    m,\n\t\t    q,\n\t\t    k,\n\t\t    t,\n\t\t    currentValue,\n\t\t    output = [],\n\t\t    /** `inputLength` will hold the number of code points in `input`. */\n\t\t    inputLength,\n\t\t    /** Cached calculation results */\n\t\t    handledCPCountPlusOne,\n\t\t    baseMinusT,\n\t\t    qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],280:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n  sep = sep || '&';\n  eq = eq || '=';\n  var obj = {};\n\n  if (typeof qs !== 'string' || qs.length === 0) {\n    return obj;\n  }\n\n  var regexp = /\\+/g;\n  qs = qs.split(sep);\n\n  var maxKeys = 1000;\n  if (options && typeof options.maxKeys === 'number') {\n    maxKeys = options.maxKeys;\n  }\n\n  var len = qs.length;\n  // maxKeys <= 0 means that we should not limit keys count\n  if (maxKeys > 0 && len > maxKeys) {\n    len = maxKeys;\n  }\n\n  for (var i = 0; i < len; ++i) {\n    var x = qs[i].replace(regexp, '%20'),\n        idx = x.indexOf(eq),\n        kstr, vstr, k, v;\n\n    if (idx >= 0) {\n      kstr = x.substr(0, idx);\n      vstr = x.substr(idx + 1);\n    } else {\n      kstr = x;\n      vstr = '';\n    }\n\n    k = decodeURIComponent(kstr);\n    v = decodeURIComponent(vstr);\n\n    if (!hasOwnProperty(obj, k)) {\n      obj[k] = v;\n    } else if (isArray(obj[k])) {\n      obj[k].push(v);\n    } else {\n      obj[k] = [obj[k], v];\n    }\n  }\n\n  return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n  return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\n},{}],281:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n  switch (typeof v) {\n    case 'string':\n      return v;\n\n    case 'boolean':\n      return v ? 'true' : 'false';\n\n    case 'number':\n      return isFinite(v) ? v : '';\n\n    default:\n      return '';\n  }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n  sep = sep || '&';\n  eq = eq || '=';\n  if (obj === null) {\n    obj = undefined;\n  }\n\n  if (typeof obj === 'object') {\n    return map(objectKeys(obj), function(k) {\n      var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n      if (isArray(obj[k])) {\n        return map(obj[k], function(v) {\n          return ks + encodeURIComponent(stringifyPrimitive(v));\n        }).join(sep);\n      } else {\n        return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n      }\n    }).join(sep);\n\n  }\n\n  if (!name) return '';\n  return encodeURIComponent(stringifyPrimitive(name)) + eq +\n         encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n  return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n  if (xs.map) return xs.map(f);\n  var res = [];\n  for (var i = 0; i < xs.length; i++) {\n    res.push(f(xs[i], i));\n  }\n  return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n  var res = [];\n  for (var key in obj) {\n    if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n  }\n  return res;\n};\n\n},{}],282:[function(require,module,exports){\n'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n\n},{\"./decode\":280,\"./encode\":281}],283:[function(require,module,exports){\n// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random();       // 0 <= x < 1.  Every bit is random.\n// var x = random.quick(); // 0 <= x < 1.  32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baagøe.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by François Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three.  It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures.  Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n\n},{\"./lib/alea\":284,\"./lib/tychei\":285,\"./lib/xor128\":286,\"./lib/xor4096\":287,\"./lib/xorshift7\":288,\"./lib/xorwow\":289,\"./seedrandom\":290}],284:[function(require,module,exports){\n// A port of an algorithm by Johannes Baagøe <baagoe@baagoe.com>, 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baagøe <baagoe@baagoe.org>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n  var me = this, mash = Mash();\n\n  me.next = function() {\n    var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n    me.s0 = me.s1;\n    me.s1 = me.s2;\n    return me.s2 = t - (me.c = t | 0);\n  };\n\n  // Apply the seeding algorithm from Baagoe.\n  me.c = 1;\n  me.s0 = mash(' ');\n  me.s1 = mash(' ');\n  me.s2 = mash(' ');\n  me.s0 -= mash(seed);\n  if (me.s0 < 0) { me.s0 += 1; }\n  me.s1 -= mash(seed);\n  if (me.s1 < 0) { me.s1 += 1; }\n  me.s2 -= mash(seed);\n  if (me.s2 < 0) { me.s2 += 1; }\n  mash = null;\n}\n\nfunction copy(f, t) {\n  t.c = f.c;\n  t.s0 = f.s0;\n  t.s1 = f.s1;\n  t.s2 = f.s2;\n  return t;\n}\n\nfunction impl(seed, opts) {\n  var xg = new Alea(seed),\n      state = opts && opts.state,\n      prng = xg.next;\n  prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n  prng.double = function() {\n    return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n  };\n  prng.quick = prng;\n  if (state) {\n    if (typeof(state) == 'object') copy(state, xg);\n    prng.state = function() { return copy(xg, {}); }\n  }\n  return prng;\n}\n\nfunction Mash() {\n  var n = 0xefc8249d;\n\n  var mash = function(data) {\n    data = data.toString();\n    for (var i = 0; i < data.length; i++) {\n      n += data.charCodeAt(i);\n      var h = 0.02519603282416938 * n;\n      n = h >>> 0;\n      h -= n;\n      h *= n;\n      n = h >>> 0;\n      h -= n;\n      n += h * 0x100000000; // 2^32\n    }\n    return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n  };\n\n  return mash;\n}\n\n\nif (module && module.exports) {\n  module.exports = impl;\n} else if (define && define.amd) {\n  define(function() { return impl; });\n} else {\n  this.alea = impl;\n}\n\n})(\n  this,\n  (typeof module) == 'object' && module,    // present in node.js\n  (typeof define) == 'function' && define   // present with an AMD loader\n);\n\n\n\n},{}],285:[function(require,module,exports){\n// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n  var me = this, strseed = '';\n\n  // Set up generator function.\n  me.next = function() {\n    var b = me.b, c = me.c, d = me.d, a = me.a;\n    b = (b << 25) ^ (b >>> 7) ^ c;\n    c = (c - d) | 0;\n    d = (d << 24) ^ (d >>> 8) ^ a;\n    a = (a - b) | 0;\n    me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n    me.c = c = (c - d) | 0;\n    me.d = (d << 16) ^ (c >>> 16) ^ a;\n    return me.a = (a - b) | 0;\n  };\n\n  /* The following is non-inverted tyche, which has better internal\n   * bit diffusion, but which is about 25% slower than tyche-i in JS.\n  me.next = function() {\n    var a = me.a, b = me.b, c = me.c, d = me.d;\n    a = (me.a + me.b | 0) >>> 0;\n    d = me.d ^ a; d = d << 16 ^ d >>> 16;\n    c = me.c + d | 0;\n    b = me.b ^ c; b = b << 12 ^ d >>> 20;\n    me.a = a = a + b | 0;\n    d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n    me.c = c = c + d | 0;\n    b = b ^ c;\n    return me.b = (b << 7 ^ b >>> 25);\n  }\n  */\n\n  me.a = 0;\n  me.b = 0;\n  me.c = 2654435769 | 0;\n  me.d = 1367130551;\n\n  if (seed === Math.floor(seed)) {\n    // Integer seed.\n    me.a = (seed / 0x100000000) | 0;\n    me.b = seed | 0;\n  } else {\n    // String seed.\n    strseed += seed;\n  }\n\n  // Mix in string seed, then discard an initial batch of 64 values.\n  for (var k = 0; k < strseed.length + 20; k++) {\n    me.b ^= strseed.charCodeAt(k) | 0;\n    me.next();\n  }\n}\n\nfunction copy(f, t) {\n  t.a = f.a;\n  t.b = f.b;\n  t.c = f.c;\n  t.d = f.d;\n  return t;\n};\n\nfunction impl(seed, opts) {\n  var xg = new XorGen(seed),\n      state = opts && opts.state,\n      prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n  prng.double = function() {\n    do {\n      var top = xg.next() >>> 11,\n          bot = (xg.next() >>> 0) / 0x100000000,\n          result = (top + bot) / (1 << 21);\n    } while (result === 0);\n    return result;\n  };\n  prng.int32 = xg.next;\n  prng.quick = prng;\n  if (state) {\n    if (typeof(state) == 'object') copy(state, xg);\n    prng.state = function() { return copy(xg, {}); }\n  }\n  return prng;\n}\n\nif (module && module.exports) {\n  module.exports = impl;\n} else if (define && define.amd) {\n  define(function() { return impl; });\n} else {\n  this.tychei = impl;\n}\n\n})(\n  this,\n  (typeof module) == 'object' && module,    // present in node.js\n  (typeof define) == 'function' && define   // present with an AMD loader\n);\n\n\n\n},{}],286:[function(require,module,exports){\n// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia.  See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n  var me = this, strseed = '';\n\n  me.x = 0;\n  me.y = 0;\n  me.z = 0;\n  me.w = 0;\n\n  // Set up generator function.\n  me.next = function() {\n    var t = me.x ^ (me.x << 11);\n    me.x = me.y;\n    me.y = me.z;\n    me.z = me.w;\n    return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n  };\n\n  if (seed === (seed | 0)) {\n    // Integer seed.\n    me.x = seed;\n  } else {\n    // String seed.\n    strseed += seed;\n  }\n\n  // Mix in string seed, then discard an initial batch of 64 values.\n  for (var k = 0; k < strseed.length + 64; k++) {\n    me.x ^= strseed.charCodeAt(k) | 0;\n    me.next();\n  }\n}\n\nfunction copy(f, t) {\n  t.x = f.x;\n  t.y = f.y;\n  t.z = f.z;\n  t.w = f.w;\n  return t;\n}\n\nfunction impl(seed, opts) {\n  var xg = new XorGen(seed),\n      state = opts && opts.state,\n      prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n  prng.double = function() {\n    do {\n      var top = xg.next() >>> 11,\n          bot = (xg.next() >>> 0) / 0x100000000,\n          result = (top + bot) / (1 << 21);\n    } while (result === 0);\n    return result;\n  };\n  prng.int32 = xg.next;\n  prng.quick = prng;\n  if (state) {\n    if (typeof(state) == 'object') copy(state, xg);\n    prng.state = function() { return copy(xg, {}); }\n  }\n  return prng;\n}\n\nif (module && module.exports) {\n  module.exports = impl;\n} else if (define && define.amd) {\n  define(function() { return impl; });\n} else {\n  this.xor128 = impl;\n}\n\n})(\n  this,\n  (typeof module) == 'object' && module,    // present in node.js\n  (typeof define) == 'function' && define   // present with an AMD loader\n);\n\n\n\n},{}],287:[function(require,module,exports){\n// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated.  For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1);                        // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897);   // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C.  This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n  var me = this;\n\n  // Set up generator function.\n  me.next = function() {\n    var w = me.w,\n        X = me.X, i = me.i, t, v;\n    // Update Weyl generator.\n    me.w = w = (w + 0x61c88647) | 0;\n    // Update xor generator.\n    v = X[(i + 34) & 127];\n    t = X[i = ((i + 1) & 127)];\n    v ^= v << 13;\n    t ^= t << 17;\n    v ^= v >>> 15;\n    t ^= t >>> 12;\n    // Update Xor generator array state.\n    v = X[i] = v ^ t;\n    me.i = i;\n    // Result is the combination.\n    return (v + (w ^ (w >>> 16))) | 0;\n  };\n\n  function init(me, seed) {\n    var t, v, i, j, w, X = [], limit = 128;\n    if (seed === (seed | 0)) {\n      // Numeric seeds initialize v, which is used to generates X.\n      v = seed;\n      seed = null;\n    } else {\n      // String seeds are mixed into v and X one character at a time.\n      seed = seed + '\\0';\n      v = 0;\n      limit = Math.max(limit, seed.length);\n    }\n    // Initialize circular array and weyl value.\n    for (i = 0, j = -32; j < limit; ++j) {\n      // Put the unicode characters into the array, and shuffle them.\n      if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n      // After 32 shuffles, take v as the starting w value.\n      if (j === 0) w = v;\n      v ^= v << 10;\n      v ^= v >>> 15;\n      v ^= v << 4;\n      v ^= v >>> 13;\n      if (j >= 0) {\n        w = (w + 0x61c88647) | 0;     // Weyl.\n        t = (X[j & 127] ^= (v + w));  // Combine xor and weyl to init array.\n        i = (0 == t) ? i + 1 : 0;     // Count zeroes.\n      }\n    }\n    // We have detected all zeroes; make the key nonzero.\n    if (i >= 128) {\n      X[(seed && seed.length || 0) & 127] = -1;\n    }\n    // Run the generator 512 times to further mix the state before using it.\n    // Factoring this as a function slows the main generator, so it is just\n    // unrolled here.  The weyl generator is not advanced while warming up.\n    i = 127;\n    for (j = 4 * 128; j > 0; --j) {\n      v = X[(i + 34) & 127];\n      t = X[i = ((i + 1) & 127)];\n      v ^= v << 13;\n      t ^= t << 17;\n      v ^= v >>> 15;\n      t ^= t >>> 12;\n      X[i] = v ^ t;\n    }\n    // Storing state as object members is faster than using closure variables.\n    me.w = w;\n    me.X = X;\n    me.i = i;\n  }\n\n  init(me, seed);\n}\n\nfunction copy(f, t) {\n  t.i = f.i;\n  t.w = f.w;\n  t.X = f.X.slice();\n  return t;\n};\n\nfunction impl(seed, opts) {\n  if (seed == null) seed = +(new Date);\n  var xg = new XorGen(seed),\n      state = opts && opts.state,\n      prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n  prng.double = function() {\n    do {\n      var top = xg.next() >>> 11,\n          bot = (xg.next() >>> 0) / 0x100000000,\n          result = (top + bot) / (1 << 21);\n    } while (result === 0);\n    return result;\n  };\n  prng.int32 = xg.next;\n  prng.quick = prng;\n  if (state) {\n    if (state.X) copy(state, xg);\n    prng.state = function() { return copy(xg, {}); }\n  }\n  return prng;\n}\n\nif (module && module.exports) {\n  module.exports = impl;\n} else if (define && define.amd) {\n  define(function() { return impl; });\n} else {\n  this.xor4096 = impl;\n}\n\n})(\n  this,                                     // window object or global\n  (typeof module) == 'object' && module,    // present in node.js\n  (typeof define) == 'function' && define   // present with an AMD loader\n);\n\n},{}],288:[function(require,module,exports){\n// A Javascript implementaion of the \"xorshift7\" algorithm by\n// François Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n  var me = this;\n\n  // Set up generator function.\n  me.next = function() {\n    // Update xor generator.\n    var X = me.x, i = me.i, t, v, w;\n    t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n    t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n    t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n    t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n    t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n    X[i] = v;\n    me.i = (i + 1) & 7;\n    return v;\n  };\n\n  function init(me, seed) {\n    var j, w, X = [];\n\n    if (seed === (seed | 0)) {\n      // Seed state array using a 32-bit integer.\n      w = X[0] = seed;\n    } else {\n      // Seed state using a string.\n      seed = '' + seed;\n      for (j = 0; j < seed.length; ++j) {\n        X[j & 7] = (X[j & 7] << 15) ^\n            (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n      }\n    }\n    // Enforce an array length of 8, not all zeroes.\n    while (X.length < 8) X.push(0);\n    for (j = 0; j < 8 && X[j] === 0; ++j);\n    if (j == 8) w = X[7] = -1; else w = X[j];\n\n    me.x = X;\n    me.i = 0;\n\n    // Discard an initial 256 values.\n    for (j = 256; j > 0; --j) {\n      me.next();\n    }\n  }\n\n  init(me, seed);\n}\n\nfunction copy(f, t) {\n  t.x = f.x.slice();\n  t.i = f.i;\n  return t;\n}\n\nfunction impl(seed, opts) {\n  if (seed == null) seed = +(new Date);\n  var xg = new XorGen(seed),\n      state = opts && opts.state,\n      prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n  prng.double = function() {\n    do {\n      var top = xg.next() >>> 11,\n          bot = (xg.next() >>> 0) / 0x100000000,\n          result = (top + bot) / (1 << 21);\n    } while (result === 0);\n    return result;\n  };\n  prng.int32 = xg.next;\n  prng.quick = prng;\n  if (state) {\n    if (state.x) copy(state, xg);\n    prng.state = function() { return copy(xg, {}); }\n  }\n  return prng;\n}\n\nif (module && module.exports) {\n  module.exports = impl;\n} else if (define && define.amd) {\n  define(function() { return impl; });\n} else {\n  this.xorshift7 = impl;\n}\n\n})(\n  this,\n  (typeof module) == 'object' && module,    // present in node.js\n  (typeof define) == 'function' && define   // present with an AMD loader\n);\n\n\n},{}],289:[function(require,module,exports){\n// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia.  See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n  var me = this, strseed = '';\n\n  // Set up generator function.\n  me.next = function() {\n    var t = (me.x ^ (me.x >>> 2));\n    me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n    return (me.d = (me.d + 362437 | 0)) +\n       (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n  };\n\n  me.x = 0;\n  me.y = 0;\n  me.z = 0;\n  me.w = 0;\n  me.v = 0;\n\n  if (seed === (seed | 0)) {\n    // Integer seed.\n    me.x = seed;\n  } else {\n    // String seed.\n    strseed += seed;\n  }\n\n  // Mix in string seed, then discard an initial batch of 64 values.\n  for (var k = 0; k < strseed.length + 64; k++) {\n    me.x ^= strseed.charCodeAt(k) | 0;\n    if (k == strseed.length) {\n      me.d = me.x << 10 ^ me.x >>> 4;\n    }\n    me.next();\n  }\n}\n\nfunction copy(f, t) {\n  t.x = f.x;\n  t.y = f.y;\n  t.z = f.z;\n  t.w = f.w;\n  t.v = f.v;\n  t.d = f.d;\n  return t;\n}\n\nfunction impl(seed, opts) {\n  var xg = new XorGen(seed),\n      state = opts && opts.state,\n      prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n  prng.double = function() {\n    do {\n      var top = xg.next() >>> 11,\n          bot = (xg.next() >>> 0) / 0x100000000,\n          result = (top + bot) / (1 << 21);\n    } while (result === 0);\n    return result;\n  };\n  prng.int32 = xg.next;\n  prng.quick = prng;\n  if (state) {\n    if (typeof(state) == 'object') copy(state, xg);\n    prng.state = function() { return copy(xg, {}); }\n  }\n  return prng;\n}\n\nif (module && module.exports) {\n  module.exports = impl;\n} else if (define && define.amd) {\n  define(function() { return impl; });\n} else {\n  this.xorwow = impl;\n}\n\n})(\n  this,\n  (typeof module) == 'object' && module,    // present in node.js\n  (typeof define) == 'function' && define   // present with an AMD loader\n);\n\n\n\n},{}],290:[function(require,module,exports){\n/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n    width = 256,        // each RC4 output is 0 <= x < 256\n    chunks = 6,         // at least six RC4 outputs for each double\n    digits = 52,        // there are 52 significant digits in a double\n    rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n    startdenom = math.pow(width, chunks),\n    significance = math.pow(2, digits),\n    overflow = significance * 2,\n    mask = width - 1,\n    nodecrypto;         // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n  var key = [];\n  options = (options == true) ? { entropy: true } : (options || {});\n\n  // Flatten the seed string or build one from local entropy if needed.\n  var shortseed = mixkey(flatten(\n    options.entropy ? [seed, tostring(pool)] :\n    (seed == null) ? autoseed() : seed, 3), key);\n\n  // Use the seed to initialize an ARC4 generator.\n  var arc4 = new ARC4(key);\n\n  // This function returns a random double in [0, 1) that contains\n  // randomness in every bit of the mantissa of the IEEE 754 value.\n  var prng = function() {\n    var n = arc4.g(chunks),             // Start with a numerator n < 2 ^ 48\n        d = startdenom,                 //   and denominator d = 2 ^ 48.\n        x = 0;                          //   and no 'extra last byte'.\n    while (n < significance) {          // Fill up all significant digits by\n      n = (n + x) * width;              //   shifting numerator and\n      d *= width;                       //   denominator and generating a\n      x = arc4.g(1);                    //   new least-significant-byte.\n    }\n    while (n >= overflow) {             // To avoid rounding up, before adding\n      n /= 2;                           //   last byte, shift everything\n      d /= 2;                           //   right using integer math until\n      x >>>= 1;                         //   we have exactly the desired bits.\n    }\n    return (n + x) / d;                 // Form the number within [0, 1).\n  };\n\n  prng.int32 = function() { return arc4.g(4) | 0; }\n  prng.quick = function() { return arc4.g(4) / 0x100000000; }\n  prng.double = prng;\n\n  // Mix the randomness into accumulated entropy.\n  mixkey(tostring(arc4.S), pool);\n\n  // Calling convention: what to return as a function of prng, seed, is_math.\n  return (options.pass || callback ||\n      function(prng, seed, is_math_call, state) {\n        if (state) {\n          // Load the arc4 state from the given state if it has an S array.\n          if (state.S) { copy(state, arc4); }\n          // Only provide the .state method if requested via options.state.\n          prng.state = function() { return copy(arc4, {}); }\n        }\n\n        // If called as a method of Math (Math.seedrandom()), mutate\n        // Math.random because that is how seedrandom.js has worked since v1.0.\n        if (is_math_call) { math[rngname] = prng; return seed; }\n\n        // Otherwise, it is a newer calling convention, so return the\n        // prng directly.\n        else return prng;\n      })(\n  prng,\n  shortseed,\n  'global' in options ? options.global : (this == math),\n  options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation.  The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4.  Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n  var t, keylen = key.length,\n      me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n  // The empty key [] is treated as [0].\n  if (!keylen) { key = [keylen++]; }\n\n  // Set up S using the standard key scheduling algorithm.\n  while (i < width) {\n    s[i] = i++;\n  }\n  for (i = 0; i < width; i++) {\n    s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n    s[j] = t;\n  }\n\n  // The \"g\" method returns the next (count) outputs as one number.\n  (me.g = function(count) {\n    // Using instance members instead of closure state nearly doubles speed.\n    var t, r = 0,\n        i = me.i, j = me.j, s = me.S;\n    while (count--) {\n      t = s[i = mask & (i + 1)];\n      r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n    }\n    me.i = i; me.j = j;\n    return r;\n    // For robust unpredictability, the function call below automatically\n    // discards an initial batch of values.  This is called RC4-drop[256].\n    // See http://google.com/search?q=rsa+fluhrer+response&btnI\n  })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n  t.i = f.i;\n  t.j = f.j;\n  t.S = f.S.slice();\n  return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n  var result = [], typ = (typeof obj), prop;\n  if (depth && typ == 'object') {\n    for (prop in obj) {\n      try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n    }\n  }\n  return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n  var stringseed = seed + '', smear, j = 0;\n  while (j < stringseed.length) {\n    key[mask & j] =\n      mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n  }\n  return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n  try {\n    var out;\n    if (nodecrypto && (out = nodecrypto.randomBytes)) {\n      // The use of 'out' to remember randomBytes makes tight minified code.\n      out = out(width);\n    } else {\n      out = new Uint8Array(width);\n      (global.crypto || global.msCrypto).getRandomValues(out);\n    }\n    return tostring(out);\n  } catch (e) {\n    var browser = global.navigator,\n        plugins = browser && browser.plugins;\n    return [+new Date, global, plugins, global.screen, tostring(pool)];\n  }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n  return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool.  Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n  module.exports = seedrandom;\n  // When in node.js, try using crypto package for autoseeding.\n  try {\n    nodecrypto = require('crypto');\n  } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n  define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n  [],     // pool: entropy pool starts empty\n  Math    // math: package containing random, pow, and seedrandom\n);\n\n},{\"crypto\":240}],291:[function(require,module,exports){\n\n/**\n * Module dependencies.\n */\n\nvar url = require('./url');\nvar parser = require('socket.io-parser');\nvar Manager = require('./manager');\nvar debug = require('debug')('socket.io-client');\n\n/**\n * Module exports.\n */\n\nmodule.exports = exports = lookup;\n\n/**\n * Managers cache.\n */\n\nvar cache = exports.managers = {};\n\n/**\n * Looks up an existing `Manager` for multiplexing.\n * If the user summons:\n *\n *   `io('http://localhost/a');`\n *   `io('http://localhost/b');`\n *\n * We reuse the existing instance based on same scheme/port/host,\n * and we initialize sockets for each namespace.\n *\n * @api public\n */\n\nfunction lookup (uri, opts) {\n  if (typeof uri === 'object') {\n    opts = uri;\n    uri = undefined;\n  }\n\n  opts = opts || {};\n\n  var parsed = url(uri);\n  var source = parsed.source;\n  var id = parsed.id;\n  var path = parsed.path;\n  var sameNamespace = cache[id] && path in cache[id].nsps;\n  var newConnection = opts.forceNew || opts['force new connection'] ||\n                      false === opts.multiplex || sameNamespace;\n\n  var io;\n\n  if (newConnection) {\n    debug('ignoring socket cache for %s', source);\n    io = Manager(source, opts);\n  } else {\n    if (!cache[id]) {\n      debug('new io instance for %s', source);\n      cache[id] = Manager(source, opts);\n    }\n    io = cache[id];\n  }\n  if (parsed.query && !opts.query) {\n    opts.query = parsed.query;\n  }\n  return io.socket(parsed.path, opts);\n}\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nexports.protocol = parser.protocol;\n\n/**\n * `connect`.\n *\n * @param {String} uri\n * @api public\n */\n\nexports.connect = lookup;\n\n/**\n * Expose constructors for standalone build.\n *\n * @api public\n */\n\nexports.Manager = require('./manager');\nexports.Socket = require('./socket');\n\n},{\"./manager\":292,\"./socket\":294,\"./url\":295,\"debug\":245,\"socket.io-parser\":297}],292:[function(require,module,exports){\n\n/**\n * Module dependencies.\n */\n\nvar eio = require('engine.io-client');\nvar Socket = require('./socket');\nvar Emitter = require('component-emitter');\nvar parser = require('socket.io-parser');\nvar on = require('./on');\nvar bind = require('component-bind');\nvar debug = require('debug')('socket.io-client:manager');\nvar indexOf = require('indexof');\nvar Backoff = require('backo2');\n\n/**\n * IE6+ hasOwnProperty\n */\n\nvar has = Object.prototype.hasOwnProperty;\n\n/**\n * Module exports\n */\n\nmodule.exports = Manager;\n\n/**\n * `Manager` constructor.\n *\n * @param {String} engine instance or engine uri/opts\n * @param {Object} options\n * @api public\n */\n\nfunction Manager (uri, opts) {\n  if (!(this instanceof Manager)) return new Manager(uri, opts);\n  if (uri && ('object' === typeof uri)) {\n    opts = uri;\n    uri = undefined;\n  }\n  opts = opts || {};\n\n  opts.path = opts.path || '/socket.io';\n  this.nsps = {};\n  this.subs = [];\n  this.opts = opts;\n  this.reconnection(opts.reconnection !== false);\n  this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n  this.reconnectionDelay(opts.reconnectionDelay || 1000);\n  this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n  this.randomizationFactor(opts.randomizationFactor || 0.5);\n  this.backoff = new Backoff({\n    min: this.reconnectionDelay(),\n    max: this.reconnectionDelayMax(),\n    jitter: this.randomizationFactor()\n  });\n  this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n  this.readyState = 'closed';\n  this.uri = uri;\n  this.connecting = [];\n  this.lastPing = null;\n  this.encoding = false;\n  this.packetBuffer = [];\n  var _parser = opts.parser || parser;\n  this.encoder = new _parser.Encoder();\n  this.decoder = new _parser.Decoder();\n  this.autoConnect = opts.autoConnect !== false;\n  if (this.autoConnect) this.open();\n}\n\n/**\n * Propagate given event to sockets and emit on `this`\n *\n * @api private\n */\n\nManager.prototype.emitAll = function () {\n  this.emit.apply(this, arguments);\n  for (var nsp in this.nsps) {\n    if (has.call(this.nsps, nsp)) {\n      this.nsps[nsp].emit.apply(this.nsps[nsp], arguments);\n    }\n  }\n};\n\n/**\n * Update `socket.id` of all sockets\n *\n * @api private\n */\n\nManager.prototype.updateSocketIds = function () {\n  for (var nsp in this.nsps) {\n    if (has.call(this.nsps, nsp)) {\n      this.nsps[nsp].id = this.generateId(nsp);\n    }\n  }\n};\n\n/**\n * generate `socket.id` for the given `nsp`\n *\n * @param {String} nsp\n * @return {String}\n * @api private\n */\n\nManager.prototype.generateId = function (nsp) {\n  return (nsp === '/' ? '' : (nsp + '#')) + this.engine.id;\n};\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Manager.prototype);\n\n/**\n * Sets the `reconnection` config.\n *\n * @param {Boolean} true/false if it should automatically reconnect\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnection = function (v) {\n  if (!arguments.length) return this._reconnection;\n  this._reconnection = !!v;\n  return this;\n};\n\n/**\n * Sets the reconnection attempts config.\n *\n * @param {Number} max reconnection attempts before giving up\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionAttempts = function (v) {\n  if (!arguments.length) return this._reconnectionAttempts;\n  this._reconnectionAttempts = v;\n  return this;\n};\n\n/**\n * Sets the delay between reconnections.\n *\n * @param {Number} delay\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionDelay = function (v) {\n  if (!arguments.length) return this._reconnectionDelay;\n  this._reconnectionDelay = v;\n  this.backoff && this.backoff.setMin(v);\n  return this;\n};\n\nManager.prototype.randomizationFactor = function (v) {\n  if (!arguments.length) return this._randomizationFactor;\n  this._randomizationFactor = v;\n  this.backoff && this.backoff.setJitter(v);\n  return this;\n};\n\n/**\n * Sets the maximum delay between reconnections.\n *\n * @param {Number} delay\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionDelayMax = function (v) {\n  if (!arguments.length) return this._reconnectionDelayMax;\n  this._reconnectionDelayMax = v;\n  this.backoff && this.backoff.setMax(v);\n  return this;\n};\n\n/**\n * Sets the connection timeout. `false` to disable\n *\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.timeout = function (v) {\n  if (!arguments.length) return this._timeout;\n  this._timeout = v;\n  return this;\n};\n\n/**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @api private\n */\n\nManager.prototype.maybeReconnectOnOpen = function () {\n  // Only try to reconnect if it's the first time we're connecting\n  if (!this.reconnecting && this._reconnection && this.backoff.attempts === 0) {\n    // keeps reconnection from firing twice for the same reconnection loop\n    this.reconnect();\n  }\n};\n\n/**\n * Sets the current transport `socket`.\n *\n * @param {Function} optional, callback\n * @return {Manager} self\n * @api public\n */\n\nManager.prototype.open =\nManager.prototype.connect = function (fn, opts) {\n  debug('readyState %s', this.readyState);\n  if (~this.readyState.indexOf('open')) return this;\n\n  debug('opening %s', this.uri);\n  this.engine = eio(this.uri, this.opts);\n  var socket = this.engine;\n  var self = this;\n  this.readyState = 'opening';\n  this.skipReconnect = false;\n\n  // emit `open`\n  var openSub = on(socket, 'open', function () {\n    self.onopen();\n    fn && fn();\n  });\n\n  // emit `connect_error`\n  var errorSub = on(socket, 'error', function (data) {\n    debug('connect_error');\n    self.cleanup();\n    self.readyState = 'closed';\n    self.emitAll('connect_error', data);\n    if (fn) {\n      var err = new Error('Connection error');\n      err.data = data;\n      fn(err);\n    } else {\n      // Only do this if there is no fn to handle the error\n      self.maybeReconnectOnOpen();\n    }\n  });\n\n  // emit `connect_timeout`\n  if (false !== this._timeout) {\n    var timeout = this._timeout;\n    debug('connect attempt will timeout after %d', timeout);\n\n    // set timer\n    var timer = setTimeout(function () {\n      debug('connect attempt timed out after %d', timeout);\n      openSub.destroy();\n      socket.close();\n      socket.emit('error', 'timeout');\n      self.emitAll('connect_timeout', timeout);\n    }, timeout);\n\n    this.subs.push({\n      destroy: function () {\n        clearTimeout(timer);\n      }\n    });\n  }\n\n  this.subs.push(openSub);\n  this.subs.push(errorSub);\n\n  return this;\n};\n\n/**\n * Called upon transport open.\n *\n * @api private\n */\n\nManager.prototype.onopen = function () {\n  debug('open');\n\n  // clear old subs\n  this.cleanup();\n\n  // mark as open\n  this.readyState = 'open';\n  this.emit('open');\n\n  // add new subs\n  var socket = this.engine;\n  this.subs.push(on(socket, 'data', bind(this, 'ondata')));\n  this.subs.push(on(socket, 'ping', bind(this, 'onping')));\n  this.subs.push(on(socket, 'pong', bind(this, 'onpong')));\n  this.subs.push(on(socket, 'error', bind(this, 'onerror')));\n  this.subs.push(on(socket, 'close', bind(this, 'onclose')));\n  this.subs.push(on(this.decoder, 'decoded', bind(this, 'ondecoded')));\n};\n\n/**\n * Called upon a ping.\n *\n * @api private\n */\n\nManager.prototype.onping = function () {\n  this.lastPing = new Date();\n  this.emitAll('ping');\n};\n\n/**\n * Called upon a packet.\n *\n * @api private\n */\n\nManager.prototype.onpong = function () {\n  this.emitAll('pong', new Date() - this.lastPing);\n};\n\n/**\n * Called with data.\n *\n * @api private\n */\n\nManager.prototype.ondata = function (data) {\n  this.decoder.add(data);\n};\n\n/**\n * Called when parser fully decodes a packet.\n *\n * @api private\n */\n\nManager.prototype.ondecoded = function (packet) {\n  this.emit('packet', packet);\n};\n\n/**\n * Called upon socket error.\n *\n * @api private\n */\n\nManager.prototype.onerror = function (err) {\n  debug('error', err);\n  this.emitAll('error', err);\n};\n\n/**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @api public\n */\n\nManager.prototype.socket = function (nsp, opts) {\n  var socket = this.nsps[nsp];\n  if (!socket) {\n    socket = new Socket(this, nsp, opts);\n    this.nsps[nsp] = socket;\n    var self = this;\n    socket.on('connecting', onConnecting);\n    socket.on('connect', function () {\n      socket.id = self.generateId(nsp);\n    });\n\n    if (this.autoConnect) {\n      // manually call here since connecting event is fired before listening\n      onConnecting();\n    }\n  }\n\n  function onConnecting () {\n    if (!~indexOf(self.connecting, socket)) {\n      self.connecting.push(socket);\n    }\n  }\n\n  return socket;\n};\n\n/**\n * Called upon a socket close.\n *\n * @param {Socket} socket\n */\n\nManager.prototype.destroy = function (socket) {\n  var index = indexOf(this.connecting, socket);\n  if (~index) this.connecting.splice(index, 1);\n  if (this.connecting.length) return;\n\n  this.close();\n};\n\n/**\n * Writes a packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nManager.prototype.packet = function (packet) {\n  debug('writing packet %j', packet);\n  var self = this;\n  if (packet.query && packet.type === 0) packet.nsp += '?' + packet.query;\n\n  if (!self.encoding) {\n    // encode, then write to engine with result\n    self.encoding = true;\n    this.encoder.encode(packet, function (encodedPackets) {\n      for (var i = 0; i < encodedPackets.length; i++) {\n        self.engine.write(encodedPackets[i], packet.options);\n      }\n      self.encoding = false;\n      self.processPacketQueue();\n    });\n  } else { // add packet to the queue\n    self.packetBuffer.push(packet);\n  }\n};\n\n/**\n * If packet buffer is non-empty, begins encoding the\n * next packet in line.\n *\n * @api private\n */\n\nManager.prototype.processPacketQueue = function () {\n  if (this.packetBuffer.length > 0 && !this.encoding) {\n    var pack = this.packetBuffer.shift();\n    this.packet(pack);\n  }\n};\n\n/**\n * Clean up transport subscriptions and packet buffer.\n *\n * @api private\n */\n\nManager.prototype.cleanup = function () {\n  debug('cleanup');\n\n  var subsLength = this.subs.length;\n  for (var i = 0; i < subsLength; i++) {\n    var sub = this.subs.shift();\n    sub.destroy();\n  }\n\n  this.packetBuffer = [];\n  this.encoding = false;\n  this.lastPing = null;\n\n  this.decoder.destroy();\n};\n\n/**\n * Close the current socket.\n *\n * @api private\n */\n\nManager.prototype.close =\nManager.prototype.disconnect = function () {\n  debug('disconnect');\n  this.skipReconnect = true;\n  this.reconnecting = false;\n  if ('opening' === this.readyState) {\n    // `onclose` will not fire because\n    // an open event never happened\n    this.cleanup();\n  }\n  this.backoff.reset();\n  this.readyState = 'closed';\n  if (this.engine) this.engine.close();\n};\n\n/**\n * Called upon engine close.\n *\n * @api private\n */\n\nManager.prototype.onclose = function (reason) {\n  debug('onclose');\n\n  this.cleanup();\n  this.backoff.reset();\n  this.readyState = 'closed';\n  this.emit('close', reason);\n\n  if (this._reconnection && !this.skipReconnect) {\n    this.reconnect();\n  }\n};\n\n/**\n * Attempt a reconnection.\n *\n * @api private\n */\n\nManager.prototype.reconnect = function () {\n  if (this.reconnecting || this.skipReconnect) return this;\n\n  var self = this;\n\n  if (this.backoff.attempts >= this._reconnectionAttempts) {\n    debug('reconnect failed');\n    this.backoff.reset();\n    this.emitAll('reconnect_failed');\n    this.reconnecting = false;\n  } else {\n    var delay = this.backoff.duration();\n    debug('will wait %dms before reconnect attempt', delay);\n\n    this.reconnecting = true;\n    var timer = setTimeout(function () {\n      if (self.skipReconnect) return;\n\n      debug('attempting reconnect');\n      self.emitAll('reconnect_attempt', self.backoff.attempts);\n      self.emitAll('reconnecting', self.backoff.attempts);\n\n      // check again for the case socket closed in above events\n      if (self.skipReconnect) return;\n\n      self.open(function (err) {\n        if (err) {\n          debug('reconnect attempt error');\n          self.reconnecting = false;\n          self.reconnect();\n          self.emitAll('reconnect_error', err.data);\n        } else {\n          debug('reconnect success');\n          self.onreconnect();\n        }\n      });\n    }, delay);\n\n    this.subs.push({\n      destroy: function () {\n        clearTimeout(timer);\n      }\n    });\n  }\n};\n\n/**\n * Called upon successful reconnect.\n *\n * @api private\n */\n\nManager.prototype.onreconnect = function () {\n  var attempt = this.backoff.attempts;\n  this.reconnecting = false;\n  this.backoff.reset();\n  this.updateSocketIds();\n  this.emitAll('reconnect', attempt);\n};\n\n},{\"./on\":293,\"./socket\":294,\"backo2\":236,\"component-bind\":242,\"component-emitter\":243,\"debug\":245,\"engine.io-client\":247,\"indexof\":262,\"socket.io-parser\":297}],293:[function(require,module,exports){\n\n/**\n * Module exports.\n */\n\nmodule.exports = on;\n\n/**\n * Helper for subscriptions.\n *\n * @param {Object|EventEmitter} obj with `Emitter` mixin or `EventEmitter`\n * @param {String} event name\n * @param {Function} callback\n * @api public\n */\n\nfunction on (obj, ev, fn) {\n  obj.on(ev, fn);\n  return {\n    destroy: function () {\n      obj.removeListener(ev, fn);\n    }\n  };\n}\n\n},{}],294:[function(require,module,exports){\n\n/**\n * Module dependencies.\n */\n\nvar parser = require('socket.io-parser');\nvar Emitter = require('component-emitter');\nvar toArray = require('to-array');\nvar on = require('./on');\nvar bind = require('component-bind');\nvar debug = require('debug')('socket.io-client:socket');\nvar parseqs = require('parseqs');\nvar hasBin = require('has-binary2');\n\n/**\n * Module exports.\n */\n\nmodule.exports = exports = Socket;\n\n/**\n * Internal events (blacklisted).\n * These events can't be emitted by the user.\n *\n * @api private\n */\n\nvar events = {\n  connect: 1,\n  connect_error: 1,\n  connect_timeout: 1,\n  connecting: 1,\n  disconnect: 1,\n  error: 1,\n  reconnect: 1,\n  reconnect_attempt: 1,\n  reconnect_failed: 1,\n  reconnect_error: 1,\n  reconnecting: 1,\n  ping: 1,\n  pong: 1\n};\n\n/**\n * Shortcut to `Emitter#emit`.\n */\n\nvar emit = Emitter.prototype.emit;\n\n/**\n * `Socket` constructor.\n *\n * @api public\n */\n\nfunction Socket (io, nsp, opts) {\n  this.io = io;\n  this.nsp = nsp;\n  this.json = this; // compat\n  this.ids = 0;\n  this.acks = {};\n  this.receiveBuffer = [];\n  this.sendBuffer = [];\n  this.connected = false;\n  this.disconnected = true;\n  this.flags = {};\n  if (opts && opts.query) {\n    this.query = opts.query;\n  }\n  if (this.io.autoConnect) this.open();\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Socket.prototype);\n\n/**\n * Subscribe to open, close and packet events\n *\n * @api private\n */\n\nSocket.prototype.subEvents = function () {\n  if (this.subs) return;\n\n  var io = this.io;\n  this.subs = [\n    on(io, 'open', bind(this, 'onopen')),\n    on(io, 'packet', bind(this, 'onpacket')),\n    on(io, 'close', bind(this, 'onclose'))\n  ];\n};\n\n/**\n * \"Opens\" the socket.\n *\n * @api public\n */\n\nSocket.prototype.open =\nSocket.prototype.connect = function () {\n  if (this.connected) return this;\n\n  this.subEvents();\n  this.io.open(); // ensure open\n  if ('open' === this.io.readyState) this.onopen();\n  this.emit('connecting');\n  return this;\n};\n\n/**\n * Sends a `message` event.\n *\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.send = function () {\n  var args = toArray(arguments);\n  args.unshift('message');\n  this.emit.apply(this, args);\n  return this;\n};\n\n/**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @param {String} event name\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.emit = function (ev) {\n  if (events.hasOwnProperty(ev)) {\n    emit.apply(this, arguments);\n    return this;\n  }\n\n  var args = toArray(arguments);\n  var packet = {\n    type: (this.flags.binary !== undefined ? this.flags.binary : hasBin(args)) ? parser.BINARY_EVENT : parser.EVENT,\n    data: args\n  };\n\n  packet.options = {};\n  packet.options.compress = !this.flags || false !== this.flags.compress;\n\n  // event ack callback\n  if ('function' === typeof args[args.length - 1]) {\n    debug('emitting packet with ack id %d', this.ids);\n    this.acks[this.ids] = args.pop();\n    packet.id = this.ids++;\n  }\n\n  if (this.connected) {\n    this.packet(packet);\n  } else {\n    this.sendBuffer.push(packet);\n  }\n\n  this.flags = {};\n\n  return this;\n};\n\n/**\n * Sends a packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.packet = function (packet) {\n  packet.nsp = this.nsp;\n  this.io.packet(packet);\n};\n\n/**\n * Called upon engine `open`.\n *\n * @api private\n */\n\nSocket.prototype.onopen = function () {\n  debug('transport is open - connecting');\n\n  // write connect packet if necessary\n  if ('/' !== this.nsp) {\n    if (this.query) {\n      var query = typeof this.query === 'object' ? parseqs.encode(this.query) : this.query;\n      debug('sending connect packet with query %s', query);\n      this.packet({type: parser.CONNECT, query: query});\n    } else {\n      this.packet({type: parser.CONNECT});\n    }\n  }\n};\n\n/**\n * Called upon engine `close`.\n *\n * @param {String} reason\n * @api private\n */\n\nSocket.prototype.onclose = function (reason) {\n  debug('close (%s)', reason);\n  this.connected = false;\n  this.disconnected = true;\n  delete this.id;\n  this.emit('disconnect', reason);\n};\n\n/**\n * Called with socket packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onpacket = function (packet) {\n  var sameNamespace = packet.nsp === this.nsp;\n  var rootNamespaceError = packet.type === parser.ERROR && packet.nsp === '/';\n\n  if (!sameNamespace && !rootNamespaceError) return;\n\n  switch (packet.type) {\n    case parser.CONNECT:\n      this.onconnect();\n      break;\n\n    case parser.EVENT:\n      this.onevent(packet);\n      break;\n\n    case parser.BINARY_EVENT:\n      this.onevent(packet);\n      break;\n\n    case parser.ACK:\n      this.onack(packet);\n      break;\n\n    case parser.BINARY_ACK:\n      this.onack(packet);\n      break;\n\n    case parser.DISCONNECT:\n      this.ondisconnect();\n      break;\n\n    case parser.ERROR:\n      this.emit('error', packet.data);\n      break;\n  }\n};\n\n/**\n * Called upon a server event.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onevent = function (packet) {\n  var args = packet.data || [];\n  debug('emitting event %j', args);\n\n  if (null != packet.id) {\n    debug('attaching ack callback to event');\n    args.push(this.ack(packet.id));\n  }\n\n  if (this.connected) {\n    emit.apply(this, args);\n  } else {\n    this.receiveBuffer.push(args);\n  }\n};\n\n/**\n * Produces an ack callback to emit with an event.\n *\n * @api private\n */\n\nSocket.prototype.ack = function (id) {\n  var self = this;\n  var sent = false;\n  return function () {\n    // prevent double callbacks\n    if (sent) return;\n    sent = true;\n    var args = toArray(arguments);\n    debug('sending ack %j', args);\n\n    self.packet({\n      type: hasBin(args) ? parser.BINARY_ACK : parser.ACK,\n      id: id,\n      data: args\n    });\n  };\n};\n\n/**\n * Called upon a server acknowlegement.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onack = function (packet) {\n  var ack = this.acks[packet.id];\n  if ('function' === typeof ack) {\n    debug('calling ack %s with %j', packet.id, packet.data);\n    ack.apply(this, packet.data);\n    delete this.acks[packet.id];\n  } else {\n    debug('bad ack %s', packet.id);\n  }\n};\n\n/**\n * Called upon server connect.\n *\n * @api private\n */\n\nSocket.prototype.onconnect = function () {\n  this.connected = true;\n  this.disconnected = false;\n  this.emit('connect');\n  this.emitBuffered();\n};\n\n/**\n * Emit buffered events (received and emitted).\n *\n * @api private\n */\n\nSocket.prototype.emitBuffered = function () {\n  var i;\n  for (i = 0; i < this.receiveBuffer.length; i++) {\n    emit.apply(this, this.receiveBuffer[i]);\n  }\n  this.receiveBuffer = [];\n\n  for (i = 0; i < this.sendBuffer.length; i++) {\n    this.packet(this.sendBuffer[i]);\n  }\n  this.sendBuffer = [];\n};\n\n/**\n * Called upon server disconnect.\n *\n * @api private\n */\n\nSocket.prototype.ondisconnect = function () {\n  debug('server disconnect (%s)', this.nsp);\n  this.destroy();\n  this.onclose('io server disconnect');\n};\n\n/**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @api private.\n */\n\nSocket.prototype.destroy = function () {\n  if (this.subs) {\n    // clean subscriptions to avoid reconnections\n    for (var i = 0; i < this.subs.length; i++) {\n      this.subs[i].destroy();\n    }\n    this.subs = null;\n  }\n\n  this.io.destroy(this);\n};\n\n/**\n * Disconnects the socket manually.\n *\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.close =\nSocket.prototype.disconnect = function () {\n  if (this.connected) {\n    debug('performing disconnect (%s)', this.nsp);\n    this.packet({ type: parser.DISCONNECT });\n  }\n\n  // remove socket from pool\n  this.destroy();\n\n  if (this.connected) {\n    // fire events\n    this.onclose('io client disconnect');\n  }\n  return this;\n};\n\n/**\n * Sets the compress flag.\n *\n * @param {Boolean} if `true`, compresses the sending data\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.compress = function (compress) {\n  this.flags.compress = compress;\n  return this;\n};\n\n/**\n * Sets the binary flag\n *\n * @param {Boolean} whether the emitted data contains binary\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.binary = function (binary) {\n  this.flags.binary = binary;\n  return this;\n};\n\n},{\"./on\":293,\"component-bind\":242,\"component-emitter\":243,\"debug\":245,\"has-binary2\":259,\"parseqs\":265,\"socket.io-parser\":297,\"to-array\":300}],295:[function(require,module,exports){\n(function (global){\n\n/**\n * Module dependencies.\n */\n\nvar parseuri = require('parseuri');\nvar debug = require('debug')('socket.io-client:url');\n\n/**\n * Module exports.\n */\n\nmodule.exports = url;\n\n/**\n * URL parser.\n *\n * @param {String} url\n * @param {Object} An object meant to mimic window.location.\n *                 Defaults to window.location.\n * @api public\n */\n\nfunction url (uri, loc) {\n  var obj = uri;\n\n  // default to window.location\n  loc = loc || global.location;\n  if (null == uri) uri = loc.protocol + '//' + loc.host;\n\n  // relative path support\n  if ('string' === typeof uri) {\n    if ('/' === uri.charAt(0)) {\n      if ('/' === uri.charAt(1)) {\n        uri = loc.protocol + uri;\n      } else {\n        uri = loc.host + uri;\n      }\n    }\n\n    if (!/^(https?|wss?):\\/\\//.test(uri)) {\n      debug('protocol-less url %s', uri);\n      if ('undefined' !== typeof loc) {\n        uri = loc.protocol + '//' + uri;\n      } else {\n        uri = 'https://' + uri;\n      }\n    }\n\n    // parse\n    debug('parse %s', uri);\n    obj = parseuri(uri);\n  }\n\n  // make sure we treat `localhost:80` and `localhost` equally\n  if (!obj.port) {\n    if (/^(http|ws)$/.test(obj.protocol)) {\n      obj.port = '80';\n    } else if (/^(http|ws)s$/.test(obj.protocol)) {\n      obj.port = '443';\n    }\n  }\n\n  obj.path = obj.path || '/';\n\n  var ipv6 = obj.host.indexOf(':') !== -1;\n  var host = ipv6 ? '[' + obj.host + ']' : obj.host;\n\n  // define unique id\n  obj.id = obj.protocol + '://' + host + ':' + obj.port;\n  // define href\n  obj.href = obj.protocol + '://' + host + (loc && loc.port === obj.port ? '' : (':' + obj.port));\n\n  return obj;\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"debug\":245,\"parseuri\":266}],296:[function(require,module,exports){\n(function (global){\n/*global Blob,File*/\n\n/**\n * Module requirements\n */\n\nvar isArray = require('isarray');\nvar isBuf = require('./is-buffer');\nvar toString = Object.prototype.toString;\nvar withNativeBlob = typeof global.Blob === 'function' || toString.call(global.Blob) === '[object BlobConstructor]';\nvar withNativeFile = typeof global.File === 'function' || toString.call(global.File) === '[object FileConstructor]';\n\n/**\n * Replaces every Buffer | ArrayBuffer in packet with a numbered placeholder.\n * Anything with blobs or files should be fed through removeBlobs before coming\n * here.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @api public\n */\n\nexports.deconstructPacket = function(packet) {\n  var buffers = [];\n  var packetData = packet.data;\n  var pack = packet;\n  pack.data = _deconstructPacket(packetData, buffers);\n  pack.attachments = buffers.length; // number of binary 'attachments'\n  return {packet: pack, buffers: buffers};\n};\n\nfunction _deconstructPacket(data, buffers) {\n  if (!data) return data;\n\n  if (isBuf(data)) {\n    var placeholder = { _placeholder: true, num: buffers.length };\n    buffers.push(data);\n    return placeholder;\n  } else if (isArray(data)) {\n    var newData = new Array(data.length);\n    for (var i = 0; i < data.length; i++) {\n      newData[i] = _deconstructPacket(data[i], buffers);\n    }\n    return newData;\n  } else if (typeof data === 'object' && !(data instanceof Date)) {\n    var newData = {};\n    for (var key in data) {\n      newData[key] = _deconstructPacket(data[key], buffers);\n    }\n    return newData;\n  }\n  return data;\n}\n\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @api public\n */\n\nexports.reconstructPacket = function(packet, buffers) {\n  packet.data = _reconstructPacket(packet.data, buffers);\n  packet.attachments = undefined; // no longer useful\n  return packet;\n};\n\nfunction _reconstructPacket(data, buffers) {\n  if (!data) return data;\n\n  if (data && data._placeholder) {\n    return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n  } else if (isArray(data)) {\n    for (var i = 0; i < data.length; i++) {\n      data[i] = _reconstructPacket(data[i], buffers);\n    }\n  } else if (typeof data === 'object') {\n    for (var key in data) {\n      data[key] = _reconstructPacket(data[key], buffers);\n    }\n  }\n\n  return data;\n}\n\n/**\n * Asynchronously removes Blobs or Files from data via\n * FileReader's readAsArrayBuffer method. Used before encoding\n * data as msgpack. Calls callback with the blobless data.\n *\n * @param {Object} data\n * @param {Function} callback\n * @api private\n */\n\nexports.removeBlobs = function(data, callback) {\n  function _removeBlobs(obj, curKey, containingObject) {\n    if (!obj) return obj;\n\n    // convert any blob\n    if ((withNativeBlob && obj instanceof Blob) ||\n        (withNativeFile && obj instanceof File)) {\n      pendingBlobs++;\n\n      // async filereader\n      var fileReader = new FileReader();\n      fileReader.onload = function() { // this.result == arraybuffer\n        if (containingObject) {\n          containingObject[curKey] = this.result;\n        }\n        else {\n          bloblessData = this.result;\n        }\n\n        // if nothing pending its callback time\n        if(! --pendingBlobs) {\n          callback(bloblessData);\n        }\n      };\n\n      fileReader.readAsArrayBuffer(obj); // blob -> arraybuffer\n    } else if (isArray(obj)) { // handle array\n      for (var i = 0; i < obj.length; i++) {\n        _removeBlobs(obj[i], i, obj);\n      }\n    } else if (typeof obj === 'object' && !isBuf(obj)) { // and object\n      for (var key in obj) {\n        _removeBlobs(obj[key], key, obj);\n      }\n    }\n  }\n\n  var pendingBlobs = 0;\n  var bloblessData = data;\n  _removeBlobs(bloblessData);\n  if (!pendingBlobs) {\n    callback(bloblessData);\n  }\n};\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"./is-buffer\":298,\"isarray\":263}],297:[function(require,module,exports){\n\n/**\n * Module dependencies.\n */\n\nvar debug = require('debug')('socket.io-parser');\nvar Emitter = require('component-emitter');\nvar binary = require('./binary');\nvar isArray = require('isarray');\nvar isBuf = require('./is-buffer');\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nexports.protocol = 4;\n\n/**\n * Packet types.\n *\n * @api public\n */\n\nexports.types = [\n  'CONNECT',\n  'DISCONNECT',\n  'EVENT',\n  'ACK',\n  'ERROR',\n  'BINARY_EVENT',\n  'BINARY_ACK'\n];\n\n/**\n * Packet type `connect`.\n *\n * @api public\n */\n\nexports.CONNECT = 0;\n\n/**\n * Packet type `disconnect`.\n *\n * @api public\n */\n\nexports.DISCONNECT = 1;\n\n/**\n * Packet type `event`.\n *\n * @api public\n */\n\nexports.EVENT = 2;\n\n/**\n * Packet type `ack`.\n *\n * @api public\n */\n\nexports.ACK = 3;\n\n/**\n * Packet type `error`.\n *\n * @api public\n */\n\nexports.ERROR = 4;\n\n/**\n * Packet type 'binary event'\n *\n * @api public\n */\n\nexports.BINARY_EVENT = 5;\n\n/**\n * Packet type `binary ack`. For acks with binary arguments.\n *\n * @api public\n */\n\nexports.BINARY_ACK = 6;\n\n/**\n * Encoder constructor.\n *\n * @api public\n */\n\nexports.Encoder = Encoder;\n\n/**\n * Decoder constructor.\n *\n * @api public\n */\n\nexports.Decoder = Decoder;\n\n/**\n * A socket.io Encoder instance\n *\n * @api public\n */\n\nfunction Encoder() {}\n\nvar ERROR_PACKET = exports.ERROR + '\"encode error\"';\n\n/**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n * @param {Function} callback - function to handle encodings (likely engine.write)\n * @return Calls callback with Array of encodings\n * @api public\n */\n\nEncoder.prototype.encode = function(obj, callback){\n  debug('encoding packet %j', obj);\n\n  if (exports.BINARY_EVENT === obj.type || exports.BINARY_ACK === obj.type) {\n    encodeAsBinary(obj, callback);\n  } else {\n    var encoding = encodeAsString(obj);\n    callback([encoding]);\n  }\n};\n\n/**\n * Encode packet as string.\n *\n * @param {Object} packet\n * @return {String} encoded\n * @api private\n */\n\nfunction encodeAsString(obj) {\n\n  // first is type\n  var str = '' + obj.type;\n\n  // attachments if we have them\n  if (exports.BINARY_EVENT === obj.type || exports.BINARY_ACK === obj.type) {\n    str += obj.attachments + '-';\n  }\n\n  // if we have a namespace other than `/`\n  // we append it followed by a comma `,`\n  if (obj.nsp && '/' !== obj.nsp) {\n    str += obj.nsp + ',';\n  }\n\n  // immediately followed by the id\n  if (null != obj.id) {\n    str += obj.id;\n  }\n\n  // json data\n  if (null != obj.data) {\n    var payload = tryStringify(obj.data);\n    if (payload !== false) {\n      str += payload;\n    } else {\n      return ERROR_PACKET;\n    }\n  }\n\n  debug('encoded %j as %s', obj, str);\n  return str;\n}\n\nfunction tryStringify(str) {\n  try {\n    return JSON.stringify(str);\n  } catch(e){\n    return false;\n  }\n}\n\n/**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n *\n * @param {Object} packet\n * @return {Buffer} encoded\n * @api private\n */\n\nfunction encodeAsBinary(obj, callback) {\n\n  function writeEncoding(bloblessData) {\n    var deconstruction = binary.deconstructPacket(bloblessData);\n    var pack = encodeAsString(deconstruction.packet);\n    var buffers = deconstruction.buffers;\n\n    buffers.unshift(pack); // add packet info to beginning of data list\n    callback(buffers); // write all the buffers\n  }\n\n  binary.removeBlobs(obj, writeEncoding);\n}\n\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n * @api public\n */\n\nfunction Decoder() {\n  this.reconstructor = null;\n}\n\n/**\n * Mix in `Emitter` with Decoder.\n */\n\nEmitter(Decoder.prototype);\n\n/**\n * Decodes an ecoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n * @return {Object} packet\n * @api public\n */\n\nDecoder.prototype.add = function(obj) {\n  var packet;\n  if (typeof obj === 'string') {\n    packet = decodeString(obj);\n    if (exports.BINARY_EVENT === packet.type || exports.BINARY_ACK === packet.type) { // binary packet's json\n      this.reconstructor = new BinaryReconstructor(packet);\n\n      // no attachments, labeled binary but no binary data to follow\n      if (this.reconstructor.reconPack.attachments === 0) {\n        this.emit('decoded', packet);\n      }\n    } else { // non-binary full packet\n      this.emit('decoded', packet);\n    }\n  }\n  else if (isBuf(obj) || obj.base64) { // raw binary data\n    if (!this.reconstructor) {\n      throw new Error('got binary data when not reconstructing a packet');\n    } else {\n      packet = this.reconstructor.takeBinaryData(obj);\n      if (packet) { // received final buffer\n        this.reconstructor = null;\n        this.emit('decoded', packet);\n      }\n    }\n  }\n  else {\n    throw new Error('Unknown type: ' + obj);\n  }\n};\n\n/**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n * @api private\n */\n\nfunction decodeString(str) {\n  var i = 0;\n  // look up type\n  var p = {\n    type: Number(str.charAt(0))\n  };\n\n  if (null == exports.types[p.type]) {\n    return error('unknown packet type ' + p.type);\n  }\n\n  // look up attachments if type binary\n  if (exports.BINARY_EVENT === p.type || exports.BINARY_ACK === p.type) {\n    var buf = '';\n    while (str.charAt(++i) !== '-') {\n      buf += str.charAt(i);\n      if (i == str.length) break;\n    }\n    if (buf != Number(buf) || str.charAt(i) !== '-') {\n      throw new Error('Illegal attachments');\n    }\n    p.attachments = Number(buf);\n  }\n\n  // look up namespace (if any)\n  if ('/' === str.charAt(i + 1)) {\n    p.nsp = '';\n    while (++i) {\n      var c = str.charAt(i);\n      if (',' === c) break;\n      p.nsp += c;\n      if (i === str.length) break;\n    }\n  } else {\n    p.nsp = '/';\n  }\n\n  // look up id\n  var next = str.charAt(i + 1);\n  if ('' !== next && Number(next) == next) {\n    p.id = '';\n    while (++i) {\n      var c = str.charAt(i);\n      if (null == c || Number(c) != c) {\n        --i;\n        break;\n      }\n      p.id += str.charAt(i);\n      if (i === str.length) break;\n    }\n    p.id = Number(p.id);\n  }\n\n  // look up json data\n  if (str.charAt(++i)) {\n    var payload = tryParse(str.substr(i));\n    var isPayloadValid = payload !== false && (p.type === exports.ERROR || isArray(payload));\n    if (isPayloadValid) {\n      p.data = payload;\n    } else {\n      return error('invalid payload');\n    }\n  }\n\n  debug('decoded %s as %j', str, p);\n  return p;\n}\n\nfunction tryParse(str) {\n  try {\n    return JSON.parse(str);\n  } catch(e){\n    return false;\n  }\n}\n\n/**\n * Deallocates a parser's resources\n *\n * @api public\n */\n\nDecoder.prototype.destroy = function() {\n  if (this.reconstructor) {\n    this.reconstructor.finishedReconstruction();\n  }\n};\n\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n * @api private\n */\n\nfunction BinaryReconstructor(packet) {\n  this.reconPack = packet;\n  this.buffers = [];\n}\n\n/**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n *   a reconstructed packet object if all buffers have been received.\n * @api private\n */\n\nBinaryReconstructor.prototype.takeBinaryData = function(binData) {\n  this.buffers.push(binData);\n  if (this.buffers.length === this.reconPack.attachments) { // done with buffer list\n    var packet = binary.reconstructPacket(this.reconPack, this.buffers);\n    this.finishedReconstruction();\n    return packet;\n  }\n  return null;\n};\n\n/**\n * Cleans up binary packet reconstruction variables.\n *\n * @api private\n */\n\nBinaryReconstructor.prototype.finishedReconstruction = function() {\n  this.reconPack = null;\n  this.buffers = [];\n};\n\nfunction error(msg) {\n  return {\n    type: exports.ERROR,\n    data: 'parser error: ' + msg\n  };\n}\n\n},{\"./binary\":296,\"./is-buffer\":298,\"component-emitter\":243,\"debug\":245,\"isarray\":263}],298:[function(require,module,exports){\n(function (global){\n\nmodule.exports = isBuf;\n\nvar withNativeBuffer = typeof global.Buffer === 'function' && typeof global.Buffer.isBuffer === 'function';\nvar withNativeArrayBuffer = typeof global.ArrayBuffer === 'function';\n\nvar isView = (function () {\n  if (withNativeArrayBuffer && typeof global.ArrayBuffer.isView === 'function') {\n    return global.ArrayBuffer.isView;\n  } else {\n    return function (obj) { return obj.buffer instanceof global.ArrayBuffer; };\n  }\n})();\n\n/**\n * Returns true if obj is a buffer or an arraybuffer.\n *\n * @api private\n */\n\nfunction isBuf(obj) {\n  return (withNativeBuffer && global.Buffer.isBuffer(obj)) ||\n          (withNativeArrayBuffer && (obj instanceof global.ArrayBuffer || isView(obj)));\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],299:[function(require,module,exports){\n(function (setImmediate,clearImmediate){\nvar nextTick = require('process/browser.js').nextTick;\nvar apply = Function.prototype.apply;\nvar slice = Array.prototype.slice;\nvar immediateIds = {};\nvar nextImmediateId = 0;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n  return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n  return new Timeout(apply.call(setInterval, window, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) { timeout.close(); };\n\nfunction Timeout(id, clearFn) {\n  this._id = id;\n  this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n  this._clearFn.call(window, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n  clearTimeout(item._idleTimeoutId);\n  item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n  clearTimeout(item._idleTimeoutId);\n  item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n  clearTimeout(item._idleTimeoutId);\n\n  var msecs = item._idleTimeout;\n  if (msecs >= 0) {\n    item._idleTimeoutId = setTimeout(function onTimeout() {\n      if (item._onTimeout)\n        item._onTimeout();\n    }, msecs);\n  }\n};\n\n// That's not how node.js implements it but the exposed api is the same.\nexports.setImmediate = typeof setImmediate === \"function\" ? setImmediate : function(fn) {\n  var id = nextImmediateId++;\n  var args = arguments.length < 2 ? false : slice.call(arguments, 1);\n\n  immediateIds[id] = true;\n\n  nextTick(function onNextTick() {\n    if (immediateIds[id]) {\n      // fn.call() is faster so we optimize for the common use-case\n      // @see http://jsperf.com/call-apply-segu\n      if (args) {\n        fn.apply(null, args);\n      } else {\n        fn.call(null);\n      }\n      // Prevent ids from leaking\n      exports.clearImmediate(id);\n    }\n  });\n\n  return id;\n};\n\nexports.clearImmediate = typeof clearImmediate === \"function\" ? clearImmediate : function(id) {\n  delete immediateIds[id];\n};\n}).call(this,require(\"timers\").setImmediate,require(\"timers\").clearImmediate)\n},{\"process/browser.js\":267,\"timers\":299}],300:[function(require,module,exports){\nmodule.exports = toArray\n\nfunction toArray(list, index) {\n    var array = []\n\n    index = index || 0\n\n    for (var i = index || 0; i < list.length; i++) {\n        array[i - index] = list[i]\n    }\n\n    return array\n}\n\n},{}],301:[function(require,module,exports){\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n  this.protocol = null;\n  this.slashes = null;\n  this.auth = null;\n  this.host = null;\n  this.port = null;\n  this.hostname = null;\n  this.hash = null;\n  this.search = null;\n  this.query = null;\n  this.pathname = null;\n  this.path = null;\n  this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n    portPattern = /:[0-9]*$/,\n\n    // Special case for a simple path URL\n    simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n    // RFC 2396: characters reserved for delimiting URLs.\n    // We actually just auto-escape these.\n    delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n    // RFC 2396: characters not allowed for various reasons.\n    unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n    // Allowed by RFCs, but cause of XSS attacks.  Always escape these.\n    autoEscape = ['\\''].concat(unwise),\n    // Characters that are never ever allowed in a hostname.\n    // Note that any invalid chars are also handled, but these\n    // are the ones that are *expected* to be seen, so we fast-path\n    // them.\n    nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n    hostEndingChars = ['/', '?', '#'],\n    hostnameMaxLen = 255,\n    hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n    hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n    // protocols that can allow \"unsafe\" and \"unwise\" chars.\n    unsafeProtocol = {\n      'javascript': true,\n      'javascript:': true\n    },\n    // protocols that never have a hostname.\n    hostlessProtocol = {\n      'javascript': true,\n      'javascript:': true\n    },\n    // protocols that always contain a // bit.\n    slashedProtocol = {\n      'http': true,\n      'https': true,\n      'ftp': true,\n      'gopher': true,\n      'file': true,\n      'http:': true,\n      'https:': true,\n      'ftp:': true,\n      'gopher:': true,\n      'file:': true\n    },\n    querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n  if (url && util.isObject(url) && url instanceof Url) return url;\n\n  var u = new Url;\n  u.parse(url, parseQueryString, slashesDenoteHost);\n  return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n  if (!util.isString(url)) {\n    throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n  }\n\n  // Copy chrome, IE, opera backslash-handling behavior.\n  // Back slashes before the query string get converted to forward slashes\n  // See: https://code.google.com/p/chromium/issues/detail?id=25916\n  var queryIndex = url.indexOf('?'),\n      splitter =\n          (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n      uSplit = url.split(splitter),\n      slashRegex = /\\\\/g;\n  uSplit[0] = uSplit[0].replace(slashRegex, '/');\n  url = uSplit.join(splitter);\n\n  var rest = url;\n\n  // trim before proceeding.\n  // This is to support parse stuff like \"  http://foo.com  \\n\"\n  rest = rest.trim();\n\n  if (!slashesDenoteHost && url.split('#').length === 1) {\n    // Try fast path regexp\n    var simplePath = simplePathPattern.exec(rest);\n    if (simplePath) {\n      this.path = rest;\n      this.href = rest;\n      this.pathname = simplePath[1];\n      if (simplePath[2]) {\n        this.search = simplePath[2];\n        if (parseQueryString) {\n          this.query = querystring.parse(this.search.substr(1));\n        } else {\n          this.query = this.search.substr(1);\n        }\n      } else if (parseQueryString) {\n        this.search = '';\n        this.query = {};\n      }\n      return this;\n    }\n  }\n\n  var proto = protocolPattern.exec(rest);\n  if (proto) {\n    proto = proto[0];\n    var lowerProto = proto.toLowerCase();\n    this.protocol = lowerProto;\n    rest = rest.substr(proto.length);\n  }\n\n  // figure out if it's got a host\n  // user@server is *always* interpreted as a hostname, and url\n  // resolution will treat //foo/bar as host=foo,path=bar because that's\n  // how the browser resolves relative URLs.\n  if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n    var slashes = rest.substr(0, 2) === '//';\n    if (slashes && !(proto && hostlessProtocol[proto])) {\n      rest = rest.substr(2);\n      this.slashes = true;\n    }\n  }\n\n  if (!hostlessProtocol[proto] &&\n      (slashes || (proto && !slashedProtocol[proto]))) {\n\n    // there's a hostname.\n    // the first instance of /, ?, ;, or # ends the host.\n    //\n    // If there is an @ in the hostname, then non-host chars *are* allowed\n    // to the left of the last @ sign, unless some host-ending character\n    // comes *before* the @-sign.\n    // URLs are obnoxious.\n    //\n    // ex:\n    // http://a@b@c/ => user:a@b host:c\n    // http://a@b?@c => user:a host:c path:/?@c\n\n    // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n    // Review our test case against browsers more comprehensively.\n\n    // find the first instance of any hostEndingChars\n    var hostEnd = -1;\n    for (var i = 0; i < hostEndingChars.length; i++) {\n      var hec = rest.indexOf(hostEndingChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n        hostEnd = hec;\n    }\n\n    // at this point, either we have an explicit point where the\n    // auth portion cannot go past, or the last @ char is the decider.\n    var auth, atSign;\n    if (hostEnd === -1) {\n      // atSign can be anywhere.\n      atSign = rest.lastIndexOf('@');\n    } else {\n      // atSign must be in auth portion.\n      // http://a@b/c@d => host:b auth:a path:/c@d\n      atSign = rest.lastIndexOf('@', hostEnd);\n    }\n\n    // Now we have a portion which is definitely the auth.\n    // Pull that off.\n    if (atSign !== -1) {\n      auth = rest.slice(0, atSign);\n      rest = rest.slice(atSign + 1);\n      this.auth = decodeURIComponent(auth);\n    }\n\n    // the host is the remaining to the left of the first non-host char\n    hostEnd = -1;\n    for (var i = 0; i < nonHostChars.length; i++) {\n      var hec = rest.indexOf(nonHostChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n        hostEnd = hec;\n    }\n    // if we still have not hit it, then the entire thing is a host.\n    if (hostEnd === -1)\n      hostEnd = rest.length;\n\n    this.host = rest.slice(0, hostEnd);\n    rest = rest.slice(hostEnd);\n\n    // pull out port.\n    this.parseHost();\n\n    // we've indicated that there is a hostname,\n    // so even if it's empty, it has to be present.\n    this.hostname = this.hostname || '';\n\n    // if hostname begins with [ and ends with ]\n    // assume that it's an IPv6 address.\n    var ipv6Hostname = this.hostname[0] === '[' &&\n        this.hostname[this.hostname.length - 1] === ']';\n\n    // validate a little.\n    if (!ipv6Hostname) {\n      var hostparts = this.hostname.split(/\\./);\n      for (var i = 0, l = hostparts.length; i < l; i++) {\n        var part = hostparts[i];\n        if (!part) continue;\n        if (!part.match(hostnamePartPattern)) {\n          var newpart = '';\n          for (var j = 0, k = part.length; j < k; j++) {\n            if (part.charCodeAt(j) > 127) {\n              // we replace non-ASCII char with a temporary placeholder\n              // we need this to make sure size of hostname is not\n              // broken by replacing non-ASCII by nothing\n              newpart += 'x';\n            } else {\n              newpart += part[j];\n            }\n          }\n          // we test again with ASCII char only\n          if (!newpart.match(hostnamePartPattern)) {\n            var validParts = hostparts.slice(0, i);\n            var notHost = hostparts.slice(i + 1);\n            var bit = part.match(hostnamePartStart);\n            if (bit) {\n              validParts.push(bit[1]);\n              notHost.unshift(bit[2]);\n            }\n            if (notHost.length) {\n              rest = '/' + notHost.join('.') + rest;\n            }\n            this.hostname = validParts.join('.');\n            break;\n          }\n        }\n      }\n    }\n\n    if (this.hostname.length > hostnameMaxLen) {\n      this.hostname = '';\n    } else {\n      // hostnames are always lower case.\n      this.hostname = this.hostname.toLowerCase();\n    }\n\n    if (!ipv6Hostname) {\n      // IDNA Support: Returns a punycoded representation of \"domain\".\n      // It only converts parts of the domain name that\n      // have non-ASCII characters, i.e. it doesn't matter if\n      // you call it with a domain that already is ASCII-only.\n      this.hostname = punycode.toASCII(this.hostname);\n    }\n\n    var p = this.port ? ':' + this.port : '';\n    var h = this.hostname || '';\n    this.host = h + p;\n    this.href += this.host;\n\n    // strip [ and ] from the hostname\n    // the host field still retains them, though\n    if (ipv6Hostname) {\n      this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n      if (rest[0] !== '/') {\n        rest = '/' + rest;\n      }\n    }\n  }\n\n  // now rest is set to the post-host stuff.\n  // chop off any delim chars.\n  if (!unsafeProtocol[lowerProto]) {\n\n    // First, make 100% sure that any \"autoEscape\" chars get\n    // escaped, even if encodeURIComponent doesn't think they\n    // need to be.\n    for (var i = 0, l = autoEscape.length; i < l; i++) {\n      var ae = autoEscape[i];\n      if (rest.indexOf(ae) === -1)\n        continue;\n      var esc = encodeURIComponent(ae);\n      if (esc === ae) {\n        esc = escape(ae);\n      }\n      rest = rest.split(ae).join(esc);\n    }\n  }\n\n\n  // chop off from the tail first.\n  var hash = rest.indexOf('#');\n  if (hash !== -1) {\n    // got a fragment string.\n    this.hash = rest.substr(hash);\n    rest = rest.slice(0, hash);\n  }\n  var qm = rest.indexOf('?');\n  if (qm !== -1) {\n    this.search = rest.substr(qm);\n    this.query = rest.substr(qm + 1);\n    if (parseQueryString) {\n      this.query = querystring.parse(this.query);\n    }\n    rest = rest.slice(0, qm);\n  } else if (parseQueryString) {\n    // no query string, but parseQueryString still requested\n    this.search = '';\n    this.query = {};\n  }\n  if (rest) this.pathname = rest;\n  if (slashedProtocol[lowerProto] &&\n      this.hostname && !this.pathname) {\n    this.pathname = '/';\n  }\n\n  //to support http.request\n  if (this.pathname || this.search) {\n    var p = this.pathname || '';\n    var s = this.search || '';\n    this.path = p + s;\n  }\n\n  // finally, reconstruct the href based on what has been validated.\n  this.href = this.format();\n  return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n  // ensure it's an object, and not a string url.\n  // If it's an obj, this is a no-op.\n  // this way, you can call url_format() on strings\n  // to clean up potentially wonky urls.\n  if (util.isString(obj)) obj = urlParse(obj);\n  if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n  return obj.format();\n}\n\nUrl.prototype.format = function() {\n  var auth = this.auth || '';\n  if (auth) {\n    auth = encodeURIComponent(auth);\n    auth = auth.replace(/%3A/i, ':');\n    auth += '@';\n  }\n\n  var protocol = this.protocol || '',\n      pathname = this.pathname || '',\n      hash = this.hash || '',\n      host = false,\n      query = '';\n\n  if (this.host) {\n    host = auth + this.host;\n  } else if (this.hostname) {\n    host = auth + (this.hostname.indexOf(':') === -1 ?\n        this.hostname :\n        '[' + this.hostname + ']');\n    if (this.port) {\n      host += ':' + this.port;\n    }\n  }\n\n  if (this.query &&\n      util.isObject(this.query) &&\n      Object.keys(this.query).length) {\n    query = querystring.stringify(this.query);\n  }\n\n  var search = this.search || (query && ('?' + query)) || '';\n\n  if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n  // only the slashedProtocols get the //.  Not mailto:, xmpp:, etc.\n  // unless they had them to begin with.\n  if (this.slashes ||\n      (!protocol || slashedProtocol[protocol]) && host !== false) {\n    host = '//' + (host || '');\n    if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n  } else if (!host) {\n    host = '';\n  }\n\n  if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n  if (search && search.charAt(0) !== '?') search = '?' + search;\n\n  pathname = pathname.replace(/[?#]/g, function(match) {\n    return encodeURIComponent(match);\n  });\n  search = search.replace('#', '%23');\n\n  return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n  return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n  return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n  if (!source) return relative;\n  return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n  if (util.isString(relative)) {\n    var rel = new Url();\n    rel.parse(relative, false, true);\n    relative = rel;\n  }\n\n  var result = new Url();\n  var tkeys = Object.keys(this);\n  for (var tk = 0; tk < tkeys.length; tk++) {\n    var tkey = tkeys[tk];\n    result[tkey] = this[tkey];\n  }\n\n  // hash is always overridden, no matter what.\n  // even href=\"\" will remove it.\n  result.hash = relative.hash;\n\n  // if the relative url is empty, then there's nothing left to do here.\n  if (relative.href === '') {\n    result.href = result.format();\n    return result;\n  }\n\n  // hrefs like //foo/bar always cut to the protocol.\n  if (relative.slashes && !relative.protocol) {\n    // take everything except the protocol from relative\n    var rkeys = Object.keys(relative);\n    for (var rk = 0; rk < rkeys.length; rk++) {\n      var rkey = rkeys[rk];\n      if (rkey !== 'protocol')\n        result[rkey] = relative[rkey];\n    }\n\n    //urlParse appends trailing / to urls like http://www.example.com\n    if (slashedProtocol[result.protocol] &&\n        result.hostname && !result.pathname) {\n      result.path = result.pathname = '/';\n    }\n\n    result.href = result.format();\n    return result;\n  }\n\n  if (relative.protocol && relative.protocol !== result.protocol) {\n    // if it's a known url protocol, then changing\n    // the protocol does weird things\n    // first, if it's not file:, then we MUST have a host,\n    // and if there was a path\n    // to begin with, then we MUST have a path.\n    // if it is file:, then the host is dropped,\n    // because that's known to be hostless.\n    // anything else is assumed to be absolute.\n    if (!slashedProtocol[relative.protocol]) {\n      var keys = Object.keys(relative);\n      for (var v = 0; v < keys.length; v++) {\n        var k = keys[v];\n        result[k] = relative[k];\n      }\n      result.href = result.format();\n      return result;\n    }\n\n    result.protocol = relative.protocol;\n    if (!relative.host && !hostlessProtocol[relative.protocol]) {\n      var relPath = (relative.pathname || '').split('/');\n      while (relPath.length && !(relative.host = relPath.shift()));\n      if (!relative.host) relative.host = '';\n      if (!relative.hostname) relative.hostname = '';\n      if (relPath[0] !== '') relPath.unshift('');\n      if (relPath.length < 2) relPath.unshift('');\n      result.pathname = relPath.join('/');\n    } else {\n      result.pathname = relative.pathname;\n    }\n    result.search = relative.search;\n    result.query = relative.query;\n    result.host = relative.host || '';\n    result.auth = relative.auth;\n    result.hostname = relative.hostname || relative.host;\n    result.port = relative.port;\n    // to support http.request\n    if (result.pathname || result.search) {\n      var p = result.pathname || '';\n      var s = result.search || '';\n      result.path = p + s;\n    }\n    result.slashes = result.slashes || relative.slashes;\n    result.href = result.format();\n    return result;\n  }\n\n  var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n      isRelAbs = (\n          relative.host ||\n          relative.pathname && relative.pathname.charAt(0) === '/'\n      ),\n      mustEndAbs = (isRelAbs || isSourceAbs ||\n                    (result.host && relative.pathname)),\n      removeAllDots = mustEndAbs,\n      srcPath = result.pathname && result.pathname.split('/') || [],\n      relPath = relative.pathname && relative.pathname.split('/') || [],\n      psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n  // if the url is a non-slashed url, then relative\n  // links like ../.. should be able\n  // to crawl up to the hostname, as well.  This is strange.\n  // result.protocol has already been set by now.\n  // Later on, put the first path part into the host field.\n  if (psychotic) {\n    result.hostname = '';\n    result.port = null;\n    if (result.host) {\n      if (srcPath[0] === '') srcPath[0] = result.host;\n      else srcPath.unshift(result.host);\n    }\n    result.host = '';\n    if (relative.protocol) {\n      relative.hostname = null;\n      relative.port = null;\n      if (relative.host) {\n        if (relPath[0] === '') relPath[0] = relative.host;\n        else relPath.unshift(relative.host);\n      }\n      relative.host = null;\n    }\n    mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n  }\n\n  if (isRelAbs) {\n    // it's absolute.\n    result.host = (relative.host || relative.host === '') ?\n                  relative.host : result.host;\n    result.hostname = (relative.hostname || relative.hostname === '') ?\n                      relative.hostname : result.hostname;\n    result.search = relative.search;\n    result.query = relative.query;\n    srcPath = relPath;\n    // fall through to the dot-handling below.\n  } else if (relPath.length) {\n    // it's relative\n    // throw away the existing file, and take the new path instead.\n    if (!srcPath) srcPath = [];\n    srcPath.pop();\n    srcPath = srcPath.concat(relPath);\n    result.search = relative.search;\n    result.query = relative.query;\n  } else if (!util.isNullOrUndefined(relative.search)) {\n    // just pull out the search.\n    // like href='?foo'.\n    // Put this after the other two cases because it simplifies the booleans\n    if (psychotic) {\n      result.hostname = result.host = srcPath.shift();\n      //occationaly the auth can get stuck only in host\n      //this especially happens in cases like\n      //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n      var authInHost = result.host && result.host.indexOf('@') > 0 ?\n                       result.host.split('@') : false;\n      if (authInHost) {\n        result.auth = authInHost.shift();\n        result.host = result.hostname = authInHost.shift();\n      }\n    }\n    result.search = relative.search;\n    result.query = relative.query;\n    //to support http.request\n    if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n      result.path = (result.pathname ? result.pathname : '') +\n                    (result.search ? result.search : '');\n    }\n    result.href = result.format();\n    return result;\n  }\n\n  if (!srcPath.length) {\n    // no path at all.  easy.\n    // we've already handled the other stuff above.\n    result.pathname = null;\n    //to support http.request\n    if (result.search) {\n      result.path = '/' + result.search;\n    } else {\n      result.path = null;\n    }\n    result.href = result.format();\n    return result;\n  }\n\n  // if a url ENDs in . or .., then it must get a trailing slash.\n  // however, if it ends in anything else non-slashy,\n  // then it must NOT get a trailing slash.\n  var last = srcPath.slice(-1)[0];\n  var hasTrailingSlash = (\n      (result.host || relative.host || srcPath.length > 1) &&\n      (last === '.' || last === '..') || last === '');\n\n  // strip single dots, resolve double dots to parent dir\n  // if the path tries to go above the root, `up` ends up > 0\n  var up = 0;\n  for (var i = srcPath.length; i >= 0; i--) {\n    last = srcPath[i];\n    if (last === '.') {\n      srcPath.splice(i, 1);\n    } else if (last === '..') {\n      srcPath.splice(i, 1);\n      up++;\n    } else if (up) {\n      srcPath.splice(i, 1);\n      up--;\n    }\n  }\n\n  // if the path is allowed to go above the root, restore leading ..s\n  if (!mustEndAbs && !removeAllDots) {\n    for (; up--; up) {\n      srcPath.unshift('..');\n    }\n  }\n\n  if (mustEndAbs && srcPath[0] !== '' &&\n      (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n    srcPath.unshift('');\n  }\n\n  if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n    srcPath.push('');\n  }\n\n  var isAbsolute = srcPath[0] === '' ||\n      (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n  // put the host back\n  if (psychotic) {\n    result.hostname = result.host = isAbsolute ? '' :\n                                    srcPath.length ? srcPath.shift() : '';\n    //occationaly the auth can get stuck only in host\n    //this especially happens in cases like\n    //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n    var authInHost = result.host && result.host.indexOf('@') > 0 ?\n                     result.host.split('@') : false;\n    if (authInHost) {\n      result.auth = authInHost.shift();\n      result.host = result.hostname = authInHost.shift();\n    }\n  }\n\n  mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n  if (mustEndAbs && !isAbsolute) {\n    srcPath.unshift('');\n  }\n\n  if (!srcPath.length) {\n    result.pathname = null;\n    result.path = null;\n  } else {\n    result.pathname = srcPath.join('/');\n  }\n\n  //to support request.http\n  if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n    result.path = (result.pathname ? result.pathname : '') +\n                  (result.search ? result.search : '');\n  }\n  result.auth = relative.auth || result.auth;\n  result.slashes = result.slashes || relative.slashes;\n  result.href = result.format();\n  return result;\n};\n\nUrl.prototype.parseHost = function() {\n  var host = this.host;\n  var port = portPattern.exec(host);\n  if (port) {\n    port = port[0];\n    if (port !== ':') {\n      this.port = port.substr(1);\n    }\n    host = host.substr(0, host.length - port.length);\n  }\n  if (host) this.hostname = host;\n};\n\n},{\"./util\":302,\"punycode\":279,\"querystring\":282}],302:[function(require,module,exports){\n'use strict';\n\nmodule.exports = {\n  isString: function(arg) {\n    return typeof(arg) === 'string';\n  },\n  isObject: function(arg) {\n    return typeof(arg) === 'object' && arg !== null;\n  },\n  isNull: function(arg) {\n    return arg === null;\n  },\n  isNullOrUndefined: function(arg) {\n    return arg == null;\n  }\n};\n\n},{}],303:[function(require,module,exports){\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n  byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n  var i = offset || 0;\n  var bth = byteToHex;\n  // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n  return ([bth[buf[i++]], bth[buf[i++]], \n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]],\n\tbth[buf[i++]], bth[buf[i++]],\n\tbth[buf[i++]], bth[buf[i++]]]).join('');\n}\n\nmodule.exports = bytesToUuid;\n\n},{}],304:[function(require,module,exports){\n// Unique ID creation requires a high quality random # generator.  In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API.  We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto\n// implementation. Also, find the complete implementation of crypto on IE11.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) ||\n                      (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto));\n\nif (getRandomValues) {\n  // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n  var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n  module.exports = function whatwgRNG() {\n    getRandomValues(rnds8);\n    return rnds8;\n  };\n} else {\n  // Math.random()-based (RNG)\n  //\n  // If all else fails, use Math.random().  It's fast, but is of unspecified\n  // quality.\n  var rnds = new Array(16);\n\n  module.exports = function mathRNG() {\n    for (var i = 0, r; i < 16; i++) {\n      if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n      rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n    }\n\n    return rnds;\n  };\n}\n\n},{}],305:[function(require,module,exports){\nvar rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n  var i = buf && offset || 0;\n\n  if (typeof(options) == 'string') {\n    buf = options === 'binary' ? new Array(16) : null;\n    options = null;\n  }\n  options = options || {};\n\n  var rnds = options.random || (options.rng || rng)();\n\n  // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n  rnds[6] = (rnds[6] & 0x0f) | 0x40;\n  rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n  // Copy bytes to buffer, if provided\n  if (buf) {\n    for (var ii = 0; ii < 16; ++ii) {\n      buf[i + ii] = rnds[ii];\n    }\n  }\n\n  return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n\n},{\"./lib/bytesToUuid\":303,\"./lib/rng\":304}],306:[function(require,module,exports){\n'use strict';\n\nvar alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split('')\n  , length = 64\n  , map = {}\n  , seed = 0\n  , i = 0\n  , prev;\n\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nfunction encode(num) {\n  var encoded = '';\n\n  do {\n    encoded = alphabet[num % length] + encoded;\n    num = Math.floor(num / length);\n  } while (num > 0);\n\n  return encoded;\n}\n\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nfunction decode(str) {\n  var decoded = 0;\n\n  for (i = 0; i < str.length; i++) {\n    decoded = decoded * length + map[str.charAt(i)];\n  }\n\n  return decoded;\n}\n\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nfunction yeast() {\n  var now = encode(+new Date());\n\n  if (now !== prev) return seed = 0, prev = now;\n  return now +'.'+ encode(seed++);\n}\n\n//\n// Map each character to its index.\n//\nfor (; i < length; i++) map[alphabet[i]] = i;\n\n//\n// Expose the `yeast`, `encode` and `decode` functions.\n//\nyeast.encode = encode;\nyeast.decode = decode;\nmodule.exports = yeast;\n\n},{}]},{},[3])(3)\n});\n"]}