From 71a6f514fc0dc159929ef7aa66060d0ee76e9965 Mon Sep 17 00:00:00 2001 From: Thomas Nolte Date: Tue, 9 Oct 2018 21:57:31 -0400 Subject: [PATCH] cleaned up code. replaced all callbacks with promises in new test. --- .eslintrc.json | 2 +- dist/filer.js | 589 +++--- dist/filer.map | 2 +- dist/filer.min.js | 97 +- npm-debug.log.2344590772 | 0 package-lock.json | 3476 +++++++++++++++-------------------- tests/spec/fs.chown.spec.js | 49 +- 7 files changed, 1882 insertions(+), 2333 deletions(-) create mode 100644 npm-debug.log.2344590772 diff --git a/.eslintrc.json b/.eslintrc.json index 84787e1..d05146e 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -18,7 +18,7 @@ ], "linebreak-style": [ "error", - "unix" + "windows" ], "quotes": [ "error", diff --git a/dist/filer.js b/dist/filer.js index 4d7c27e..a737e0a 100644 --- a/dist/filer.js +++ b/dist/filer.js @@ -103,7 +103,7 @@ parcelRequire = (function (modules, cache, entry, globalName) { // Override the current require with this new one return newRequire; -})({"96cB":[function(require,module,exports) { +})({"rwRH":[function(require,module,exports) { var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; // Cherry-picked bits of underscore.js, lodash.js @@ -202,6 +202,91 @@ function nodash(value) { } module.exports = nodash; +},{}],"dRwD":[function(require,module,exports) { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +// Symbols is a better way to do this, but if we don't have support we'll just +// have to make do with an unlikely token +var customArgumentsToken = Symbol ? Symbol("__ES6-PROMISIFY--CUSTOM-ARGUMENTS__") : "__ES6-PROMISIFY--CUSTOM-ARGUMENTS__"; + +/** + * promisify() + * Transforms callback-based function -- func(arg1, arg2 .. argN, callback) -- into + * an ES6-compatible Promise. Promisify provides a default callback of the form (error, result) + * and rejects when `error` is truthy. + * + * @param {function} original - The function to promisify + * @return {function} A promisified version of `original` + */ +function promisify(original) { + + // Ensure the argument is a function + if (typeof original !== "function") { + throw new TypeError("Argument to promisify must be a function"); + } + + // If the user has asked us to decode argument names for them, honour that + var argumentNames = original[customArgumentsToken]; + + // If the user has supplied a custom Promise implementation, use it. Otherwise + // fall back to whatever we can find on the global object. + var ES6Promise = promisify.Promise || Promise; + + // If we can find no Promise implemention, then fail now. + if (typeof ES6Promise !== "function") { + throw new Error("No Promise implementation found; do you need a polyfill?"); + } + + return function () { + var _this = this; + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return new ES6Promise(function (resolve, reject) { + + // Append the callback bound to the context + args.push(function callback(err) { + + if (err) { + return reject(err); + } + + for (var _len2 = arguments.length, values = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + values[_key2 - 1] = arguments[_key2]; + } + + if (values.length === 1 || !argumentNames) { + return resolve(values[0]); + } + + var o = {}; + values.forEach(function (value, index) { + var name = argumentNames[index]; + if (name) { + o[name] = value; + } + }); + + resolve(o); + }); + + // Call the function. + original.call.apply(original, [_this].concat(args)); + }); + }; +} + +// Attach this symbol to the exported function, so users can use it +promisify.argumentNames = customArgumentsToken; +promisify.Promise = undefined; + +// Export the public API +exports.promisify = promisify; },{}],"UzoP":[function(require,module,exports) { // Copyright Joyent, Inc. and other Node contributors. // @@ -258,7 +343,7 @@ function normalizeArray(parts, allowAboveRoot) { // Split a filename into [root, dir, basename, ext], unix version // 'root' is just a slash, or nothing. -var splitPathRe = /^(\/?)([\s\S]+\/(?!$)|\/)?((?:\.{1,2}$|[\s\S]+?)?(\.[^.\/]*)?)$/; +var splitPathRe = /^(\/?)([\s\S]+\/(?!$)|\/)?((?:\.{1,2}$|[\s\S]+?)?(\.[^./]*)?)$/; var splitPath = function splitPath(filename) { var result = splitPathRe.exec(filename); return [result[1] || '', result[2] || '', result[3] || '', result[4] || '']; @@ -295,8 +380,7 @@ function resolve() { // path.normalize(path) function normalize(path) { - var isAbsolute = path.charAt(0) === '/', - trailingSlash = path.substr(-1) === '/'; + var isAbsolute = path.charAt(0) === '/'; // Normalize the path path = normalizeArray(path.split('/').filter(function (p) { @@ -317,7 +401,7 @@ function normalize(path) { function join() { var paths = Array.prototype.slice.call(arguments, 0); - return normalize(paths.filter(function (p, index) { + return normalize(paths.filter(function (p) { return p && typeof p === 'string'; }).join('/')); } @@ -355,7 +439,7 @@ function relative(from, to) { } var outputParts = []; - for (var i = samePartsLength; i < fromParts.length; i++) { + for (i = samePartsLength; i < fromParts.length; i++) { outputParts.push('..'); } @@ -389,7 +473,7 @@ function basename(path, ext) { f = f.substr(0, f.length - ext.length); } // XXXfiler: node.js just does `return f` - return f === "" ? "/" : f; + return f === '' ? '/' : f; } function extname(path) { @@ -487,9 +571,9 @@ module.exports = { IDB_RO: 'readonly', IDB_RW: 'readwrite', - WSQL_VERSION: "1", + WSQL_VERSION: '1', WSQL_SIZE: 5 * 1024 * 1024, - WSQL_DESC: "FileSystem Storage", + WSQL_DESC: 'FileSystem Storage', NODE_TYPE_FILE: 'FILE', NODE_TYPE_DIRECTORY: 'DIRECTORY', @@ -603,105 +687,7 @@ module.exports = { COPYFILE_EXCL: 1 } }; -},{}],"p8GN":[function(require,module,exports) { -var errors = {}; -[ -/** - * node.js errors - we only use some of these, add as needed. - */ -//'-1:UNKNOWN:unknown error', -//'0:OK:success', -//'1:EOF:end of file', -//'2:EADDRINFO:getaddrinfo error', -//'3:EACCES:permission denied', -//'4:EAGAIN:resource temporarily unavailable', -//'5:EADDRINUSE:address already in use', -//'6:EADDRNOTAVAIL:address not available', -//'7:EAFNOSUPPORT:address family not supported', -//'8:EALREADY:connection already in progress', -'9:EBADF:bad file descriptor', '10:EBUSY:resource busy or locked', -//'11:ECONNABORTED:software caused connection abort', -//'12:ECONNREFUSED:connection refused', -//'13:ECONNRESET:connection reset by peer', -//'14:EDESTADDRREQ:destination address required', -//'15:EFAULT:bad address in system call argument', -//'16:EHOSTUNREACH:host is unreachable', -//'17:EINTR:interrupted system call', -'18:EINVAL:invalid argument', -//'19:EISCONN:socket is already connected', -//'20:EMFILE:too many open files', -//'21:EMSGSIZE:message too long', -//'22:ENETDOWN:network is down', -//'23:ENETUNREACH:network is unreachable', -//'24:ENFILE:file table overflow', -//'25:ENOBUFS:no buffer space available', -//'26:ENOMEM:not enough memory', -'27:ENOTDIR:not a directory', '28:EISDIR:illegal operation on a directory', -//'29:ENONET:machine is not on the network', -// errno 30 skipped, as per https://github.com/rvagg/node-errno/blob/master/errno.js -//'31:ENOTCONN:socket is not connected', -//'32:ENOTSOCK:socket operation on non-socket', -//'33:ENOTSUP:operation not supported on socket', -'34:ENOENT:no such file or directory', -//'35:ENOSYS:function not implemented', -//'36:EPIPE:broken pipe', -//'37:EPROTO:protocol error', -//'38:EPROTONOSUPPORT:protocol not supported', -//'39:EPROTOTYPE:protocol wrong type for socket', -//'40:ETIMEDOUT:connection timed out', -//'41:ECHARSET:invalid Unicode character', -//'42:EAIFAMNOSUPPORT:address family for hostname not supported', -// errno 43 skipped, as per https://github.com/rvagg/node-errno/blob/master/errno.js -//'44:EAISERVICE:servname not supported for ai_socktype', -//'45:EAISOCKTYPE:ai_socktype not supported', -//'46:ESHUTDOWN:cannot send after transport endpoint shutdown', -'47:EEXIST:file already exists', -//'48:ESRCH:no such process', -//'49:ENAMETOOLONG:name too long', -'50:EPERM:operation not permitted', '51:ELOOP:too many symbolic links encountered', -//'52:EXDEV:cross-device link not permitted', -'53:ENOTEMPTY:directory not empty', -//'54:ENOSPC:no space left on device', -'55:EIO:i/o error', -//'56:EROFS:read-only file system', -//'57:ENODEV:no such device', -//'58:ESPIPE:invalid seek', -//'59:ECANCELED:operation canceled', - -/** - * Filer specific errors - */ -'1000:ENOTMOUNTED:not mounted', '1001:EFILESYSTEMERROR:missing super node, use \'FORMAT\' flag to format filesystem.', '1002:ENOATTR:attribute does not exist'].forEach(function (e) { - e = e.split(':'); - var errno = +e[0]; - var errName = e[1]; - var defaultMessage = e[2]; - - function FilerError(msg, path) { - Error.call(this); - - this.name = errName; - this.code = errName; - this.errno = errno; - this.message = msg || defaultMessage; - if (path) { - this.path = path; - } - this.stack = new Error(this.message).stack; - } - FilerError.prototype = Object.create(Error.prototype); - FilerError.prototype.constructor = FilerError; - FilerError.prototype.toString = function () { - var pathInfo = this.path ? ', \'' + this.path + '\'' : ''; - return this.name + ': ' + this.message + pathInfo; - }; - - // We expose the error as both Errors.EINVAL and Errors[18] - errors[errName] = errors[errno] = FilerError; -}); - -module.exports = errors; -},{}],"yh9p":[function(require,module,exports) { +},{}],"XV+c":[function(require,module,exports) { 'use strict' exports.byteLength = byteLength @@ -854,7 +840,7 @@ function fromByteArray (uint8) { return parts.join('') } -},{}],"JgNJ":[function(require,module,exports) { +},{}],"QT34":[function(require,module,exports) { exports.read = function (buffer, offset, isLE, mLen, nBytes) { var e, m var eLen = (nBytes * 8) - mLen - 1 @@ -940,14 +926,14 @@ exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { buffer[offset + i - d] |= s * 128 } -},{}],"REa7":[function(require,module,exports) { +},{}],"CWYW":[function(require,module,exports) { var toString = {}.toString; module.exports = Array.isArray || function (arr) { return toString.call(arr) == '[object Array]'; }; -},{}],"dskh":[function(require,module,exports) { +},{}],"D+m+":[function(require,module,exports) { var global = arguments[3]; /*! @@ -2740,7 +2726,7 @@ function isnan (val) { return val !== val // eslint-disable-line no-self-compare } -},{"base64-js":"yh9p","ieee754":"JgNJ","isarray":"REa7","buffer":"dskh"}],"xfwq":[function(require,module,exports) { +},{"base64-js":"XV+c","ieee754":"QT34","isarray":"CWYW","buffer":"D+m+"}],"xfwq":[function(require,module,exports) { var Buffer = require("buffer").Buffer; function FilerBuffer(subject, encoding, nonZero) { @@ -2751,7 +2737,7 @@ function FilerBuffer(subject, encoding, nonZero) { } return new Buffer(subject, encoding, nonZero); -}; +} // Inherit prototype from Buffer FilerBuffer.prototype = Object.create(Buffer.prototype); @@ -2765,13 +2751,12 @@ Object.keys(Buffer).forEach(function (p) { }); module.exports = FilerBuffer; -},{"buffer":"dskh"}],"QO4x":[function(require,module,exports) { +},{"buffer":"D+m+"}],"SvVb":[function(require,module,exports) { var global = arguments[3]; var FILE_SYSTEM_NAME = require('../constants.js').FILE_SYSTEM_NAME; var FILE_STORE_NAME = require('../constants.js').FILE_STORE_NAME; var IDB_RW = require('../constants.js').IDB_RW; var IDB_RO = require('../constants.js').IDB_RO; -var Errors = require('../errors.js'); var FilerBuffer = require('../buffer.js'); var indexedDB = global.indexedDB || global.mozIndexedDB || global.webkitIndexedDB || global.msIndexedDB; @@ -2927,7 +2912,105 @@ IndexedDB.prototype.getReadWriteContext = function () { }; module.exports = IndexedDB; -},{"../constants.js":"iJA9","../errors.js":"p8GN","../buffer.js":"xfwq"}],"vLJO":[function(require,module,exports) { +},{"../constants.js":"iJA9","../buffer.js":"xfwq"}],"p8GN":[function(require,module,exports) { +var errors = {}; +[ +/** + * node.js errors - we only use some of these, add as needed. + */ +//'-1:UNKNOWN:unknown error', +//'0:OK:success', +//'1:EOF:end of file', +//'2:EADDRINFO:getaddrinfo error', +//'3:EACCES:permission denied', +//'4:EAGAIN:resource temporarily unavailable', +//'5:EADDRINUSE:address already in use', +//'6:EADDRNOTAVAIL:address not available', +//'7:EAFNOSUPPORT:address family not supported', +//'8:EALREADY:connection already in progress', +'9:EBADF:bad file descriptor', '10:EBUSY:resource busy or locked', +//'11:ECONNABORTED:software caused connection abort', +//'12:ECONNREFUSED:connection refused', +//'13:ECONNRESET:connection reset by peer', +//'14:EDESTADDRREQ:destination address required', +//'15:EFAULT:bad address in system call argument', +//'16:EHOSTUNREACH:host is unreachable', +//'17:EINTR:interrupted system call', +'18:EINVAL:invalid argument', +//'19:EISCONN:socket is already connected', +//'20:EMFILE:too many open files', +//'21:EMSGSIZE:message too long', +//'22:ENETDOWN:network is down', +//'23:ENETUNREACH:network is unreachable', +//'24:ENFILE:file table overflow', +//'25:ENOBUFS:no buffer space available', +//'26:ENOMEM:not enough memory', +'27:ENOTDIR:not a directory', '28:EISDIR:illegal operation on a directory', +//'29:ENONET:machine is not on the network', +// errno 30 skipped, as per https://github.com/rvagg/node-errno/blob/master/errno.js +//'31:ENOTCONN:socket is not connected', +//'32:ENOTSOCK:socket operation on non-socket', +//'33:ENOTSUP:operation not supported on socket', +'34:ENOENT:no such file or directory', +//'35:ENOSYS:function not implemented', +//'36:EPIPE:broken pipe', +//'37:EPROTO:protocol error', +//'38:EPROTONOSUPPORT:protocol not supported', +//'39:EPROTOTYPE:protocol wrong type for socket', +//'40:ETIMEDOUT:connection timed out', +//'41:ECHARSET:invalid Unicode character', +//'42:EAIFAMNOSUPPORT:address family for hostname not supported', +// errno 43 skipped, as per https://github.com/rvagg/node-errno/blob/master/errno.js +//'44:EAISERVICE:servname not supported for ai_socktype', +//'45:EAISOCKTYPE:ai_socktype not supported', +//'46:ESHUTDOWN:cannot send after transport endpoint shutdown', +'47:EEXIST:file already exists', +//'48:ESRCH:no such process', +//'49:ENAMETOOLONG:name too long', +'50:EPERM:operation not permitted', '51:ELOOP:too many symbolic links encountered', +//'52:EXDEV:cross-device link not permitted', +'53:ENOTEMPTY:directory not empty', +//'54:ENOSPC:no space left on device', +'55:EIO:i/o error', +//'56:EROFS:read-only file system', +//'57:ENODEV:no such device', +//'58:ESPIPE:invalid seek', +//'59:ECANCELED:operation canceled', + +/** + * Filer specific errors + */ +'1000:ENOTMOUNTED:not mounted', '1001:EFILESYSTEMERROR:missing super node, use \'FORMAT\' flag to format filesystem.', '1002:ENOATTR:attribute does not exist'].forEach(function (e) { + e = e.split(':'); + var errno = +e[0]; + var errName = e[1]; + var defaultMessage = e[2]; + + function FilerError(msg, path) { + Error.call(this); + + this.name = errName; + this.code = errName; + this.errno = errno; + this.message = msg || defaultMessage; + if (path) { + this.path = path; + } + this.stack = new Error(this.message).stack; + } + FilerError.prototype = Object.create(Error.prototype); + FilerError.prototype.constructor = FilerError; + FilerError.prototype.toString = function () { + var pathInfo = this.path ? ', \'' + this.path + '\'' : ''; + return this.name + ': ' + this.message + pathInfo; + }; + + // We expose the error as both Errors.EINVAL and Errors[18] + errors[errName] = errors[errno] = FilerError; +}); + +module.exports = errors; +},{}],"U+mA":[function(require,module,exports) { /* * base64-arraybuffer * https://github.com/niklasvh/base64-arraybuffer @@ -3002,7 +3085,7 @@ module.exports = IndexedDB; return arraybuffer; }; })(); -},{}],"hW+K":[function(require,module,exports) { +},{}],"uv02":[function(require,module,exports) { var global = arguments[3]; var FILE_SYSTEM_NAME = require('../constants.js').FILE_SYSTEM_NAME; var FILE_STORE_NAME = require('../constants.js').FILE_STORE_NAME; @@ -3032,11 +3115,11 @@ WebSQLContext.prototype.clear = function (callback) { function onError(transaction, error) { callback(error); } - function onSuccess(transaction, result) { + function onSuccess() { callback(null); } this.getTransaction(function (transaction) { - transaction.executeSql("DELETE FROM " + FILE_STORE_NAME + ";", [], onSuccess, onError); + transaction.executeSql('DELETE FROM ' + FILE_STORE_NAME + ';', [], onSuccess, onError); }); }; @@ -3050,7 +3133,7 @@ function _get(getTransaction, key, callback) { callback(error); } getTransaction(function (transaction) { - transaction.executeSql("SELECT data FROM " + FILE_STORE_NAME + " WHERE id = ? LIMIT 1;", [key], onSuccess, onError); + transaction.executeSql('SELECT data FROM ' + FILE_STORE_NAME + ' WHERE id = ? LIMIT 1;', [key], onSuccess, onError); }); } WebSQLContext.prototype.getObject = function (key, callback) { @@ -3087,14 +3170,14 @@ WebSQLContext.prototype.getBuffer = function (key, callback) { }; function _put(getTransaction, key, value, callback) { - function onSuccess(transaction, result) { + function onSuccess() { callback(null); } function onError(transaction, error) { callback(error); } getTransaction(function (transaction) { - transaction.executeSql("INSERT OR REPLACE INTO " + FILE_STORE_NAME + " (id, data) VALUES (?, ?);", [key, value], onSuccess, onError); + transaction.executeSql('INSERT OR REPLACE INTO ' + FILE_STORE_NAME + ' (id, data) VALUES (?, ?);', [key, value], onSuccess, onError); }); } WebSQLContext.prototype.putObject = function (key, value, callback) { @@ -3107,14 +3190,14 @@ WebSQLContext.prototype.putBuffer = function (key, uint8BackedBuffer, callback) }; WebSQLContext.prototype.delete = function (key, callback) { - function onSuccess(transaction, result) { + function onSuccess() { callback(null); } function onError(transaction, error) { callback(error); } this.getTransaction(function (transaction) { - transaction.executeSql("DELETE FROM " + FILE_STORE_NAME + " WHERE id = ?;", [key], onSuccess, onError); + transaction.executeSql('DELETE FROM ' + FILE_STORE_NAME + ' WHERE id = ?;', [key], onSuccess, onError); }); }; @@ -3136,7 +3219,7 @@ WebSQL.prototype.open = function (callback) { var db = global.openDatabase(that.name, WSQL_VERSION, WSQL_DESC, WSQL_SIZE); if (!db) { - callback("[WebSQL] Unable to open database."); + callback('[WebSQL] Unable to open database.'); return; } @@ -3146,7 +3229,7 @@ WebSQL.prototype.open = function (callback) { } callback(error); } - function onSuccess(transaction, result) { + function onSuccess() { that.db = db; callback(); } @@ -3154,9 +3237,9 @@ WebSQL.prototype.open = function (callback) { // Create the table and index we'll need to store the fs data. db.transaction(function (transaction) { function createIndex(transaction) { - transaction.executeSql("CREATE INDEX IF NOT EXISTS idx_" + FILE_STORE_NAME + "_id" + " on " + FILE_STORE_NAME + " (id);", [], onSuccess, onError); + transaction.executeSql('CREATE INDEX IF NOT EXISTS idx_' + FILE_STORE_NAME + '_id' + ' on ' + FILE_STORE_NAME + ' (id);', [], onSuccess, onError); } - transaction.executeSql("CREATE TABLE IF NOT EXISTS " + FILE_STORE_NAME + " (id unique, data TEXT);", [], createIndex, onError); + transaction.executeSql('CREATE TABLE IF NOT EXISTS ' + FILE_STORE_NAME + ' (id unique, data TEXT);', [], createIndex, onError); }); }; WebSQL.prototype.getReadOnlyContext = function () { @@ -3167,7 +3250,7 @@ WebSQL.prototype.getReadWriteContext = function () { }; module.exports = WebSQL; -},{"../constants.js":"iJA9","../errors.js":"p8GN","../buffer.js":"xfwq","base64-arraybuffer":"vLJO"}],"pBGv":[function(require,module,exports) { +},{"../constants.js":"iJA9","../errors.js":"p8GN","../buffer.js":"xfwq","base64-arraybuffer":"U+mA"}],"qC85":[function(require,module,exports) { // shim for using process in browser var process = module.exports = {}; @@ -3354,7 +3437,7 @@ process.chdir = function (dir) { process.umask = function () { return 0; }; -},{}],"u4Zs":[function(require,module,exports) { +},{}],"AV2T":[function(require,module,exports) { var process = require("process"); var define; /*global setImmediate: false, setTimeout: false, console: false */ @@ -3436,7 +3519,7 @@ var define; root.async = async; } })(); -},{"process":"pBGv"}],"3OWy":[function(require,module,exports) { +},{"process":"qC85"}],"cQUl":[function(require,module,exports) { var FILE_SYSTEM_NAME = require('../constants.js').FILE_SYSTEM_NAME; // NOTE: prefer setImmediate to nextTick for proper recursion yielding. // see https://github.com/js-platform/filer/pull/24 @@ -3463,7 +3546,7 @@ function MemoryContext(db, readOnly) { MemoryContext.prototype.clear = function (callback) { if (this.readOnly) { asyncCallback(function () { - callback("[MemoryContext] Error: write operation on read only context"); + callback('[MemoryContext] Error: write operation on read only context'); }); return; } @@ -3484,7 +3567,7 @@ MemoryContext.prototype.getObject = MemoryContext.prototype.getBuffer = function MemoryContext.prototype.putObject = MemoryContext.prototype.putBuffer = function (key, value, callback) { if (this.readOnly) { asyncCallback(function () { - callback("[MemoryContext] Error: write operation on read only context"); + callback('[MemoryContext] Error: write operation on read only context'); }); return; } @@ -3495,7 +3578,7 @@ MemoryContext.prototype.putObject = MemoryContext.prototype.putBuffer = function MemoryContext.prototype.delete = function (key, callback) { if (this.readOnly) { asyncCallback(function () { - callback("[MemoryContext] Error: write operation on read only context"); + callback('[MemoryContext] Error: write operation on read only context'); }); return; } @@ -3522,7 +3605,7 @@ Memory.prototype.getReadWriteContext = function () { }; module.exports = Memory; -},{"../constants.js":"iJA9","../../lib/async.js":"u4Zs"}],"AiW7":[function(require,module,exports) { +},{"../constants.js":"iJA9","../../lib/async.js":"AV2T"}],"RzzZ":[function(require,module,exports) { var IndexedDB = require('./indexeddb.js'); var WebSQL = require('./websql.js'); var Memory = require('./memory.js'); @@ -3550,7 +3633,7 @@ module.exports = { } function NotSupported() { - throw "[Filer Error] Your browser doesn't support IndexedDB or WebSQL."; + throw '[Filer Error] Your browser doesn\'t support IndexedDB or WebSQL.'; } NotSupported.isSupported = function () { return false; @@ -3558,7 +3641,7 @@ module.exports = { return NotSupported; }() }; -},{"./indexeddb.js":"QO4x","./websql.js":"hW+K","./memory.js":"3OWy"}],"QMiB":[function(require,module,exports) { +},{"./indexeddb.js":"SvVb","./websql.js":"uv02","./memory.js":"cQUl"}],"KPj6":[function(require,module,exports) { var defaults = require('../constants.js').ENVIRONMENT; module.exports = function Environment(env) { @@ -3574,22 +3657,7 @@ module.exports = function Environment(env) { env[name] = value; }; }; -},{"../constants.js":"iJA9"}],"03yF":[function(require,module,exports) { -var Buffer = require("buffer").Buffer; -// Adapt encodings to work with Buffer or Uint8Array, they expect the latter -function decode(buf) { - return buf.toString('utf8'); -} - -function encode(string) { - return new Buffer(string, 'utf8'); -} - -module.exports = { - encode: encode, - decode: decode -}; -},{"buffer":"dskh"}],"UUq2":[function(require,module,exports) { +},{"../constants.js":"iJA9"}],"oS47":[function(require,module,exports) { var process = require("process"); // Copyright Joyent, Inc. and other Node contributors. // @@ -3816,7 +3884,7 @@ var substr = 'ab'.substr(-1) === 'b' } ; -},{"process":"pBGv"}],"bQx9":[function(require,module,exports) { +},{"process":"qC85"}],"Oe3x":[function(require,module,exports) { module.exports = function (xs, fn) { var res = []; for (var i = 0; i < xs.length; i++) { @@ -3831,7 +3899,7 @@ var isArray = Array.isArray || function (xs) { return Object.prototype.toString.call(xs) === '[object Array]'; }; -},{}],"6D9y":[function(require,module,exports) { +},{}],"tPCG":[function(require,module,exports) { 'use strict'; module.exports = balanced; function balanced(a, b, str) { @@ -3892,7 +3960,7 @@ function range(a, b, str) { return result; } -},{}],"dwX/":[function(require,module,exports) { +},{}],"PuLq":[function(require,module,exports) { var concatMap = require('concat-map'); var balanced = require('balanced-match'); @@ -4095,7 +4163,7 @@ function expand(str, isTop) { } -},{"concat-map":"bQx9","balanced-match":"6D9y"}],"Nt/K":[function(require,module,exports) { +},{"concat-map":"Oe3x","balanced-match":"tPCG"}],"Dd0T":[function(require,module,exports) { module.exports = minimatch minimatch.Minimatch = Minimatch @@ -5020,15 +5088,19 @@ function regExpEscape (s) { return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') } -},{"path":"UUq2","brace-expansion":"dwX/"}],"D1Ra":[function(require,module,exports) { +},{"path":"oS47","brace-expansion":"PuLq"}],"/TiA":[function(require,module,exports) { +var _require = require('es6-promisify'), + promisify = _require.promisify; + var Path = require('../path.js'); var Errors = require('../errors.js'); var Environment = require('./environment.js'); var async = require('../../lib/async.js'); -var Encoding = require('../encoding.js'); var minimatch = require('minimatch'); function Shell(fs, options) { + var _this = this; + options = options || {}; var env = new Environment(options.env); @@ -5084,6 +5156,14 @@ function Shell(fs, options) { this.pwd = function () { return cwd; }; + + this.promises = {}; + /** + * Public API for Shell converted to Promise based + */ + ['cd', 'exec', 'touch', 'cat', 'ls', 'rm', 'tempDir', 'mkdirp', 'find'].forEach(function (methodName) { + _this.promises[methodName] = promisify(_this[methodName].bind(_this)); + }); } /** @@ -5114,7 +5194,7 @@ Shell.prototype.exec = function (path, args, callback) { callback = callback || function () {}; path = Path.resolve(sh.pwd(), path); - fs.readFile(path, "utf8", function (error, data) { + fs.readFile(path, 'utf8', function (error, data) { if (error) { callback(error); return; @@ -5158,7 +5238,7 @@ Shell.prototype.touch = function (path, options, callback) { fs.utimes(path, atime, mtime, callback); } - fs.stat(path, function (error, stats) { + fs.stat(path, function (error) { if (error) { if (options.updateOnly === true) { callback(); @@ -5375,7 +5455,7 @@ Shell.prototype.tempDir = function (callback) { // Try and create it, and it will either work or fail // but either way it's now there. - fs.mkdir(tmp, function (err) { + fs.mkdir(tmp, function () { callback(null, tmp); }); }; @@ -5562,7 +5642,7 @@ Shell.prototype.find = function (path, options, callback) { }; module.exports = Shell; -},{"../path.js":"UzoP","../errors.js":"p8GN","./environment.js":"QMiB","../../lib/async.js":"u4Zs","../encoding.js":"03yF","minimatch":"Nt/K"}],"J4Qg":[function(require,module,exports) { +},{"es6-promisify":"dRwD","../path.js":"UzoP","../errors.js":"p8GN","./environment.js":"KPj6","../../lib/async.js":"AV2T","minimatch":"Dd0T"}],"eWWT":[function(require,module,exports) { // Based on https://github.com/diy/intercom.js/blob/master/lib/events.js // Copyright 2012 DIY Co Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 @@ -5634,7 +5714,7 @@ EventEmitter.prototype.trigger = pub.trigger; EventEmitter.prototype.removeAllListeners = pub.removeAllListeners; module.exports = EventEmitter; -},{}],"u7Jv":[function(require,module,exports) { +},{}],"cyyu":[function(require,module,exports) { var global = arguments[3]; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; @@ -5957,7 +6037,7 @@ Intercom.getInstance = function () { }(); module.exports = Intercom; -},{"./eventemitter.js":"J4Qg","../src/shared.js":"3zBM"}],"VLEe":[function(require,module,exports) { +},{"./eventemitter.js":"eWWT","../src/shared.js":"3zBM"}],"VLEe":[function(require,module,exports) { var EventEmitter = require('../lib/eventemitter.js'); var Path = require('./path.js'); var Intercom = require('../lib/intercom.js'); @@ -6020,7 +6100,22 @@ FSWatcher.prototype = new EventEmitter(); FSWatcher.prototype.constructor = FSWatcher; module.exports = FSWatcher; -},{"../lib/eventemitter.js":"J4Qg","./path.js":"UzoP","../lib/intercom.js":"u7Jv"}],"ZECt":[function(require,module,exports) { +},{"../lib/eventemitter.js":"eWWT","./path.js":"UzoP","../lib/intercom.js":"cyyu"}],"03yF":[function(require,module,exports) { +var Buffer = require("buffer").Buffer; +// Adapt encodings to work with Buffer or Uint8Array, they expect the latter +function decode(buf) { + return buf.toString('utf8'); +} + +function encode(string) { + return new Buffer(string, 'utf8'); +} + +module.exports = { + encode: encode, + decode: decode +}; +},{"buffer":"D+m+"}],"ZECt":[function(require,module,exports) { var NODE_TYPE_FILE = require('./constants.js').NODE_TYPE_FILE; module.exports = function DirectoryEntry(id, type) { @@ -6090,9 +6185,6 @@ module.exports = SuperNode; var NODE_TYPE_FILE = require('./constants.js').NODE_TYPE_FILE; var NODE_TYPE_DIRECTORY = require('./constants.js').NODE_TYPE_DIRECTORY; var NODE_TYPE_SYMBOLIC_LINK = require('./constants.js').NODE_TYPE_SYMBOLIC_LINK; -var NODE_TYPE_META = require('./constants.js').NODE_TYPE_META; - -var ROOT_DIRECTORY_NAME = require('./constants.js').ROOT_DIRECTORY_NAME; var S_IFREG = require('./constants.js').S_IFREG; var S_IFDIR = require('./constants.js').S_IFDIR; @@ -6212,7 +6304,7 @@ Stats.prototype.isSocket = Stats.prototype.isFIFO = Stats.prototype.isCharacterD }; module.exports = Stats; -},{"./constants.js":"iJA9","./path.js":"UzoP"}],"bsBG":[function(require,module,exports) { +},{"./constants.js":"iJA9","./path.js":"UzoP"}],"ctIo":[function(require,module,exports) { var _ = require('../../lib/nodash.js'); @@ -6229,8 +6321,6 @@ var NODE_TYPE_DIRECTORY = Constants.NODE_TYPE_DIRECTORY; var NODE_TYPE_SYMBOLIC_LINK = Constants.NODE_TYPE_SYMBOLIC_LINK; var NODE_TYPE_META = Constants.NODE_TYPE_META; -var DEFAULT_FILE_PERMISSIONS = Constants.DEFAULT_FILE_PERMISSIONS; -var DEFAULT_DIR_PERMISSIONS = Constants.DEFAULT_DIR_PERMISSIONS; var FULL_READ_WRITE_EXEC_PERMISSIONS = Constants.FULL_READ_WRITE_EXEC_PERMISSIONS; var ROOT_DIRECTORY_NAME = Constants.ROOT_DIRECTORY_NAME; @@ -6241,7 +6331,6 @@ var O_READ = Constants.O_READ; var O_WRITE = Constants.O_WRITE; var O_CREATE = Constants.O_CREATE; var O_EXCLUSIVE = Constants.O_EXCLUSIVE; -var O_TRUNCATE = Constants.O_TRUNCATE; var O_APPEND = Constants.O_APPEND; var O_FLAGS = Constants.O_FLAGS; @@ -7056,7 +7145,6 @@ function read_data(context, ofd, buffer, offset, length, position, callback) { function stat_file(context, path, callback) { path = normalize(path); - var name = basename(path); find_node(context, path, callback); } @@ -7136,7 +7224,7 @@ function link_node(context, oldpath, newpath, callback) { } } - function read_file_node(error, result) { + function read_file_node(error) { if (error) { callback(error); } else { @@ -7210,8 +7298,12 @@ function unlink_node(context, path, callback) { } else { delete directoryData[name]; context.putObject(directoryNode.data, directoryData, function (error) { - var now = Date.now(); - update_node_times(context, parentPath, directoryNode, { mtime: now, ctime: now }, callback); + if (error) { + callback(error); + } else { + var now = Date.now(); + update_node_times(context, parentPath, directoryNode, { mtime: now, ctime: now }, callback); + } }); } } @@ -7234,7 +7326,11 @@ function unlink_node(context, path, callback) { context.delete(fileNode.id, delete_file_data); } else { context.putObject(fileNode.id, fileNode, function (error) { - update_node_times(context, path, fileNode, { ctime: Date.now() }, update_directory_data); + if (error) { + callback(error); + } else { + update_node_times(context, path, fileNode, { ctime: Date.now() }, update_directory_data); + } }); } } @@ -7277,7 +7373,6 @@ function unlink_node(context, path, callback) { function read_directory(context, path, callback) { path = normalize(path); - var name = basename(path); var directoryNode; var directoryData; @@ -7761,9 +7856,9 @@ function validate_flags(flags) { function validate_file_options(options, enc, fileMode) { if (!options) { options = { encoding: enc, flag: fileMode }; - } else if (typeof options === "function") { + } else if (typeof options === 'function') { options = { encoding: enc, flag: fileMode }; - } else if (typeof options === "string") { + } else if (typeof options === 'string') { options = { encoding: options, flag: fileMode }; } return options; @@ -7972,7 +8067,7 @@ function readFile(fs, context, path, options, callback) { var buffer = new Buffer(size); buffer.fill(0); - read_data(context, ofd, buffer, 0, size, 0, function (err, nbytes) { + read_data(context, ofd, buffer, 0, size, 0, function (err) { cleanup(); if (err) { @@ -8020,10 +8115,10 @@ function writeFile(fs, context, path, data, options, callback) { } data = data || ''; - if (typeof data === "number") { + if (typeof data === 'number') { data = '' + data; } - if (typeof data === "string" && options.encoding === 'utf8') { + if (typeof data === 'string' && options.encoding === 'utf8') { data = Encoding.encode(data); } @@ -8034,7 +8129,7 @@ function writeFile(fs, context, path, data, options, callback) { var ofd = new OpenFileDescription(path, fileNode.id, flags, 0); var fd = fs.allocDescriptor(ofd); - replace_data(context, ofd, data, 0, data.length, function (err, nbytes) { + replace_data(context, ofd, data, 0, data.length, function (err) { fs.releaseDescriptor(fd); if (err) { @@ -8057,10 +8152,10 @@ function appendFile(fs, context, path, data, options, callback) { } data = data || ''; - if (typeof data === "number") { + if (typeof data === 'number') { data = '' + data; } - if (typeof data === "string" && options.encoding === 'utf8') { + if (typeof data === 'string' && options.encoding === 'utf8') { data = Encoding.encode(data); } @@ -8071,7 +8166,7 @@ function appendFile(fs, context, path, data, options, callback) { var ofd = new OpenFileDescription(path, fileNode.id, flags, fileNode.size); var fd = fs.allocDescriptor(ofd); - write_data(context, ofd, data, 0, data.length, ofd.position, function (err, nbytes) { + write_data(context, ofd, data, 0, data.length, ofd.position, function (err) { fs.releaseDescriptor(fd); if (err) { @@ -8083,15 +8178,15 @@ function appendFile(fs, context, path, data, options, callback) { } function exists(fs, context, path, callback) { - function cb(err, stats) { + function cb(err) { callback(err ? false : true); } + console.warn('This method is deprecated. For more details see https://nodejs.org/api/fs.html#fs_fs_exists_path_callback'); // eslint-disable-line no-console stat(fs, context, path, cb); } // Based on https://github.com/nodejs/node/blob/c700cc42da9cf73af9fec2098520a6c0a631d901/lib/internal/validators.js#L21 var octalReg = /^[0-7]+$/; -var modeDesc = 'must be a 32-bit unsigned integer or an octal string'; function isUint32(value) { return value === value >>> 0; } @@ -8590,9 +8685,12 @@ module.exports = { truncate: truncate, ftruncate: ftruncate }; -},{"../../lib/nodash.js":"96cB","../path.js":"UzoP","../constants.js":"iJA9","../encoding.js":"03yF","../errors.js":"p8GN","../directory-entry.js":"ZECt","../open-file-description.js":"XWaV","../super-node.js":"33JE","../node.js":"KKNo","../stats.js":"6dsC","../buffer.js":"xfwq"}],"GMi4":[function(require,module,exports) { +},{"../../lib/nodash.js":"rwRH","../path.js":"UzoP","../constants.js":"iJA9","../encoding.js":"03yF","../errors.js":"p8GN","../directory-entry.js":"ZECt","../open-file-description.js":"XWaV","../super-node.js":"33JE","../node.js":"KKNo","../stats.js":"6dsC","../buffer.js":"xfwq"}],"aWta":[function(require,module,exports) { var _ = require('../../lib/nodash.js'); +var _require = require('es6-promisify'), + promisify = _require.promisify; + var isNullPath = require('../path.js').isNull; var nop = require('../shared.js').nop; @@ -8622,7 +8720,7 @@ var impl = require('./implementation.js'); // node.js supports a calling pattern that leaves off a callback. function maybeCallback(callback) { - if (typeof callback === "function") { + if (typeof callback === 'function') { return callback; } return function (err) { @@ -8635,6 +8733,7 @@ function maybeCallback(callback) { // Default callback that logs an error if passed in function defaultCallback(err) { if (err) { + /* eslint no-console: 0 */ console.error('Filer error: ', err); } } @@ -8697,7 +8796,7 @@ function FileSystem(options, callback) { // descriptor management functions var openFiles = {}; var nextDescriptor = FIRST_DESCRIPTOR; - Object.defineProperty(this, "openFiles", { + Object.defineProperty(this, 'openFiles', { get: function get() { return openFiles; } @@ -8856,62 +8955,64 @@ function FileSystem(options, callback) { impl.ensureRootDirectory(context, complete); } }); + FileSystem.prototype.promises = {}; + /** + * Public API for FileSystem + */ + ['open', 'chmod', 'fchmod', 'chown', 'fchown', 'close', 'mknod', 'mkdir', 'rmdir', 'stat', 'fstat', 'link', 'unlink', 'read', 'readFile', 'write', 'writeFile', 'appendFile', 'exists', 'lseek', 'readdir', 'rename', 'readlink', 'symlink', 'lstat', 'truncate', 'ftruncate', 'utimes', 'futimes', 'setxattr', 'getxattr', 'fsetxattr', 'fgetxattr', 'removexattr', 'fremovexattr'].forEach(function (methodName) { + FileSystem.prototype[methodName] = function () { + var fs = this; + var args = Array.prototype.slice.call(arguments, 0); + var lastArgIndex = args.length - 1; + + // We may or may not get a callback, and since node.js supports + // fire-and-forget style fs operations, we have to dance a bit here. + var missingCallback = typeof args[lastArgIndex] !== 'function'; + var callback = maybeCallback(args[lastArgIndex]); + + var error = fs.queueOrRun(function () { + var context = fs.provider.openReadWriteContext(); + + // Fail early if the filesystem is in an error state (e.g., + // provider failed to open. + if (FS_ERROR === fs.readyState) { + var err = new Errors.EFILESYSTEMERROR('filesystem unavailable, operation canceled'); + return callback.call(fs, err); + } + + // Wrap the callback so we can explicitly close the context + function complete() { + context.close(); + callback.apply(fs, arguments); + } + + // Either add or replace the callback with our wrapper complete() + if (missingCallback) { + args.push(complete); + } else { + args[lastArgIndex] = complete; + } + + // Forward this call to the impl's version, using the following + // call signature, with complete() as the callback/last-arg now: + // fn(fs, context, arg0, arg1, ... , complete); + var fnArgs = [fs, context].concat(args); + impl[methodName].apply(null, fnArgs); + }); + if (error) { + callback(error); + } + }; + + FileSystem.prototype.promises[methodName] = promisify(FileSystem.prototype[methodName].bind(fs)); + }); } // Expose storage providers on FileSystem constructor FileSystem.providers = providers; -/** - * Public API for FileSystem - */ -['open', 'chmod', 'fchmod', 'chown', 'fchown', 'close', 'mknod', 'mkdir', 'rmdir', 'stat', 'fstat', 'link', 'unlink', 'read', 'readFile', 'write', 'writeFile', 'appendFile', 'exists', 'lseek', 'readdir', 'rename', 'readlink', 'symlink', 'lstat', 'truncate', 'ftruncate', 'utimes', 'futimes', 'setxattr', 'getxattr', 'fsetxattr', 'fgetxattr', 'removexattr', 'fremovexattr'].forEach(function (methodName) { - FileSystem.prototype[methodName] = function () { - var fs = this; - var args = Array.prototype.slice.call(arguments, 0); - var lastArgIndex = args.length - 1; - - // We may or may not get a callback, and since node.js supports - // fire-and-forget style fs operations, we have to dance a bit here. - var missingCallback = typeof args[lastArgIndex] !== 'function'; - var callback = maybeCallback(args[lastArgIndex]); - - var error = fs.queueOrRun(function () { - var context = fs.provider.openReadWriteContext(); - - // Fail early if the filesystem is in an error state (e.g., - // provider failed to open. - if (FS_ERROR === fs.readyState) { - var err = new Errors.EFILESYSTEMERROR('filesystem unavailable, operation canceled'); - return callback.call(fs, err); - } - - // Wrap the callback so we can explicitly close the context - function complete() { - context.close(); - callback.apply(fs, arguments); - } - - // Either add or replace the callback with our wrapper complete() - if (missingCallback) { - args.push(complete); - } else { - args[lastArgIndex] = complete; - } - - // Forward this call to the impl's version, using the following - // call signature, with complete() as the callback/last-arg now: - // fn(fs, context, arg0, arg1, ... , complete); - var fnArgs = [fs, context].concat(args); - impl[methodName].apply(null, fnArgs); - }); - if (error) { - callback(error); - } - }; -}); - module.exports = FileSystem; -},{"../../lib/nodash.js":"96cB","../path.js":"UzoP","../shared.js":"3zBM","../constants.js":"iJA9","../providers/index.js":"AiW7","../shell/shell.js":"D1Ra","../../lib/intercom.js":"u7Jv","../fs-watcher.js":"VLEe","../errors.js":"p8GN","./implementation.js":"bsBG"}],"Focm":[function(require,module,exports) { +},{"../../lib/nodash.js":"rwRH","es6-promisify":"dRwD","../path.js":"UzoP","../shared.js":"3zBM","../constants.js":"iJA9","../providers/index.js":"RzzZ","../shell/shell.js":"/TiA","../../lib/intercom.js":"cyyu","../fs-watcher.js":"VLEe","../errors.js":"p8GN","./implementation.js":"ctIo"}],"Focm":[function(require,module,exports) { module.exports = { FileSystem: require('./filesystem/interface.js'), Buffer: require('./buffer.js'), @@ -8919,5 +9020,5 @@ module.exports = { Errors: require('./errors.js'), Shell: require('./shell/shell.js') }; -},{"./filesystem/interface.js":"GMi4","./buffer.js":"xfwq","./path.js":"UzoP","./errors.js":"p8GN","./shell/shell.js":"D1Ra"}]},{},["Focm"], "Filer") +},{"./filesystem/interface.js":"aWta","./buffer.js":"xfwq","./path.js":"UzoP","./errors.js":"p8GN","./shell/shell.js":"/TiA"}]},{},["Focm"], "Filer") //# sourceMappingURL=/filer.map \ No newline at end of file diff --git a/dist/filer.map b/dist/filer.map index 857d4ff..8bbdaf8 100644 --- a/dist/filer.map +++ b/dist/filer.map @@ -1 +1 @@ -{"version":3,"sources":["../lib/nodash.js","path.js","shared.js","constants.js","errors.js","../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/isarray/index.js","../node_modules/buffer/index.js","buffer.js","providers/indexeddb.js","../node_modules/base64-arraybuffer/lib/base64-arraybuffer.js","providers/websql.js","../node_modules/process/browser.js","../lib/async.js","providers/memory.js","providers/index.js","shell/environment.js","encoding.js","../node_modules/path-browserify/index.js","../node_modules/concat-map/index.js","../node_modules/balanced-match/index.js","../node_modules/brace-expansion/index.js","../node_modules/minimatch/minimatch.js","shell/shell.js","../lib/eventemitter.js","../lib/intercom.js","fs-watcher.js","directory-entry.js","open-file-description.js","super-node.js","node.js","stats.js","filesystem/implementation.js","filesystem/interface.js","index.js"],"names":["ArrayProto","Array","prototype","nativeForEach","forEach","nativeIndexOf","indexOf","nativeSome","some","ObjProto","Object","hasOwnProperty","nativeKeys","keys","breaker","has","obj","key","call","TypeError","push","size","length","identity","value","each","iterator","context","i","any","result","index","list","contains","target","Wrapped","nodash","isArray","module","exports","normalizeArray","parts","allowAboveRoot","up","last","splice","unshift","splitPathRe","splitPath","filename","exec","resolve","resolvedPath","resolvedAbsolute","arguments","path","charAt","split","filter","p","join","normalize","isAbsolute","trailingSlash","substr","paths","slice","relative","from","to","trim","arr","start","end","fromParts","toParts","Math","min","samePartsLength","outputParts","concat","dirname","root","dir","basename","ext","f","extname","isNull","addTrailing","replace","removeTrailing","sep","delimiter","guid","c","r","random","v","toString","toUpperCase","nop","u8toArray","u8","array","len","O_READ","O_WRITE","O_CREATE","O_EXCLUSIVE","O_TRUNCATE","O_APPEND","XATTR_CREATE","XATTR_REPLACE","FILE_SYSTEM_NAME","FILE_STORE_NAME","IDB_RO","IDB_RW","WSQL_VERSION","WSQL_SIZE","WSQL_DESC","NODE_TYPE_FILE","NODE_TYPE_DIRECTORY","NODE_TYPE_SYMBOLIC_LINK","NODE_TYPE_META","S_IFREG","S_IFDIR","S_IFLNK","DEFAULT_DIR_PERMISSIONS","DEFAULT_FILE_PERMISSIONS","FULL_READ_WRITE_EXEC_PERMISSIONS","READ_WRITE_PERMISSIONS","SYMLOOP_MAX","BINARY_MIME_TYPE","JSON_MIME_TYPE","ROOT_DIRECTORY_NAME","FS_FORMAT","FS_NOCTIME","FS_NOMTIME","FS_NODUPEIDCHECK","O_FLAGS","FS_READY","FS_PENDING","FS_ERROR","SUPER_NODE_ID","STDIN","STDOUT","STDERR","FIRST_DESCRIPTOR","ENVIRONMENT","TMP","PATH","fsConstants","O_RDONLY","O_WRONLY","O_RDWR","S_IFMT","S_IFCHR","S_IFBLK","S_IFIFO","S_IFSOCK","O_CREAT","O_EXCL","O_NOCTTY","O_TRUNC","O_DIRECTORY","O_NOFOLLOW","O_SYNC","O_DSYNC","O_SYMLINK","O_NONBLOCK","S_IRWXU","S_IRUSR","S_IWUSR","S_IXUSR","S_IRWXG","S_IRGRP","S_IWGRP","S_IXGRP","S_IRWXO","S_IROTH","S_IWOTH","S_IXOTH","F_OK","R_OK","W_OK","X_OK","UV_FS_COPYFILE_EXCL","COPYFILE_EXCL","errors","e","errno","errName","defaultMessage","FilerError","msg","Error","name","code","message","stack","create","constructor","pathInfo","FilerBuffer","subject","encoding","nonZero","ArrayBuffer","Uint8Array","Buffer","require","Errors","indexedDB","global","mozIndexedDB","webkitIndexedDB","msIndexedDB","IndexedDBContext","db","mode","_getObjectStore","objectStore","transaction","clear","callback","request","onsuccess","onerror","event","preventDefault","error","err","_get","get","getObject","getBuffer","arrayBuffer","_put","put","putObject","putBuffer","uint8BackedBuffer","buf","buffer","delete","IndexedDB","isSupported","open","that","openRequest","onupgradeneeded","objectStoreNames","deleteObjectStore","createObjectStore","getReadOnlyContext","getReadWriteContext","chars","lookup","charCodeAt","encode","arraybuffer","bytes","base64","substring","decode","bufferLength","encoded1","encoded2","encoded3","encoded4","base64ArrayBuffer","WebSQLContext","isReadOnly","getTransaction","onError","onSuccess","executeSql","rows","item","data","JSON","parse","json","stringify","WebSQL","openDatabase","EINVAL","createIndex","process","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","setTimeout","clearTimeout","runTimeout","fun","runClearTimeout","marker","queue","draining","currentQueue","queueIndex","cleanUpNextTick","drainQueue","timeout","run","nextTick","args","Item","apply","title","browser","env","argv","version","versions","noop","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","async","setImmediate","fn","eachSeries","completed","iterate","forEachSeries","define","amd","asyncCallback","createDB","pool","getOrCreate","MemoryContext","readOnly","Memory","Default","Fallback","NotSupported","defaults","Environment","set","string","Path","Encoding","minimatch","Shell","fs","options","defineProperty","enumerable","cd","stat","stats","ENOTDIR","type","pwd","sh","readFile","cmd","Function","touch","createFile","writeFile","updateTimes","now","Date","atime","date","mtime","utimes","updateOnly","cat","files","all","append","ls","pathname","readdir","entries","getDirEntry","entry","recursive","items","contents","rm","remove","unlink","rmdir","ENOTEMPTY","map","tempDir","tmp","mkdir","mkdirp","_mkdirp","isDirectory","isFile","parent","find","next","found","processPath","maybeProcessPath","rawPath","regex","test","walk","removeItem","EventEmitter","createInterface","space","methods","trigger","self","pvt","_on","_off","_trigger","pub","throttle","delay","extend","a","b","localStorage","window","getItem","setItem","Intercom","origin","lastMessage","receivedIDs","previousValues","storageHandler","_onStorageEvent","document","attachEvent","addEventListener","_transaction","TIMEOUT","WAIT","executed","listening","waitTimer","lock","activeLock","INDEX_LOCK","unlock","_cleanup_emit","threshold","THRESHOLD_TTL_EMIT","changed","messages","INDEX_EMIT","timestamp","_cleanup_once","ttl","table","INDEX_ONCE","_once_expired","THRESHOLD_TTL_ONCE","_localStorageChanged","field","currentValue","id","payload","_emit","String","packet","supported","destroy","getInstance","intercom","FSWatcher","recursivePathPrefix","onchange","filename_","persistent_","recursive_","close","DirectoryEntry","OpenFileDescription","flags","position","getNode","check_if_node_exists","node","EBADF","Constants","SuperNode","ctime","rnode","getMode","Node","xattrs","nlinks","uid","gid","ensureID","prop","setMode","Stats","fileNode","devName","dev","isSymbolicLink","isSocket","isFIFO","isCharacterDevice","isBlockDevice","_","isAbsolutePath","isNullPath","update_node_times","times","update","complete","changes","make_node","parentPath","parentNode","parentNodeData","create_node_in_parent","parentDirectoryNode","find_node","EEXIST","ENOENT","create_node","update_parent_node_data","update_time","followedCount","read_root_directory_node","superNode","EFILESYSTEMERROR","check_root_directory_node","rootDirectoryNode","read_parent_directory_data","get_node_from_parent_directory_data","parentDirectoryData","nodeId","is_symbolic_link","ELOOP","follow_symbolic_link","set_extended_attribute","flag","ENOATTR","ensure_root_directory","directoryNode","directoryData","ensure_super_node","existingNode","write_directory_node","write_directory_data","make_directory","check_if_directory_exists","update_parent_directory_data","remove_directory","EBUSY","check_if_node_is_directory","check_if_directory_is_empty","remove_directory_entry_from_parent_directory_node","remove_directory_node","remove_directory_data","open_file","directoryEntry","fileData","EISDIR","set_file_node","read_directory_data","check_if_file_exists","check_if_symbolic_link","write_file_node","undefined","write_file_data","fill","update_directory_data","handle_update_result","replace_data","ofd","offset","return_nbytes","update_file_node","newData","copy","write_data","update_file_data","EIO","_position","newSize","max","read_file_data","read_data","handle_file_data","stat_file","fstat_file","lstat_file","link_node","oldpath","newpath","oldname","oldParentPath","newname","newParentPath","oldDirectoryNode","oldDirectoryData","newDirectoryNode","newDirectoryData","fileNodeID","read_file_node","check_if_new_file_exists","read_new_directory_data","check_if_old_file_exists","EPERM","read_old_directory_data","unlink_node","delete_file_data","read_directory","handle_directory_data","make_symbolic_link","srcpath","dstpath","symlink_relpath","read_link","check_if_symbolic","truncate_file","truncate_file_data","ftruncate_file","utimes_file","update_times","futimes_file","setxattr_file","setxattr","fsetxattr_file","getxattr_file","get_xattr","fgetxattr_file","removexattr_file","remove_xattr","fremovexattr_file","validate_flags","validate_file_options","enc","fileMode","pathCheck","allowRelative","check_result","openFileDescription","fd","allocDescriptor","openFiles","releaseDescriptor","mknod","validateAndMaskMode","fstat","link","read","wrapped_cb","bytesRead","cleanup","fstatResult","nbytes","write","appendFile","exists","cb","octalReg","modeDesc","isUint32","def","Number","isInteger","parsed","parseInt","chmod_file","update_mode","fchmod_file","chown_file","update_owner","fchown_file","getxattr","fgetxattr","fsetxattr","removexattr","fremovexattr","lseek","whence","update_descriptor_position","currentTime","futimes","chmod","fchmod","chown","fchown","rename","oldName","newName","oldParentDirectory","oldParentData","newParentDirectory","newParentData","read_new_directory","update_old_parent_directory_data","update_new_parent_directory_data","check_if_new_directory_exists","read_new_parent_directory_data","get_new_parent_directory","unlink_old_file","check_node_type","symlink","readlink","lstat","truncate","ftruncate","ensureRootDirectory","providers","defaultGuidFn","impl","maybeCallback","defaultCallback","console","FileSystem","provider","forceFormatting","readyState","stdin","stdout","stderr","constants","bind","nextDescriptor","queueOrRun","operation","runQueued","watch","listener","watcher","wrappedGuidFn","guidWithCheck","broadcastChanges","change","wrappedContext","methodName","openReadWriteContext","openReadOnlyContext","lastArgIndex","missingCallback","fnArgs"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;;;;;;AAOA,IAAIA,aAAaC,MAAMC,SAAvB;AACA,IAAIC,gBAAgBH,WAAWI,OAA/B;AACA,IAAIC,gBAAgBL,WAAWM,OAA/B;AACA,IAAIC,aAAaP,WAAWQ,IAA5B;;AAEA,IAAIC,WAAWC,OAAOR,SAAtB;AACA,IAAIS,iBAAiBF,SAASE,cAA9B;AACA,IAAIC,aAAaF,OAAOG,IAAxB;;AAEA,IAAIC,UAAU,EAAd;;AAEA,SAASC,GAAT,CAAaC,GAAb,EAAkBC,GAAlB,EAAuB;AACrB,SAAON,eAAeO,IAAf,CAAoBF,GAApB,EAAyBC,GAAzB,CAAP;AACD;;AAED,IAAIJ,OAAOD,cAAc,UAASI,GAAT,EAAc;AACrC,MAAIA,QAAQN,OAAOM,GAAP,CAAZ,EAAyB,MAAM,IAAIG,SAAJ,CAAc,gBAAd,CAAN;AACzB,MAAIN,OAAO,EAAX;AACA,OAAK,IAAII,GAAT,IAAgBD,GAAhB;AAAqB,QAAID,IAAIC,GAAJ,EAASC,GAAT,CAAJ,EAAmBJ,KAAKO,IAAL,CAAUH,GAAV;AAAxC,GACA,OAAOJ,IAAP;AACD,CALD;;AAOA,SAASQ,IAAT,CAAcL,GAAd,EAAmB;AACjB,MAAIA,OAAO,IAAX,EAAiB,OAAO,CAAP;AACjB,SAAQA,IAAIM,MAAJ,KAAe,CAACN,IAAIM,MAArB,GAA+BN,IAAIM,MAAnC,GAA4CT,KAAKG,GAAL,EAAUM,MAA7D;AACD;;AAED,SAASC,QAAT,CAAkBC,KAAlB,EAAyB;AACvB,SAAOA,KAAP;AACD;;AAED,SAASC,IAAT,CAAcT,GAAd,EAAmBU,QAAnB,EAA6BC,OAA7B,EAAsC;AACpC,MAAIC,CAAJ,EAAON,MAAP;AACA,MAAIN,OAAO,IAAX,EAAiB;AACjB,MAAIb,iBAAiBa,IAAIZ,OAAJ,KAAgBD,aAArC,EAAoD;AAClDa,QAAIZ,OAAJ,CAAYsB,QAAZ,EAAsBC,OAAtB;AACD,GAFD,MAEO,IAAIX,IAAIM,MAAJ,KAAe,CAACN,IAAIM,MAAxB,EAAgC;AACrC,SAAKM,IAAI,CAAJ,EAAON,SAASN,IAAIM,MAAzB,EAAiCM,IAAIN,MAArC,EAA6CM,GAA7C,EAAkD;AAChD,UAAIF,SAASR,IAAT,CAAcS,OAAd,EAAuBX,IAAIY,CAAJ,CAAvB,EAA+BA,CAA/B,EAAkCZ,GAAlC,MAA2CF,OAA/C,EAAwD;AACzD;AACF,GAJM,MAIA;AACL,QAAID,OAAOA,KAAKG,GAAL,CAAX;AACA,SAAKY,IAAI,CAAJ,EAAON,SAAST,KAAKS,MAA1B,EAAkCM,IAAIN,MAAtC,EAA8CM,GAA9C,EAAmD;AACjD,UAAIF,SAASR,IAAT,CAAcS,OAAd,EAAuBX,IAAIH,KAAKe,CAAL,CAAJ,CAAvB,EAAqCf,KAAKe,CAAL,CAArC,EAA8CZ,GAA9C,MAAuDF,OAA3D,EAAoE;AACrE;AACF;AACF;;AAED,SAASe,GAAT,CAAab,GAAb,EAAkBU,QAAlB,EAA4BC,OAA5B,EAAqC;AACnCD,eAAaA,WAAWH,QAAxB;AACA,MAAIO,SAAS,KAAb;AACA,MAAId,OAAO,IAAX,EAAiB,OAAOc,MAAP;AACjB,MAAIvB,cAAcS,IAAIR,IAAJ,KAAaD,UAA/B,EAA2C,OAAOS,IAAIR,IAAJ,CAASkB,QAAT,EAAmBC,OAAnB,CAAP;AAC3CF,OAAKT,GAAL,EAAU,UAASQ,KAAT,EAAgBO,KAAhB,EAAuBC,IAAvB,EAA6B;AACrC,QAAIF,WAAWA,SAASJ,SAASR,IAAT,CAAcS,OAAd,EAAuBH,KAAvB,EAA8BO,KAA9B,EAAqCC,IAArC,CAApB,CAAJ,EAAqE,OAAOlB,OAAP;AACtE,GAFD;AAGA,SAAO,CAAC,CAACgB,MAAT;AACD;;AAED,SAASG,QAAT,CAAkBjB,GAAlB,EAAuBkB,MAAvB,EAA+B;AAC7B,MAAIlB,OAAO,IAAX,EAAiB,OAAO,KAAP;AACjB,MAAIX,iBAAiBW,IAAIV,OAAJ,KAAgBD,aAArC,EAAoD,OAAOW,IAAIV,OAAJ,CAAY4B,MAAZ,KAAuB,CAAC,CAA/B;AACpD,SAAOL,IAAIb,GAAJ,EAAS,UAASQ,KAAT,EAAgB;AAC9B,WAAOA,UAAUU,MAAjB;AACD,GAFM,CAAP;AAGD;;AAED,SAASC,OAAT,CAAiBX,KAAjB,EAAwB;AACtB,OAAKA,KAAL,GAAaA,KAAb;AACD;AACDW,QAAQjC,SAAR,CAAkBa,GAAlB,GAAwB,UAASE,GAAT,EAAc;AACpC,SAAOF,IAAI,KAAKS,KAAT,EAAgBP,GAAhB,CAAP;AACD,CAFD;AAGAkB,QAAQjC,SAAR,CAAkB+B,QAAlB,GAA6B,UAASC,MAAT,EAAiB;AAC5C,SAAOD,SAAS,KAAKT,KAAd,EAAqBU,MAArB,CAAP;AACD,CAFD;AAGAC,QAAQjC,SAAR,CAAkBmB,IAAlB,GAAyB,YAAW;AAClC,SAAOA,KAAK,KAAKG,KAAV,CAAP;AACD,CAFD;;AAIA,SAASY,MAAT,CAAgBZ,KAAhB,EAAuB;AACrB;AACA,SAAQA,SAAS,QAAOA,KAAP,yCAAOA,KAAP,MAAgB,QAAzB,IAAqC,CAACvB,MAAMoC,OAAN,CAAcb,KAAd,CAAtC,IAA8Db,eAAeO,IAAf,CAAoBM,KAApB,EAA2B,aAA3B,CAA/D,GACHA,KADG,GAEH,IAAIW,OAAJ,CAAYX,KAAZ,CAFJ;AAGD;;AAEDc,OAAOC,OAAP,GAAiBH,MAAjB;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAASI,cAAT,CAAwBC,KAAxB,EAA+BC,cAA/B,EAA+C;AAC7C;AACA,MAAIC,KAAK,CAAT;AACA,OAAK,IAAIf,IAAIa,MAAMnB,MAAN,GAAe,CAA5B,EAA+BM,KAAK,CAApC,EAAuCA,GAAvC,EAA4C;AAC1C,QAAIgB,OAAOH,MAAMb,CAAN,CAAX;AACA,QAAIgB,SAAS,GAAb,EAAkB;AAChBH,YAAMI,MAAN,CAAajB,CAAb,EAAgB,CAAhB;AACD,KAFD,MAEO,IAAIgB,SAAS,IAAb,EAAmB;AACxBH,YAAMI,MAAN,CAAajB,CAAb,EAAgB,CAAhB;AACAe;AACD,KAHM,MAGA,IAAIA,EAAJ,EAAQ;AACbF,YAAMI,MAAN,CAAajB,CAAb,EAAgB,CAAhB;AACAe;AACD;AACF;;AAED;AACA,MAAID,cAAJ,EAAoB;AAClB,WAAOC,IAAP,EAAaA,EAAb,EAAiB;AACfF,YAAMK,OAAN,CAAc,IAAd;AACD;AACF;;AAED,SAAOL,KAAP;AACD;;AAED;AACA;AACA,IAAIM,cACE,iEADN;AAEA,IAAIC,YAAY,SAAZA,SAAY,CAASC,QAAT,EAAmB;AACjC,MAAInB,SAASiB,YAAYG,IAAZ,CAAiBD,QAAjB,CAAb;AACA,SAAO,CAACnB,OAAO,CAAP,KAAa,EAAd,EAAkBA,OAAO,CAAP,KAAa,EAA/B,EAAmCA,OAAO,CAAP,KAAa,EAAhD,EAAoDA,OAAO,CAAP,KAAa,EAAjE,CAAP;AACD,CAHD;;AAKA;AACA,SAASqB,OAAT,GAAmB;AACjB,MAAIC,eAAe,EAAnB;AAAA,MACIC,mBAAmB,KADvB;;AAGA,OAAK,IAAIzB,IAAI0B,UAAUhC,MAAV,GAAmB,CAAhC,EAAmCM,KAAK,CAAC,CAAN,IAAW,CAACyB,gBAA/C,EAAiEzB,GAAjE,EAAsE;AACpE;AACA,QAAI2B,OAAQ3B,KAAK,CAAN,GAAW0B,UAAU1B,CAAV,CAAX,GAA0B,GAArC;;AAEA;AACA,QAAI,OAAO2B,IAAP,KAAgB,QAAhB,IAA4B,CAACA,IAAjC,EAAuC;AACrC;AACD;;AAEDH,mBAAeG,OAAO,GAAP,GAAaH,YAA5B;AACAC,uBAAmBE,KAAKC,MAAL,CAAY,CAAZ,MAAmB,GAAtC;AACD;;AAED;AACA;;AAEA;AACAJ,iBAAeZ,eAAeY,aAAaK,KAAb,CAAmB,GAAnB,EAAwBC,MAAxB,CAA+B,UAASC,CAAT,EAAY;AACvE,WAAO,CAAC,CAACA,CAAT;AACD,GAF6B,CAAf,EAEX,CAACN,gBAFU,EAEQO,IAFR,CAEa,GAFb,CAAf;;AAIA,SAAQ,CAACP,mBAAmB,GAAnB,GAAyB,EAA1B,IAAgCD,YAAjC,IAAkD,GAAzD;AACD;;AAED;AACA,SAASS,SAAT,CAAmBN,IAAnB,EAAyB;AACvB,MAAIO,aAAaP,KAAKC,MAAL,CAAY,CAAZ,MAAmB,GAApC;AAAA,MACIO,gBAAgBR,KAAKS,MAAL,CAAY,CAAC,CAAb,MAAoB,GADxC;;AAGA;AACAT,SAAOf,eAAee,KAAKE,KAAL,CAAW,GAAX,EAAgBC,MAAhB,CAAuB,UAASC,CAAT,EAAY;AACvD,WAAO,CAAC,CAACA,CAAT;AACD,GAFqB,CAAf,EAEH,CAACG,UAFE,EAEUF,IAFV,CAEe,GAFf,CAAP;;AAIA,MAAI,CAACL,IAAD,IAAS,CAACO,UAAd,EAA0B;AACxBP,WAAO,GAAP;AACD;AACD;;;;;;AAMA,SAAO,CAACO,aAAa,GAAb,GAAmB,EAApB,IAA0BP,IAAjC;AACD;;AAED,SAASK,IAAT,GAAgB;AACd,MAAIK,QAAQhE,MAAMC,SAAN,CAAgBgE,KAAhB,CAAsBhD,IAAtB,CAA2BoC,SAA3B,EAAsC,CAAtC,CAAZ;AACA,SAAOO,UAAUI,MAAMP,MAAN,CAAa,UAASC,CAAT,EAAY5B,KAAZ,EAAmB;AAC/C,WAAO4B,KAAK,OAAOA,CAAP,KAAa,QAAzB;AACD,GAFgB,EAEdC,IAFc,CAET,GAFS,CAAV,CAAP;AAGD;;AAED;AACA,SAASO,QAAT,CAAkBC,IAAlB,EAAwBC,EAAxB,EAA4B;AAC1BD,SAAOjB,QAAQiB,IAAR,EAAcJ,MAAd,CAAqB,CAArB,CAAP;AACAK,OAAKlB,QAAQkB,EAAR,EAAYL,MAAZ,CAAmB,CAAnB,CAAL;;AAEA,WAASM,IAAT,CAAcC,GAAd,EAAmB;AACjB,QAAIC,QAAQ,CAAZ;AACA,WAAOA,QAAQD,IAAIjD,MAAnB,EAA2BkD,OAA3B,EAAoC;AAClC,UAAID,IAAIC,KAAJ,MAAe,EAAnB,EAAuB;AACxB;;AAED,QAAIC,MAAMF,IAAIjD,MAAJ,GAAa,CAAvB;AACA,WAAOmD,OAAO,CAAd,EAAiBA,KAAjB,EAAwB;AACtB,UAAIF,IAAIE,GAAJ,MAAa,EAAjB,EAAqB;AACtB;;AAED,QAAID,QAAQC,GAAZ,EAAiB,OAAO,EAAP;AACjB,WAAOF,IAAIL,KAAJ,CAAUM,KAAV,EAAiBC,MAAMD,KAAN,GAAc,CAA/B,CAAP;AACD;;AAED,MAAIE,YAAYJ,KAAKF,KAAKX,KAAL,CAAW,GAAX,CAAL,CAAhB;AACA,MAAIkB,UAAUL,KAAKD,GAAGZ,KAAH,CAAS,GAAT,CAAL,CAAd;;AAEA,MAAInC,SAASsD,KAAKC,GAAL,CAASH,UAAUpD,MAAnB,EAA2BqD,QAAQrD,MAAnC,CAAb;AACA,MAAIwD,kBAAkBxD,MAAtB;AACA,OAAK,IAAIM,IAAI,CAAb,EAAgBA,IAAIN,MAApB,EAA4BM,GAA5B,EAAiC;AAC/B,QAAI8C,UAAU9C,CAAV,MAAiB+C,QAAQ/C,CAAR,CAArB,EAAiC;AAC/BkD,wBAAkBlD,CAAlB;AACA;AACD;AACF;;AAED,MAAImD,cAAc,EAAlB;AACA,OAAK,IAAInD,IAAIkD,eAAb,EAA8BlD,IAAI8C,UAAUpD,MAA5C,EAAoDM,GAApD,EAAyD;AACvDmD,gBAAY3D,IAAZ,CAAiB,IAAjB;AACD;;AAED2D,gBAAcA,YAAYC,MAAZ,CAAmBL,QAAQT,KAAR,CAAcY,eAAd,CAAnB,CAAd;;AAEA,SAAOC,YAAYnB,IAAZ,CAAiB,GAAjB,CAAP;AACD;;AAED,SAASqB,OAAT,CAAiB1B,IAAjB,EAAuB;AACrB,MAAIzB,SAASkB,UAAUO,IAAV,CAAb;AAAA,MACI2B,OAAOpD,OAAO,CAAP,CADX;AAAA,MAEIqD,MAAMrD,OAAO,CAAP,CAFV;;AAIA,MAAI,CAACoD,IAAD,IAAS,CAACC,GAAd,EAAmB;AACjB;AACA,WAAO,GAAP;AACD;;AAED,MAAIA,GAAJ,EAAS;AACP;AACAA,UAAMA,IAAInB,MAAJ,CAAW,CAAX,EAAcmB,IAAI7D,MAAJ,GAAa,CAA3B,CAAN;AACD;;AAED,SAAO4D,OAAOC,GAAd;AACD;;AAED,SAASC,QAAT,CAAkB7B,IAAlB,EAAwB8B,GAAxB,EAA6B;AAC3B,MAAIC,IAAItC,UAAUO,IAAV,EAAgB,CAAhB,CAAR;AACA;AACA,MAAI8B,OAAOC,EAAEtB,MAAF,CAAS,CAAC,CAAD,GAAKqB,IAAI/D,MAAlB,MAA8B+D,GAAzC,EAA8C;AAC5CC,QAAIA,EAAEtB,MAAF,CAAS,CAAT,EAAYsB,EAAEhE,MAAF,GAAW+D,IAAI/D,MAA3B,CAAJ;AACD;AACD;AACA,SAAOgE,MAAM,EAAN,GAAW,GAAX,GAAiBA,CAAxB;AACD;;AAED,SAASC,OAAT,CAAiBhC,IAAjB,EAAuB;AACrB,SAAOP,UAAUO,IAAV,EAAgB,CAAhB,CAAP;AACD;;AAED,SAASO,UAAT,CAAoBP,IAApB,EAA0B;AACxB,MAAGA,KAAKC,MAAL,CAAY,CAAZ,MAAmB,GAAtB,EAA2B;AACzB,WAAO,IAAP;AACD;AACD,SAAO,KAAP;AACD;;AAED,SAASgC,MAAT,CAAgBjC,IAAhB,EAAsB;AACpB,MAAI,CAAC,KAAKA,IAAN,EAAYjD,OAAZ,CAAoB,IAApB,MAAkC,CAAC,CAAvC,EAA0C;AACxC,WAAO,IAAP;AACD;AACD,SAAO,KAAP;AACD;;AAED;AACA,SAASmF,WAAT,CAAqBlC,IAArB,EAA2B;AACzB,SAAOA,KAAKmC,OAAL,CAAa,MAAb,EAAqB,GAArB,CAAP;AACD;;AAED;AACA;AACA,SAASC,cAAT,CAAwBpC,IAAxB,EAA8B;AAC5BA,SAAOA,KAAKmC,OAAL,CAAa,MAAb,EAAqB,EAArB,CAAP;AACA,SAAOnC,SAAS,EAAT,GAAc,GAAd,GAAoBA,IAA3B;AACD;;AAED;AACA;;AAEAjB,OAAOC,OAAP,GAAiB;AACfsB,aAAWA,SADI;AAEfV,WAASA,OAFM;AAGfS,QAAMA,IAHS;AAIfO,YAAUA,QAJK;AAKfyB,OAAK,GALU;AAMfC,aAAW,GANI;AAOfZ,WAASA,OAPM;AAQfG,YAAUA,QARK;AASfG,WAASA,OATM;AAUfzB,cAAYA,UAVG;AAWf0B,UAAQA,MAXO;AAYf;AACAC,eAAaA,WAbE;AAcfE,kBAAgBA;AAdD,CAAjB;;AC/NA,SAASG,IAAT,GAAgB;AACd,SAAO,uCAAuCJ,OAAvC,CAA+C,OAA/C,EAAwD,UAASK,CAAT,EAAY;AACzE,QAAIC,IAAIpB,KAAKqB,MAAL,KAAc,EAAd,GAAiB,CAAzB;AAAA,QAA4BC,IAAIH,KAAK,GAAL,GAAWC,CAAX,GAAgBA,IAAE,GAAF,GAAM,GAAtD;AACA,WAAOE,EAAEC,QAAF,CAAW,EAAX,CAAP;AACD,GAHM,EAGJC,WAHI,EAAP;AAID;;AAED,SAASC,GAAT,GAAe,CAAE;;AAEjB;;;AAGA,SAASC,SAAT,CAAmBC,EAAnB,EAAuB;AACrB,MAAIC,QAAQ,EAAZ;AACA,MAAIC,MAAMF,GAAGjF,MAAb;AACA,OAAI,IAAIM,IAAI,CAAZ,EAAeA,IAAI6E,GAAnB,EAAwB7E,GAAxB,EAA6B;AAC3B4E,UAAM5E,CAAN,IAAW2E,GAAG3E,CAAH,CAAX;AACD;AACD,SAAO4E,KAAP;AACD;;AAEDlE,OAAOC,OAAP,GAAiB;AACfuD,QAAMA,IADS;AAEfQ,aAAWA,SAFI;AAGfD,OAAKA;AAHU,CAAjB;;ACrBA,IAAIK,SAAS,MAAb;AACA,IAAIC,UAAU,OAAd;AACA,IAAIC,WAAW,QAAf;AACA,IAAIC,cAAc,WAAlB;AACA,IAAIC,aAAa,UAAjB;AACA,IAAIC,WAAW,QAAf;AACA,IAAIC,eAAe,QAAnB;AACA,IAAIC,gBAAgB,SAApB;;AAEA3E,OAAOC,OAAP,GAAiB;AACf2E,oBAAkB,OADH;;AAGfC,mBAAiB,OAHF;;AAKfC,UAAQ,UALO;AAMfC,UAAQ,WANO;;AAQfC,gBAAc,GARC;AASfC,aAAW,IAAI,IAAJ,GAAW,IATP;AAUfC,aAAW,oBAVI;;AAYfC,kBAAgB,MAZD;AAafC,uBAAqB,WAbN;AAcfC,2BAAyB,SAdV;AAefC,kBAAgB,MAfD;;AAiBfC,WAAS,MAjBM;AAkBfC,WAAS,MAlBM;AAmBfC,WAAS,MAnBM;;AAqBfC,2BAAyB,KArBV,EAqBiB;AAChCC,4BAA0B,KAtBX,EAsBkB;AACjCC,oCAAkC,KAvBnB,EAuB0B;AACzCC,0BAAwB,KAxBT,EAwBgB;;AAE/BC,eAAa,EA1BE;;AA4BfC,oBAAkB,0BA5BH;AA6BfC,kBAAgB,kBA7BD;;AA+BfC,uBAAqB,GA/BN,EA+BW;;AAE1B;AACAC,aAAW,QAlCI;AAmCfC,cAAY,SAnCG;AAoCfC,cAAY,SApCG;AAqCfC,oBAAkB,kBArCH;;AAuCf;AACAjC,UAAQA,MAxCO;AAyCfC,WAASA,OAzCM;AA0CfC,YAAUA,QA1CK;AA2CfC,eAAaA,WA3CE;AA4CfC,cAAYA,UA5CG;AA6CfC,YAAUA,QA7CK;;AA+Cf6B,WAAS;AACP,SAAK,CAAClC,MAAD,CADE;AAEP,UAAM,CAACA,MAAD,EAASC,OAAT,CAFC;AAGP,SAAK,CAACA,OAAD,EAAUC,QAAV,EAAoBE,UAApB,CAHE;AAIP,UAAM,CAACH,OAAD,EAAUD,MAAV,EAAkBE,QAAlB,EAA4BE,UAA5B,CAJC;AAKP,UAAM,CAACH,OAAD,EAAUC,QAAV,EAAoBC,WAApB,EAAiCC,UAAjC,CALC;AAMP,WAAO,CAACH,OAAD,EAAUD,MAAV,EAAkBE,QAAlB,EAA4BC,WAA5B,EAAyCC,UAAzC,CANA;AAOP,SAAK,CAACH,OAAD,EAAUC,QAAV,EAAoBG,QAApB,CAPE;AAQP,UAAM,CAACJ,OAAD,EAAUD,MAAV,EAAkBE,QAAlB,EAA4BG,QAA5B,CARC;AASP,UAAM,CAACJ,OAAD,EAAUC,QAAV,EAAoBC,WAApB,EAAiCE,QAAjC,CATC;AAUP,WAAO,CAACJ,OAAD,EAAUD,MAAV,EAAkBE,QAAlB,EAA4BC,WAA5B,EAAyCE,QAAzC;AAVA,GA/CM;;AA4DfC,gBAAcA,YA5DC;AA6DfC,iBAAeA,aA7DA;;AA+Df4B,YAAU,OA/DK;AAgEfC,cAAY,SAhEG;AAiEfC,YAAU,OAjEK;;AAmEfC,iBAAe,sCAnEA;;AAqEf;AACAC,SAAO,CAtEQ;AAuEfC,UAAQ,CAvEO;AAwEfC,UAAQ,CAxEO;AAyEfC,oBAAkB,CAzEH;;AA2EfC,eAAa;AACXC,SAAK,MADM;AAEXC,UAAM;AAFK,GA3EE;;AAgFf;AACAC,eAAa;AACXC,cAAU,CADC;AAEXC,cAAU,CAFC;AAGXC,YAAQ,CAHG;AAIXC,YAAQ,KAJG;AAKX/B,aAAS,KALE;AAMXC,aAAS,KANE;AAOX+B,aAAS,IAPE;AAQXC,aAAS,KARE;AASXC,aAAS,IATE;AAUXhC,aAAS,KAVE;AAWXiC,cAAU,KAXC;AAYXC,aAAS,GAZE;AAaXC,YAAQ,IAbG;AAcXC,cAAU,MAdC;AAeXC,aAAS,IAfE;AAgBXrD,cAAU,CAhBC;AAiBXsD,iBAAa,OAjBF;AAkBXC,gBAAY,GAlBD;AAmBXC,YAAQ,GAnBG;AAoBXC,aAAS,OApBE;AAqBXC,eAAW,OArBA;AAsBXC,gBAAY,CAtBD;AAuBXC,aAAS,GAvBE;AAwBXC,aAAS,GAxBE;AAyBXC,aAAS,GAzBE;AA0BXC,aAAS,EA1BE;AA2BXC,aAAS,EA3BE;AA4BXC,aAAS,EA5BE;AA6BXC,aAAS,EA7BE;AA8BXC,aAAS,CA9BE;AA+BXC,aAAS,CA/BE;AAgCXC,aAAS,CAhCE;AAiCXC,aAAS,CAjCE;AAkCXC,aAAS,CAlCE;AAmCXC,UAAM,CAnCK;AAoCXC,UAAM,CApCK;AAqCXC,UAAM,CArCK;AAsCXC,UAAM,CAtCK;AAuCXC,yBAAqB,CAvCV;AAwCXC,mBAAe;AAxCJ;AAjFE,CAAjB;;ACTA,IAAIC,SAAS,EAAb;AACA;AACE;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAdF,EAeE,kCAfF;AAgBE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAvBF;AAwBE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAhCF,EAiCE,4CAjCF;AAkCE;AACA;AACA;AACA;AACA;AACA,qCAvCF;AAwCE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BApDF;AAqDE;AACA;AACA,kCAvDF,EAwDE,8CAxDF;AAyDE;AACA,kCA1DF;AA2DE;AACA,kBA5DF;AA6DE;AACA;AACA;AACA;;AAEA;;;AAGA,8BArEF,EAsEE,qFAtEF,EAuEE,uCAvEF,EAyEEzL,OAzEF,CAyEU,UAAS0L,CAAT,EAAY;AACpBA,MAAIA,EAAErI,KAAF,CAAQ,GAAR,CAAJ;AACA,MAAIsI,QAAQ,CAACD,EAAE,CAAF,CAAb;AACA,MAAIE,UAAUF,EAAE,CAAF,CAAd;AACA,MAAIG,iBAAiBH,EAAE,CAAF,CAArB;;AAEA,WAASI,UAAT,CAAoBC,GAApB,EAAyB5I,IAAzB,EAA+B;AAC7B6I,UAAMlL,IAAN,CAAW,IAAX;;AAEA,SAAKmL,IAAL,GAAYL,OAAZ;AACA,SAAKM,IAAL,GAAYN,OAAZ;AACA,SAAKD,KAAL,GAAaA,KAAb;AACA,SAAKQ,OAAL,GAAeJ,OAAOF,cAAtB;AACA,QAAG1I,IAAH,EAAS;AACP,WAAKA,IAAL,GAAYA,IAAZ;AACD;AACD,SAAKiJ,KAAL,GAAc,IAAIJ,KAAJ,CAAU,KAAKG,OAAf,CAAD,CAA0BC,KAAvC;AACD;AACDN,aAAWhM,SAAX,GAAuBQ,OAAO+L,MAAP,CAAcL,MAAMlM,SAApB,CAAvB;AACAgM,aAAWhM,SAAX,CAAqBwM,WAArB,GAAmCR,UAAnC;AACAA,aAAWhM,SAAX,CAAqBiG,QAArB,GAAgC,YAAW;AACzC,QAAIwG,WAAW,KAAKpJ,IAAL,GAAa,SAAS,KAAKA,IAAd,GAAqB,IAAlC,GAA0C,EAAzD;AACA,WAAO,KAAK8I,IAAL,GAAY,IAAZ,GAAmB,KAAKE,OAAxB,GAAkCI,QAAzC;AACD,GAHD;;AAKA;AACAd,SAAOG,OAAP,IAAkBH,OAAOE,KAAP,IAAgBG,UAAlC;AACD,CApGD;;AAsGA5J,OAAOC,OAAP,GAAiBsJ,MAAjB;;ACvGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpFA;AACA;AACA;AACA;AACA;AACA;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC7vDA,SAASe,WAAT,CAAsBC,OAAtB,EAA+BC,QAA/B,EAAyCC,OAAzC,EAAkD;;AAEhD;AACA;AACA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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC35BA,IAAI2F,OAAOjJ,QAAQ,YAAR,CAAX;AACA,IAAIC,SAASD,QAAQ,cAAR,CAAb;AACA,IAAI8I,cAAc9I,QAAQ,kBAAR,CAAlB;AACA,IAAI0H,QAAQ1H,QAAQ,oBAAR,CAAZ;A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","file":"filer.map","sourceRoot":"../src","sourcesContent":["// Cherry-picked bits of underscore.js, lodash.js\n\n/**\n * Lo-Dash 2.4.0 \n * Copyright 2012-2013 The Dojo Foundation \n * Based on Underscore.js 1.5.2 \n * Copyright 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\nvar ArrayProto = Array.prototype;\nvar nativeForEach = ArrayProto.forEach;\nvar nativeIndexOf = ArrayProto.indexOf;\nvar nativeSome = ArrayProto.some;\n\nvar ObjProto = Object.prototype;\nvar hasOwnProperty = ObjProto.hasOwnProperty;\nvar nativeKeys = Object.keys;\n\nvar breaker = {};\n\nfunction has(obj, key) {\n return hasOwnProperty.call(obj, key);\n}\n\nvar keys = nativeKeys || function(obj) {\n if (obj !== Object(obj)) throw new TypeError('Invalid object');\n var keys = [];\n for (var key in obj) if (has(obj, key)) keys.push(key);\n return keys;\n};\n\nfunction size(obj) {\n if (obj == null) return 0;\n return (obj.length === +obj.length) ? obj.length : keys(obj).length;\n}\n\nfunction identity(value) {\n return value;\n}\n\nfunction each(obj, iterator, context) {\n var i, length;\n if (obj == null) return;\n if (nativeForEach && obj.forEach === nativeForEach) {\n obj.forEach(iterator, context);\n } else if (obj.length === +obj.length) {\n for (i = 0, length = obj.length; i < length; i++) {\n if (iterator.call(context, obj[i], i, obj) === breaker) return;\n }\n } else {\n var keys = keys(obj);\n for (i = 0, length = keys.length; i < length; i++) {\n if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return;\n }\n }\n};\n\nfunction any(obj, iterator, context) {\n iterator || (iterator = identity);\n var result = false;\n if (obj == null) return result;\n if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context);\n each(obj, function(value, index, list) {\n if (result || (result = iterator.call(context, value, index, list))) return breaker;\n });\n return !!result;\n};\n\nfunction contains(obj, target) {\n if (obj == null) return false;\n if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;\n return any(obj, function(value) {\n return value === target;\n });\n};\n\nfunction Wrapped(value) {\n this.value = value;\n}\nWrapped.prototype.has = function(key) {\n return has(this.value, key);\n};\nWrapped.prototype.contains = function(target) {\n return contains(this.value, target);\n};\nWrapped.prototype.size = function() {\n return size(this.value);\n};\n\nfunction nodash(value) {\n // don't wrap if already wrapped, even if wrapped by a different `lodash` constructor\n return (value && typeof value == 'object' && !Array.isArray(value) && hasOwnProperty.call(value, '__wrapped__'))\n ? value\n : new Wrapped(value);\n}\n\nmodule.exports = nodash;\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// Based on https://github.com/joyent/node/blob/41e53e557992a7d552a8e23de035f9463da25c99/lib/path.js\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^(\\/?)([\\s\\S]+\\/(?!$)|\\/)?((?:\\.{1,2}$|[\\s\\S]+?)?(\\.[^.\\/]*)?)$/;\nvar splitPath = function(filename) {\n var result = splitPathRe.exec(filename);\n return [result[1] || '', result[2] || '', result[3] || '', result[4] || ''];\n};\n\n// path.resolve([from ...], to)\nfunction resolve() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n // XXXfiler: we don't have process.cwd() so we use '/' as a fallback\n var path = (i >= 0) ? arguments[i] : '/';\n\n // Skip empty and invalid entries\n if (typeof path !== 'string' || !path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(resolvedPath.split('/').filter(function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n}\n\n// path.normalize(path)\nfunction normalize(path) {\n var isAbsolute = path.charAt(0) === '/',\n trailingSlash = path.substr(-1) === '/';\n\n // Normalize the path\n path = normalizeArray(path.split('/').filter(function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n /*\n if (path && trailingSlash) {\n path += '/';\n }\n */\n\n return (isAbsolute ? '/' : '') + path;\n}\n\nfunction join() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return normalize(paths.filter(function(p, index) {\n return p && typeof p === 'string';\n }).join('/'));\n}\n\n// path.relative(from, to)\nfunction relative(from, to) {\n from = resolve(from).substr(1);\n to = resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n}\n\nfunction dirname(path) {\n var result = splitPath(path),\n root = result[0],\n dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.substr(0, dir.length - 1);\n }\n\n return root + dir;\n}\n\nfunction basename(path, ext) {\n var f = splitPath(path)[2];\n // TODO: make this comparison case-insensitive on windows?\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n // XXXfiler: node.js just does `return f`\n return f === \"\" ? \"/\" : f;\n}\n\nfunction extname(path) {\n return splitPath(path)[3];\n}\n\nfunction isAbsolute(path) {\n if(path.charAt(0) === '/') {\n return true;\n }\n return false;\n}\n\nfunction isNull(path) {\n if (('' + path).indexOf('\\u0000') !== -1) {\n return true;\n }\n return false;\n}\n\n// Make sure we don't double-add a trailing slash (e.g., '/' -> '//')\nfunction addTrailing(path) {\n return path.replace(/\\/*$/, '/');\n}\n\n// Deal with multiple slashes at the end, one, or none\n// and make sure we don't return the empty string.\nfunction removeTrailing(path) {\n path = path.replace(/\\/*$/, '');\n return path === '' ? '/' : path;\n}\n\n// XXXfiler: we don't support path.exists() or path.existsSync(), which\n// are deprecated, and need a FileSystem instance to work. Use fs.stat().\n\nmodule.exports = {\n normalize: normalize,\n resolve: resolve,\n join: join,\n relative: relative,\n sep: '/',\n delimiter: ':',\n dirname: dirname,\n basename: basename,\n extname: extname,\n isAbsolute: isAbsolute,\n isNull: isNull,\n // Non-node but useful...\n addTrailing: addTrailing,\n removeTrailing: removeTrailing\n};\n","function guid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);\n return v.toString(16);\n }).toUpperCase();\n}\n\nfunction nop() {}\n\n/**\n * Convert a Uint8Array to a regular array\n */\nfunction u8toArray(u8) {\n var array = [];\n var len = u8.length;\n for(var i = 0; i < len; i++) {\n array[i] = u8[i];\n }\n return array;\n}\n\nmodule.exports = {\n guid: guid,\n u8toArray: u8toArray,\n nop: nop\n};\n","var O_READ = 'READ';\nvar O_WRITE = 'WRITE';\nvar O_CREATE = 'CREATE';\nvar O_EXCLUSIVE = 'EXCLUSIVE';\nvar O_TRUNCATE = 'TRUNCATE';\nvar O_APPEND = 'APPEND';\nvar XATTR_CREATE = 'CREATE';\nvar XATTR_REPLACE = 'REPLACE';\n\nmodule.exports = {\n FILE_SYSTEM_NAME: 'local',\n\n FILE_STORE_NAME: 'files',\n\n IDB_RO: 'readonly',\n IDB_RW: 'readwrite',\n\n WSQL_VERSION: \"1\",\n WSQL_SIZE: 5 * 1024 * 1024,\n WSQL_DESC: \"FileSystem Storage\",\n\n NODE_TYPE_FILE: 'FILE',\n NODE_TYPE_DIRECTORY: 'DIRECTORY',\n NODE_TYPE_SYMBOLIC_LINK: 'SYMLINK',\n NODE_TYPE_META: 'META',\n\n S_IFREG: 0x8000,\n S_IFDIR: 0x4000,\n S_IFLNK: 0xA000,\n\n DEFAULT_DIR_PERMISSIONS: 0x1ED, // 755\n DEFAULT_FILE_PERMISSIONS: 0x1A4, // 644\n FULL_READ_WRITE_EXEC_PERMISSIONS: 0x1FF, // 777\n READ_WRITE_PERMISSIONS: 0x1B6, /// 666\n \n SYMLOOP_MAX: 10,\n\n BINARY_MIME_TYPE: 'application/octet-stream',\n JSON_MIME_TYPE: 'application/json',\n\n ROOT_DIRECTORY_NAME: '/', // basename(normalize(path))\n\n // FS Mount Flags\n FS_FORMAT: 'FORMAT',\n FS_NOCTIME: 'NOCTIME',\n FS_NOMTIME: 'NOMTIME',\n FS_NODUPEIDCHECK: 'FS_NODUPEIDCHECK',\n\n // FS File Open Flags\n O_READ: O_READ,\n O_WRITE: O_WRITE,\n O_CREATE: O_CREATE,\n O_EXCLUSIVE: O_EXCLUSIVE,\n O_TRUNCATE: O_TRUNCATE,\n O_APPEND: O_APPEND,\n\n O_FLAGS: {\n 'r': [O_READ],\n 'r+': [O_READ, O_WRITE],\n 'w': [O_WRITE, O_CREATE, O_TRUNCATE],\n 'w+': [O_WRITE, O_READ, O_CREATE, O_TRUNCATE],\n 'wx': [O_WRITE, O_CREATE, O_EXCLUSIVE, O_TRUNCATE],\n 'wx+': [O_WRITE, O_READ, O_CREATE, O_EXCLUSIVE, O_TRUNCATE],\n 'a': [O_WRITE, O_CREATE, O_APPEND],\n 'a+': [O_WRITE, O_READ, O_CREATE, O_APPEND],\n 'ax': [O_WRITE, O_CREATE, O_EXCLUSIVE, O_APPEND],\n 'ax+': [O_WRITE, O_READ, O_CREATE, O_EXCLUSIVE, O_APPEND]\n },\n\n XATTR_CREATE: XATTR_CREATE,\n XATTR_REPLACE: XATTR_REPLACE,\n\n FS_READY: 'READY',\n FS_PENDING: 'PENDING',\n FS_ERROR: 'ERROR',\n\n SUPER_NODE_ID: '00000000-0000-0000-0000-000000000000',\n\n // Reserved File Descriptors for streams\n STDIN: 0,\n STDOUT: 1,\n STDERR: 2,\n FIRST_DESCRIPTOR: 3,\n\n ENVIRONMENT: {\n TMP: '/tmp',\n PATH: ''\n },\n\n // Duplicate Node's fs.constants\n fsConstants: {\n O_RDONLY: 0,\n O_WRONLY: 1,\n O_RDWR: 2,\n S_IFMT: 61440,\n S_IFREG: 32768,\n S_IFDIR: 16384,\n S_IFCHR: 8192,\n S_IFBLK: 24576,\n S_IFIFO: 4096,\n S_IFLNK: 40960,\n S_IFSOCK: 49152,\n O_CREAT: 512,\n O_EXCL: 2048,\n O_NOCTTY: 131072,\n O_TRUNC: 1024,\n O_APPEND: 8,\n O_DIRECTORY: 1048576,\n O_NOFOLLOW: 256,\n O_SYNC: 128,\n O_DSYNC: 4194304,\n O_SYMLINK: 2097152,\n O_NONBLOCK: 4,\n S_IRWXU: 448,\n S_IRUSR: 256,\n S_IWUSR: 128,\n S_IXUSR: 64,\n S_IRWXG: 56,\n S_IRGRP: 32,\n S_IWGRP: 16,\n S_IXGRP: 8,\n S_IRWXO: 7,\n S_IROTH: 4,\n S_IWOTH: 2,\n S_IXOTH: 1,\n F_OK: 0,\n R_OK: 4,\n W_OK: 2,\n X_OK: 1,\n UV_FS_COPYFILE_EXCL: 1,\n COPYFILE_EXCL: 1\n }\n};\n","var errors = {};\n[\n /**\n * node.js errors - we only use some of these, add as needed.\n */\n //'-1:UNKNOWN:unknown error',\n //'0:OK:success',\n //'1:EOF:end of file',\n //'2:EADDRINFO:getaddrinfo error',\n //'3:EACCES:permission denied',\n //'4:EAGAIN:resource temporarily unavailable',\n //'5:EADDRINUSE:address already in use',\n //'6:EADDRNOTAVAIL:address not available',\n //'7:EAFNOSUPPORT:address family not supported',\n //'8:EALREADY:connection already in progress',\n '9:EBADF:bad file descriptor',\n '10:EBUSY:resource busy or locked',\n //'11:ECONNABORTED:software caused connection abort',\n //'12:ECONNREFUSED:connection refused',\n //'13:ECONNRESET:connection reset by peer',\n //'14:EDESTADDRREQ:destination address required',\n //'15:EFAULT:bad address in system call argument',\n //'16:EHOSTUNREACH:host is unreachable',\n //'17:EINTR:interrupted system call',\n '18:EINVAL:invalid argument',\n //'19:EISCONN:socket is already connected',\n //'20:EMFILE:too many open files',\n //'21:EMSGSIZE:message too long',\n //'22:ENETDOWN:network is down',\n //'23:ENETUNREACH:network is unreachable',\n //'24:ENFILE:file table overflow',\n //'25:ENOBUFS:no buffer space available',\n //'26:ENOMEM:not enough memory',\n '27:ENOTDIR:not a directory',\n '28:EISDIR:illegal operation on a directory',\n //'29:ENONET:machine is not on the network',\n // errno 30 skipped, as per https://github.com/rvagg/node-errno/blob/master/errno.js\n //'31:ENOTCONN:socket is not connected',\n //'32:ENOTSOCK:socket operation on non-socket',\n //'33:ENOTSUP:operation not supported on socket',\n '34:ENOENT:no such file or directory',\n //'35:ENOSYS:function not implemented',\n //'36:EPIPE:broken pipe',\n //'37:EPROTO:protocol error',\n //'38:EPROTONOSUPPORT:protocol not supported',\n //'39:EPROTOTYPE:protocol wrong type for socket',\n //'40:ETIMEDOUT:connection timed out',\n //'41:ECHARSET:invalid Unicode character',\n //'42:EAIFAMNOSUPPORT:address family for hostname not supported',\n // errno 43 skipped, as per https://github.com/rvagg/node-errno/blob/master/errno.js\n //'44:EAISERVICE:servname not supported for ai_socktype',\n //'45:EAISOCKTYPE:ai_socktype not supported',\n //'46:ESHUTDOWN:cannot send after transport endpoint shutdown',\n '47:EEXIST:file already exists',\n //'48:ESRCH:no such process',\n //'49:ENAMETOOLONG:name too long',\n '50:EPERM:operation not permitted',\n '51:ELOOP:too many symbolic links encountered',\n //'52:EXDEV:cross-device link not permitted',\n '53:ENOTEMPTY:directory not empty',\n //'54:ENOSPC:no space left on device',\n '55:EIO:i/o error',\n //'56:EROFS:read-only file system',\n //'57:ENODEV:no such device',\n //'58:ESPIPE:invalid seek',\n //'59:ECANCELED:operation canceled',\n\n /**\n * Filer specific errors\n */\n '1000:ENOTMOUNTED:not mounted',\n '1001:EFILESYSTEMERROR:missing super node, use \\'FORMAT\\' flag to format filesystem.',\n '1002:ENOATTR:attribute does not exist'\n\n].forEach(function(e) {\n e = e.split(':');\n var errno = +e[0];\n var errName = e[1];\n var defaultMessage = e[2];\n\n function FilerError(msg, path) {\n Error.call(this);\n\n this.name = errName;\n this.code = errName;\n this.errno = errno;\n this.message = msg || defaultMessage;\n if(path) {\n this.path = path;\n }\n this.stack = (new Error(this.message)).stack;\n }\n FilerError.prototype = Object.create(Error.prototype);\n FilerError.prototype.constructor = FilerError;\n FilerError.prototype.toString = function() {\n var pathInfo = this.path ? (', \\'' + this.path + '\\'') : '';\n return this.name + ': ' + this.message + pathInfo;\n };\n\n // We expose the error as both Errors.EINVAL and Errors[18]\n errors[errName] = errors[errno] = FilerError;\n});\n\nmodule.exports = errors;\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","exports.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","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object 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 * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\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 if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\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(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, 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(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, 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(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\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(null, 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(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.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 that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().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)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\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 (!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 (!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 (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (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 case undefined:\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) return utf8ToBytes(string).length // assume utf8\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// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\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 | 0\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.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 if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\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 (isNaN(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 (Buffer.TYPED_ARRAY_SUPPORT &&\n 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 // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\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 (isNaN(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 // legacy write(string, encoding, offset, length) - remove in v0.13\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\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\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 if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\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 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 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 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 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 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 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 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 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 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 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 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 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 if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\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 if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\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 if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\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 if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\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 if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\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 (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\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 if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\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 if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\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 if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\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 if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\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 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 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 (!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('sourceStart out of bounds')\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 var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\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 (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\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 } 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 : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\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 strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).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 stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\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\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","function FilerBuffer (subject, encoding, nonZero) {\n\n // Automatically turn ArrayBuffer into Uint8Array so that underlying\n // Buffer code doesn't just throw away and ignore ArrayBuffer data.\n if (subject instanceof ArrayBuffer) {\n subject = new Uint8Array(subject);\n }\n\n return new Buffer(subject, encoding, nonZero);\n};\n\n// Inherit prototype from Buffer\nFilerBuffer.prototype = Object.create(Buffer.prototype);\nFilerBuffer.prototype.constructor = FilerBuffer;\n\n// Also copy static methods onto FilerBuffer ctor\nObject.keys(Buffer).forEach(function (p) {\n if (Buffer.hasOwnProperty(p)) {\n FilerBuffer[p] = Buffer[p];\n }\n});\n\nmodule.exports = FilerBuffer;\n","var FILE_SYSTEM_NAME = require('../constants.js').FILE_SYSTEM_NAME;\nvar FILE_STORE_NAME = require('../constants.js').FILE_STORE_NAME;\nvar IDB_RW = require('../constants.js').IDB_RW;\nvar IDB_RO = require('../constants.js').IDB_RO;\nvar Errors = require('../errors.js');\nvar FilerBuffer = require('../buffer.js');\n\nvar indexedDB = global.indexedDB ||\n global.mozIndexedDB ||\n global.webkitIndexedDB ||\n global.msIndexedDB;\n\nfunction IndexedDBContext(db, mode) {\n this.db = db;\n this.mode = mode;\n}\n\nIndexedDBContext.prototype._getObjectStore = function() {\n if(this.objectStore) {\n return this.objectStore;\n }\n\n var transaction = this.db.transaction(FILE_STORE_NAME, this.mode);\n this.objectStore = transaction.objectStore(FILE_STORE_NAME);\n return this.objectStore;\n};\n\nIndexedDBContext.prototype.clear = function(callback) {\n try {\n var objectStore = this._getObjectStore();\n var request = objectStore.clear();\n request.onsuccess = function() {\n callback();\n };\n request.onerror = function(event) {\n event.preventDefault();\n callback(event.error);\n };\n } catch(err) {\n callback(err);\n }\n};\n\nIndexedDBContext.prototype._get = function(key, callback) {\n try {\n var objectStore = this._getObjectStore();\n var request = objectStore.get(key);\n request.onsuccess = function onsuccess(event) {\n var result = event.target.result;\n callback(null, result);\n };\n request.onerror = function(event) {\n event.preventDefault();\n callback(event.error);\n };\n } catch(err) {\n callback(err);\n }\n};\nIndexedDBContext.prototype.getObject = function(key, callback) {\n this._get(key, callback);\n};\nIndexedDBContext.prototype.getBuffer = function(key, callback) {\n this._get(key, function(err, arrayBuffer) {\n if(err) {\n return callback(err);\n }\n callback(null, new FilerBuffer(arrayBuffer));\n });\n};\n\nIndexedDBContext.prototype._put = function(key, value, callback) {\n try {\n var objectStore = this._getObjectStore();\n var request = objectStore.put(value, key);\n request.onsuccess = function onsuccess(event) {\n var result = event.target.result;\n callback(null, result);\n };\n request.onerror = function(event) {\n event.preventDefault();\n callback(event.error);\n };\n } catch(err) {\n callback(err);\n }\n};\nIndexedDBContext.prototype.putObject = function(key, value, callback) {\n this._put(key, value, callback);\n};\nIndexedDBContext.prototype.putBuffer = function(key, uint8BackedBuffer, callback) {\n var buf = uint8BackedBuffer.buffer;\n this._put(key, buf, callback);\n};\n\nIndexedDBContext.prototype.delete = function(key, callback) {\n try {\n var objectStore = this._getObjectStore();\n var request = objectStore.delete(key);\n request.onsuccess = function onsuccess(event) {\n var result = event.target.result;\n callback(null, result);\n };\n request.onerror = function(event) {\n event.preventDefault();\n callback(event.error);\n };\n } catch(err) {\n callback(err);\n }\n};\n\n\nfunction IndexedDB(name) {\n this.name = name || FILE_SYSTEM_NAME;\n this.db = null;\n}\nIndexedDB.isSupported = function() {\n return !!indexedDB;\n};\n\nIndexedDB.prototype.open = function(callback) {\n var that = this;\n\n // Bail if we already have a db open\n if(that.db) {\n return callback();\n }\n\n try {\n // NOTE: we're not using versioned databases.\n var openRequest = indexedDB.open(that.name);\n\n // If the db doesn't exist, we'll create it\n openRequest.onupgradeneeded = function onupgradeneeded(event) {\n var db = event.target.result;\n\n if(db.objectStoreNames.contains(FILE_STORE_NAME)) {\n db.deleteObjectStore(FILE_STORE_NAME);\n }\n db.createObjectStore(FILE_STORE_NAME);\n };\n\n openRequest.onsuccess = function onsuccess(event) {\n that.db = event.target.result;\n callback();\n };\n openRequest.onerror = function onerror(event) {\n event.preventDefault();\n callback(event.error);\n };\n } catch(err) {\n callback(err);\n }\n};\n\nIndexedDB.prototype.getReadOnlyContext = function() {\n return new IndexedDBContext(this.db, IDB_RO);\n};\nIndexedDB.prototype.getReadWriteContext = function() {\n return new IndexedDBContext(this.db, IDB_RW);\n};\n\nmodule.exports = IndexedDB;\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","var FILE_SYSTEM_NAME = require('../constants.js').FILE_SYSTEM_NAME;\nvar FILE_STORE_NAME = require('../constants.js').FILE_STORE_NAME;\nvar WSQL_VERSION = require('../constants.js').WSQL_VERSION;\nvar WSQL_SIZE = require('../constants.js').WSQL_SIZE;\nvar WSQL_DESC = require('../constants.js').WSQL_DESC;\nvar Errors = require('../errors.js');\nvar FilerBuffer = require('../buffer.js');\nvar base64ArrayBuffer = require('base64-arraybuffer');\n\nfunction WebSQLContext(db, isReadOnly) {\n var that = this;\n this.getTransaction = function(callback) {\n if(that.transaction) {\n callback(that.transaction);\n return;\n }\n // Either do readTransaction() (read-only) or transaction() (read/write)\n db[isReadOnly ? 'readTransaction' : 'transaction'](function(transaction) {\n that.transaction = transaction;\n callback(transaction);\n });\n };\n}\n\nWebSQLContext.prototype.clear = function(callback) {\n function onError(transaction, error) {\n callback(error);\n }\n function onSuccess(transaction, result) {\n callback(null);\n }\n this.getTransaction(function(transaction) {\n transaction.executeSql(\"DELETE FROM \" + FILE_STORE_NAME + \";\",\n [], onSuccess, onError);\n });\n};\n\nfunction _get(getTransaction, key, callback) {\n function onSuccess(transaction, result) {\n // If the key isn't found, return null\n var value = result.rows.length === 0 ? null : result.rows.item(0).data;\n callback(null, value);\n }\n function onError(transaction, error) {\n callback(error);\n }\n getTransaction(function(transaction) {\n transaction.executeSql(\"SELECT data FROM \" + FILE_STORE_NAME + \" WHERE id = ? LIMIT 1;\",\n [key], onSuccess, onError);\n });\n}\nWebSQLContext.prototype.getObject = function(key, callback) {\n _get(this.getTransaction, key, function(err, result) {\n if(err) {\n return callback(err);\n }\n\n try {\n if(result) {\n result = JSON.parse(result);\n }\n } catch(e) {\n return callback(e);\n }\n\n callback(null, result);\n });\n};\nWebSQLContext.prototype.getBuffer = function(key, callback) {\n _get(this.getTransaction, key, function(err, result) {\n if(err) {\n return callback(err);\n }\n\n // Deal with zero-length ArrayBuffers, which will be encoded as ''\n if(result || result === '') {\n var arrayBuffer = base64ArrayBuffer.decode(result);\n result = new FilerBuffer(arrayBuffer);\n }\n\n callback(null, result);\n });\n};\n\nfunction _put(getTransaction, key, value, callback) {\n function onSuccess(transaction, result) {\n callback(null);\n }\n function onError(transaction, error) {\n callback(error);\n }\n getTransaction(function(transaction) {\n transaction.executeSql(\"INSERT OR REPLACE INTO \" + FILE_STORE_NAME + \" (id, data) VALUES (?, ?);\",\n [key, value], onSuccess, onError);\n });\n}\nWebSQLContext.prototype.putObject = function(key, value, callback) {\n var json = JSON.stringify(value);\n _put(this.getTransaction, key, json, callback);\n};\nWebSQLContext.prototype.putBuffer = function(key, uint8BackedBuffer, callback) {\n var base64 = base64ArrayBuffer.encode(uint8BackedBuffer.buffer);\n _put(this.getTransaction, key, base64, callback);\n};\n\nWebSQLContext.prototype.delete = function(key, callback) {\n function onSuccess(transaction, result) {\n callback(null);\n }\n function onError(transaction, error) {\n callback(error);\n }\n this.getTransaction(function(transaction) {\n transaction.executeSql(\"DELETE FROM \" + FILE_STORE_NAME + \" WHERE id = ?;\",\n [key], onSuccess, onError);\n });\n};\n\n\nfunction WebSQL(name) {\n this.name = name || FILE_SYSTEM_NAME;\n this.db = null;\n}\nWebSQL.isSupported = function() {\n return !!global.openDatabase;\n};\n\nWebSQL.prototype.open = function(callback) {\n var that = this;\n\n // Bail if we already have a db open\n if(that.db) {\n return callback();\n }\n\n var db = global.openDatabase(that.name, WSQL_VERSION, WSQL_DESC, WSQL_SIZE);\n if(!db) {\n callback(\"[WebSQL] Unable to open database.\");\n return;\n }\n\n function onError(transaction, error) {\n if (error.code === 5) {\n callback(new Errors.EINVAL('WebSQL cannot be accessed. If private browsing is enabled, disable it.'));\n }\n callback(error);\n }\n function onSuccess(transaction, result) {\n that.db = db;\n callback();\n }\n\n // Create the table and index we'll need to store the fs data.\n db.transaction(function(transaction) {\n function createIndex(transaction) {\n transaction.executeSql(\"CREATE INDEX IF NOT EXISTS idx_\" + FILE_STORE_NAME + \"_id\" +\n \" on \" + FILE_STORE_NAME + \" (id);\",\n [], onSuccess, onError);\n }\n transaction.executeSql(\"CREATE TABLE IF NOT EXISTS \" + FILE_STORE_NAME + \" (id unique, data TEXT);\",\n [], createIndex, onError);\n });\n};\nWebSQL.prototype.getReadOnlyContext = function() {\n return new WebSQLContext(this.db, true);\n};\nWebSQL.prototype.getReadWriteContext = function() {\n return new WebSQLContext(this.db, false);\n};\n\nmodule.exports = WebSQL;\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","/*global setImmediate: false, setTimeout: false, console: false */\n\n/**\n * async.js shim, based on https://raw.github.com/caolan/async/master/lib/async.js Feb 18, 2014\n * Used under MIT - https://github.com/caolan/async/blob/master/LICENSE\n */\n\n(function () {\n\n var async = {};\n\n // async.js functions used in Filer\n\n //// nextTick implementation with browser-compatible fallback ////\n if (typeof process === 'undefined' || !(process.nextTick)) {\n if (typeof setImmediate === 'function') {\n async.nextTick = function (fn) {\n // not a direct alias for IE10 compatibility\n setImmediate(fn);\n };\n async.setImmediate = async.nextTick;\n }\n else {\n async.nextTick = function (fn) {\n setTimeout(fn, 0);\n };\n async.setImmediate = async.nextTick;\n }\n }\n else {\n async.nextTick = process.nextTick;\n if (typeof setImmediate !== 'undefined') {\n async.setImmediate = function (fn) {\n // not a direct alias for IE10 compatibility\n setImmediate(fn);\n };\n }\n else {\n async.setImmediate = async.nextTick;\n }\n }\n\n async.eachSeries = function (arr, iterator, callback) {\n callback = callback || function () {};\n if (!arr.length) {\n return callback();\n }\n var completed = 0;\n var iterate = function () {\n iterator(arr[completed], function (err) {\n if (err) {\n callback(err);\n callback = function () {};\n }\n else {\n completed += 1;\n if (completed >= arr.length) {\n callback();\n }\n else {\n iterate();\n }\n }\n });\n };\n iterate();\n };\n async.forEachSeries = async.eachSeries;\n\n // AMD / RequireJS\n if (typeof define !== 'undefined' && define.amd) {\n define([], function () {\n return async;\n });\n }\n // Node.js\n else if (typeof module !== 'undefined' && module.exports) {\n module.exports = async;\n }\n // included directly via