{"version":3,"sources":["webpack:///sync-db-browser/webpack/universalModuleDefinition","webpack:///sync-db-browser/sync-db-browser.min.js","webpack:///sync-db-browser/webpack/bootstrap ea703daf1c85073b66cd","webpack:///sync-db-browser/./src/index.js","webpack:///sync-db-browser/./~/sync-db/lib/index.js","webpack:///sync-db-browser/./~/sync-db/lib/sync.js","webpack:///sync-db-browser/./~/events/events.js","webpack:///sync-db-browser/./~/sync-db/lib/superagent.js","webpack:///sync-db-browser/./~/superagent-promise/index.js","webpack:///sync-db-browser/./~/superagent/lib/client.js","webpack:///sync-db-browser/./~/component-emitter/index.js","webpack:///sync-db-browser/./~/reduce-component/index.js","webpack:///sync-db-browser/./~/debug/browser.js","webpack:///sync-db-browser/./~/debug/debug.js","webpack:///sync-db-browser/./~/ms/index.js","webpack:///sync-db-browser/./~/sync-db-idb/src/index.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","SyncDB","IDBDriver","createSync","name","url","driver","TypeError","undefined","RangeError","_typeof","obj","Symbol","constructor","_classCallCheck","instance","Constructor","defaultOnGet","dbObject","value","_createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","protoProps","staticProps","prototype","Sync","options","_onGet","onGet","_driver","_url","_limit","limit","_exec","_this","exec","then","docID","document","_this2","get","doc","seqid","revid","date","Date","now","insert","Error","_this3","getData","docs","map","clearDatabase","_possibleConstructorReturn","self","ReferenceError","_inherits","subClass","superClass","create","setPrototypeOf","__proto__","nextIDForConflict","currentID","it","data","EventEmitter","agent","debug","_EventEmitter","getPrototypeOf","_seqid","_inserted","_pushed","_promise","_start","e","listenerCount","emit","bind","getLastSeqid","infoUrl","end","result","body","_fetch","response","_push","insertNext","_ret","res","v","_insert","_this4","toInsert","docBackup","_this5","getRevData","pushNext","_end","_ret2","toPush","state","post","send","status","Promise","reject","resInfo","inserted","pushed","_events","_maxListeners","isFunction","arg","isNumber","isObject","isUndefined","defaultMaxListeners","setMaxListeners","n","isNaN","type","er","handler","len","args","listeners","error","arguments","Array","slice","apply","addListener","listener","newListener","push","warned","console","trace","on","once","g","removeListener","fired","list","position","splice","removeAllListeners","ret","evlistener","emitter","wrap","superagent","PromiseRequest","Request","cb","accept","err","resolve","request","method","head","req","query","put","patch","del","noop","isHost","str","toString","serialize","pairs","pushEncodedKeyValuePair","join","val","isArray","forEach","encodeURIComponent","parseString","parts","pair","split","decodeURIComponent","parseHeader","index","line","field","lines","fields","pop","indexOf","toLowerCase","trim","isJSON","mime","test","shift","params","reduce","Response","xhr","text","responseType","responseText","statusText","setStatusProperties","header","headers","getAllResponseHeaders","getResponseHeader","setHeaderProperties","parseBody","Emitter","_query","_header","parse","original","rawResponse","callback","new_err","fn","window","getXHR","XMLHttpRequest","location","protocol","ActiveXObject","s","replace","serializeObject","types","html","json","xml","urlencoded","form","form-data","application/x-www-form-urlencoded","application/json","JSON","stringify","ct","statusCode","statusType","info","ok","clientError","serverError","toError","accepted","noContent","badRequest","unauthorized","notAcceptable","notFound","forbidden","msg","use","timeout","ms","_timeout","clearTimeout","_timer","abort","aborted","set","unset","getHeader","_parser","auth","user","pass","btoa","_formData","FormData","append","attach","file","filename","_data","_callback","crossDomainError","crossDomain","timeoutError","withCredentials","_withCredentials","onreadystatechange","readyState","timedout","handleProgress","total","percent","direction","hasListeners","onprogress","upload","setTimeout","open","contentType","setRequestHeader","fulfill","mixin","addEventListener","event","_callbacks","off","removeEventListener","callbacks","arr","initial","idx","curr","useColors","documentElement","style","firebug","exception","table","navigator","userAgent","match","parseInt","RegExp","$1","formatArgs","namespace","humanize","diff","color","concat","lastC","log","Function","save","namespaces","storage","removeItem","load","r","localstorage","localStorage","chrome","local","colors","formatters","j","enable","selectColor","prevColor","disabled","enabled","prevTime","prev","coerce","format","formatter","logFn","skips","substr","names","disable","stack","message","parseFloat","y","d","h","short","Math","round","long","plural","floor","ceil","dbName","_db","_name","_doInit","OBJECT_STORE_DATA","_init","openRequest","indexedDB","onerror","onsuccess","onupgradeneeded","db","objectStore","createObjectStore","keyPath","createIndex","transaction","oncomplete","openCursor","cursor","filter","close","deleteDatabase"],"mappings":"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","file":"sync-db-browser.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SyncDB\"] = factory();\n\telse\n\t\troot[\"SyncDB\"] = factory();\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SyncDB\"] = factory();\n\telse\n\t\troot[\"SyncDB\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar SyncDB = exports.SyncDB = __webpack_require__(1);\n\tvar IDBDriver = exports.IDBDriver = __webpack_require__(12);\n\t\n\texports.createSync = function (name, url, driver) {\n\t    if (typeof name !== 'string')\n\t        throw new TypeError('name argument must be a string');\n\t    if (driver === undefined)\n\t        driver = 'idb';\n\t    if (driver !== 'idb')\n\t        throw new RangeError('only \"idb\" is supported as a driver');\n\t    return new SyncDB({\n\t        driver: new IDBDriver(name),\n\t        url: url\n\t    });\n\t};\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\t\n\tfunction _typeof(obj) { return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar Sync = __webpack_require__(2);\n\t\n\tvar SyncDB = (function () {\n\t    function SyncDB(options) {\n\t        _classCallCheck(this, SyncDB);\n\t\n\t        if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) !== 'object' || options === null) {\n\t            throw new TypeError('options argument must be an object');\n\t        }\n\t        if (_typeof(options.driver) !== 'object') {\n\t            throw new TypeError('driver option must be an object');\n\t        }\n\t\n\t        this._onGet = options.onGet || defaultOnGet;\n\t\n\t        this._driver = options.driver;\n\t        this._url = options.url ? options.url : '';\n\t        this._limit = options.limit || 5;\n\t\n\t        this._exec = null;\n\t    }\n\t\n\t    _createClass(SyncDB, [{\n\t        key: 'sync',\n\t        value: function sync() {\n\t            var _this = this;\n\t\n\t            if (this._exec) {\n\t                return this._exec;\n\t            }\n\t            var exec = new Sync(this._driver, this._url, this._limit);\n\t            this._exec = exec;\n\t\n\t            exec.then(function () {\n\t                _this._exec = null;\n\t            });\n\t            return exec;\n\t        }\n\t    }, {\n\t        key: 'insert',\n\t        value: function insert(docID, document) {\n\t            var _this2 = this;\n\t\n\t            return this._driver.get(docID).then(function (doc) {\n\t                if (!doc) {\n\t                    doc = {\n\t                        id: docID,\n\t                        seqid: -1\n\t                    };\n\t                }\n\t                doc.revid = (doc.revid || 0) + 1;\n\t                doc.date = Date.now();\n\t                doc.value = document;\n\t                return _this2._driver.insert(doc);\n\t            });\n\t        }\n\t    }, {\n\t        key: 'remove',\n\t        value: function remove(docID) {\n\t            throw new Error('remove is unimplemented');\n\t            //return this._driver.remove(docID);\n\t        }\n\t    }, {\n\t        key: 'get',\n\t        value: function get(docID) {\n\t            return this._driver.get(docID).then(this._onGet);\n\t        }\n\t    }, {\n\t        key: 'getData',\n\t        value: function getData() {\n\t            var _this3 = this;\n\t\n\t            return this._driver.getData().then(function (docs) {\n\t                return docs.map(_this3._onGet);\n\t            });\n\t        }\n\t    }, {\n\t        key: 'clearDatabase',\n\t        value: function clearDatabase() {\n\t            return this._driver.clearDatabase();\n\t        }\n\t    }]);\n\t\n\t    return SyncDB;\n\t})();\n\t\n\tmodule.exports = SyncDB;\n\t\n\tfunction defaultOnGet(dbObject) {\n\t    return dbObject.value;\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\t\n\tfunction _typeof(obj) { return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar EventEmitter = __webpack_require__(3);\n\tvar agent = __webpack_require__(4);\n\tvar debug = __webpack_require__(9)('syncdb:sync');\n\t\n\tvar Sync = (function (_EventEmitter) {\n\t    _inherits(Sync, _EventEmitter);\n\t\n\t    function Sync(driver, url, limit) {\n\t        _classCallCheck(this, Sync);\n\t\n\t        debug('new sync');\n\t\n\t        var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(Sync).call(this));\n\t\n\t        _this._driver = driver;\n\t        _this._url = url;\n\t        _this._seqid = 0;\n\t        _this._inserted = 0;\n\t        _this._pushed = 0;\n\t        _this._limit = limit;\n\t\n\t        _this._promise = _this._start();\n\t        _this._promise.catch(function (e) {\n\t            // This check is needed, otherwise it will throw an exception if\n\t            // there is no error listener\n\t            if (_this.listenerCount('error') > 0) {\n\t                _this.emit('error', e);\n\t            }\n\t        });\n\t        _this.then = _this._promise.then.bind(_this._promise);\n\t        return _this;\n\t    }\n\t\n\t    _createClass(Sync, [{\n\t        key: '_start',\n\t        value: function _start() {\n\t            var _this2 = this;\n\t\n\t            debug('start sync');\n\t            // Get last local seqid\n\t            return this._driver.getLastSeqid().then(function (id) {\n\t                _this2._seqid = id;\n\t                var infoUrl = _this2._url + '/info?since=' + id;\n\t                // Get remaining sync steps from server\n\t                return agent.get(infoUrl).end().then(function (result) {\n\t                    _this2.emit('info', result.body.data);\n\t                    return _this2._fetch();\n\t                });\n\t            });\n\t        }\n\t    }, {\n\t        key: '_fetch',\n\t        value: function _fetch() {\n\t            var _this3 = this;\n\t\n\t            debug('_fetch');\n\t            var url = this._url + '?since=' + this._seqid + '&limit=' + this._limit;\n\t            return agent.get(url).end().then(function (response) {\n\t                var result = response.body.data;\n\t                if (result.length === 0) {\n\t                    return _this3._push();\n\t                }\n\t                var i = 0;\n\t                var insertNext = function insertNext() {\n\t                    if (result.length > i) {\n\t                        var _ret = (function () {\n\t                            var res = result[i++];\n\t                            return {\n\t                                v: _this3._insert(res).then(function () {\n\t                                    _this3._seqid = res.seqid;\n\t                                    _this3._inserted++;\n\t                                    _this3.emit('progress', res);\n\t                                    return insertNext();\n\t                                })\n\t                            };\n\t                        })();\n\t\n\t                        if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === \"object\") return _ret.v;\n\t                    } else {\n\t                        return _this3._fetch();\n\t                    }\n\t                };\n\t                return insertNext();\n\t            });\n\t        }\n\t    }, {\n\t        key: '_insert',\n\t        value: function _insert(data) {\n\t            var _this4 = this;\n\t\n\t            debug('_insert');\n\t            return this._driver.get(data.id).then(function (doc) {\n\t                var toInsert = {\n\t                    id: data.id,\n\t                    seqid: data.seqid,\n\t                    revid: 0,\n\t                    date: data.date,\n\t                    value: data.value\n\t                };\n\t                if (doc && doc.seqid !== data.seqid) {\n\t                    return nextIDForConflict(doc.id, _this4._driver, 0).then(function (id) {\n\t                        var docBackup = {\n\t                            id: id,\n\t                            seqid: -1,\n\t                            revid: 0,\n\t                            date: doc.date,\n\t                            value: doc.value\n\t                        };\n\t                        return _this4._driver.insert(docBackup).then(function () {\n\t                            return _this4._driver.insert(toInsert);\n\t                        });\n\t                    });\n\t                } else {\n\t                    return _this4._driver.insert(toInsert);\n\t                }\n\t            });\n\t        }\n\t    }, {\n\t        key: '_push',\n\t        value: function _push() {\n\t            var _this5 = this;\n\t\n\t            debug('_push');\n\t            return this._driver.getRevData().then(function (data) {\n\t                var url = _this5._url + '/update';\n\t                var i = 0;\n\t                var pushNext = function pushNext() {\n\t                    if (data.length > i) {\n\t                        var _ret2 = (function () {\n\t                            var obj = data[i++];\n\t                            var toPush = {\n\t                                id: obj.id,\n\t                                seqid: obj.seqid,\n\t                                date: obj.date,\n\t                                state: 'update',\n\t                                value: obj.value\n\t                            };\n\t                            return {\n\t                                v: agent.post(url).send(toPush).end().then(function (response) {\n\t                                    toPush.seqid = response.body.data.seqid;\n\t                                    return _this5._driver.insert(toPush).then(function () {\n\t                                        _this5._pushed++;\n\t                                        return pushNext();\n\t                                    });\n\t                                }, function (e) {\n\t                                    if (e.status === 409) {\n\t                                        return _this5._fetch();\n\t                                    }\n\t                                    return Promise.reject(e);\n\t                                })\n\t                            };\n\t                        })();\n\t\n\t                        if ((typeof _ret2 === 'undefined' ? 'undefined' : _typeof(_ret2)) === \"object\") return _ret2.v;\n\t                    } else {\n\t                        return _this5._end();\n\t                    }\n\t                };\n\t                return pushNext();\n\t            });\n\t        }\n\t    }, {\n\t        key: '_end',\n\t        value: function _end() {\n\t            debug('end sync');\n\t            var resInfo = {\n\t                inserted: this._inserted,\n\t                pushed: this._pushed\n\t            };\n\t            this.emit('end', resInfo);\n\t            return resInfo;\n\t        }\n\t    }]);\n\t\n\t    return Sync;\n\t})(EventEmitter);\n\t\n\tmodule.exports = Sync;\n\t\n\tfunction nextIDForConflict(currentID, driver, it) {\n\t    if (it === undefined) it = 0;\n\t    var id = currentID + '_' + it;\n\t    return driver.get(id).then(function (data) {\n\t        if (!data) return id;else return nextIDForConflict(currentID, driver, ++it);\n\t    });\n\t}\n\n/***/ },\n/* 3 */\n/***/ function(module, exports) {\n\n\t// Copyright Joyent, Inc. and other Node contributors.\n\t//\n\t// Permission is hereby granted, free of charge, to any person obtaining a\n\t// copy of this software and associated documentation files (the\n\t// \"Software\"), to deal in the Software without restriction, including\n\t// without limitation the rights to use, copy, modify, merge, publish,\n\t// distribute, sublicense, and/or sell copies of the Software, and to permit\n\t// persons to whom the Software is furnished to do so, subject to the\n\t// following conditions:\n\t//\n\t// The above copyright notice and this permission notice shall be included\n\t// in all copies or substantial portions of the Software.\n\t//\n\t// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n\t// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n\t// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n\t// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n\t// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n\t// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\t\n\tfunction EventEmitter() {\n\t  this._events = this._events || {};\n\t  this._maxListeners = this._maxListeners || undefined;\n\t}\n\tmodule.exports = EventEmitter;\n\t\n\t// Backwards-compat with node 0.10.x\n\tEventEmitter.EventEmitter = EventEmitter;\n\t\n\tEventEmitter.prototype._events = undefined;\n\tEventEmitter.prototype._maxListeners = undefined;\n\t\n\t// By default EventEmitters will print a warning if more than 10 listeners are\n\t// added to it. This is a useful default which helps finding memory leaks.\n\tEventEmitter.defaultMaxListeners = 10;\n\t\n\t// Obviously not all Emitters should be limited to 10. This function allows\n\t// that to be increased. Set to zero for unlimited.\n\tEventEmitter.prototype.setMaxListeners = function(n) {\n\t  if (!isNumber(n) || n < 0 || isNaN(n))\n\t    throw TypeError('n must be a positive number');\n\t  this._maxListeners = n;\n\t  return this;\n\t};\n\t\n\tEventEmitter.prototype.emit = function(type) {\n\t  var er, handler, len, args, i, listeners;\n\t\n\t  if (!this._events)\n\t    this._events = {};\n\t\n\t  // If there is no 'error' event listener then throw.\n\t  if (type === 'error') {\n\t    if (!this._events.error ||\n\t        (isObject(this._events.error) && !this._events.error.length)) {\n\t      er = arguments[1];\n\t      if (er instanceof Error) {\n\t        throw er; // Unhandled 'error' event\n\t      }\n\t      throw TypeError('Uncaught, unspecified \"error\" event.');\n\t    }\n\t  }\n\t\n\t  handler = this._events[type];\n\t\n\t  if (isUndefined(handler))\n\t    return false;\n\t\n\t  if (isFunction(handler)) {\n\t    switch (arguments.length) {\n\t      // fast cases\n\t      case 1:\n\t        handler.call(this);\n\t        break;\n\t      case 2:\n\t        handler.call(this, arguments[1]);\n\t        break;\n\t      case 3:\n\t        handler.call(this, arguments[1], arguments[2]);\n\t        break;\n\t      // slower\n\t      default:\n\t        args = Array.prototype.slice.call(arguments, 1);\n\t        handler.apply(this, args);\n\t    }\n\t  } else if (isObject(handler)) {\n\t    args = Array.prototype.slice.call(arguments, 1);\n\t    listeners = handler.slice();\n\t    len = listeners.length;\n\t    for (i = 0; i < len; i++)\n\t      listeners[i].apply(this, args);\n\t  }\n\t\n\t  return true;\n\t};\n\t\n\tEventEmitter.prototype.addListener = function(type, listener) {\n\t  var m;\n\t\n\t  if (!isFunction(listener))\n\t    throw TypeError('listener must be a function');\n\t\n\t  if (!this._events)\n\t    this._events = {};\n\t\n\t  // To avoid recursion in the case that type === \"newListener\"! Before\n\t  // adding it to the listeners, first emit \"newListener\".\n\t  if (this._events.newListener)\n\t    this.emit('newListener', type,\n\t              isFunction(listener.listener) ?\n\t              listener.listener : listener);\n\t\n\t  if (!this._events[type])\n\t    // Optimize the case of one listener. Don't need the extra array object.\n\t    this._events[type] = listener;\n\t  else if (isObject(this._events[type]))\n\t    // If we've already got an array, just append.\n\t    this._events[type].push(listener);\n\t  else\n\t    // Adding the second element, need to change to array.\n\t    this._events[type] = [this._events[type], listener];\n\t\n\t  // Check for listener leak\n\t  if (isObject(this._events[type]) && !this._events[type].warned) {\n\t    if (!isUndefined(this._maxListeners)) {\n\t      m = this._maxListeners;\n\t    } else {\n\t      m = EventEmitter.defaultMaxListeners;\n\t    }\n\t\n\t    if (m && m > 0 && this._events[type].length > m) {\n\t      this._events[type].warned = true;\n\t      console.error('(node) warning: possible EventEmitter memory ' +\n\t                    'leak detected. %d listeners added. ' +\n\t                    'Use emitter.setMaxListeners() to increase limit.',\n\t                    this._events[type].length);\n\t      if (typeof console.trace === 'function') {\n\t        // not supported in IE 10\n\t        console.trace();\n\t      }\n\t    }\n\t  }\n\t\n\t  return this;\n\t};\n\t\n\tEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\t\n\tEventEmitter.prototype.once = function(type, listener) {\n\t  if (!isFunction(listener))\n\t    throw TypeError('listener must be a function');\n\t\n\t  var fired = false;\n\t\n\t  function g() {\n\t    this.removeListener(type, g);\n\t\n\t    if (!fired) {\n\t      fired = true;\n\t      listener.apply(this, arguments);\n\t    }\n\t  }\n\t\n\t  g.listener = listener;\n\t  this.on(type, g);\n\t\n\t  return this;\n\t};\n\t\n\t// emits a 'removeListener' event iff the listener was removed\n\tEventEmitter.prototype.removeListener = function(type, listener) {\n\t  var list, position, length, i;\n\t\n\t  if (!isFunction(listener))\n\t    throw TypeError('listener must be a function');\n\t\n\t  if (!this._events || !this._events[type])\n\t    return this;\n\t\n\t  list = this._events[type];\n\t  length = list.length;\n\t  position = -1;\n\t\n\t  if (list === listener ||\n\t      (isFunction(list.listener) && list.listener === listener)) {\n\t    delete this._events[type];\n\t    if (this._events.removeListener)\n\t      this.emit('removeListener', type, listener);\n\t\n\t  } else if (isObject(list)) {\n\t    for (i = length; i-- > 0;) {\n\t      if (list[i] === listener ||\n\t          (list[i].listener && list[i].listener === listener)) {\n\t        position = i;\n\t        break;\n\t      }\n\t    }\n\t\n\t    if (position < 0)\n\t      return this;\n\t\n\t    if (list.length === 1) {\n\t      list.length = 0;\n\t      delete this._events[type];\n\t    } else {\n\t      list.splice(position, 1);\n\t    }\n\t\n\t    if (this._events.removeListener)\n\t      this.emit('removeListener', type, listener);\n\t  }\n\t\n\t  return this;\n\t};\n\t\n\tEventEmitter.prototype.removeAllListeners = function(type) {\n\t  var key, listeners;\n\t\n\t  if (!this._events)\n\t    return this;\n\t\n\t  // not listening for removeListener, no need to emit\n\t  if (!this._events.removeListener) {\n\t    if (arguments.length === 0)\n\t      this._events = {};\n\t    else if (this._events[type])\n\t      delete this._events[type];\n\t    return this;\n\t  }\n\t\n\t  // emit removeListener for all listeners on all events\n\t  if (arguments.length === 0) {\n\t    for (key in this._events) {\n\t      if (key === 'removeListener') continue;\n\t      this.removeAllListeners(key);\n\t    }\n\t    this.removeAllListeners('removeListener');\n\t    this._events = {};\n\t    return this;\n\t  }\n\t\n\t  listeners = this._events[type];\n\t\n\t  if (isFunction(listeners)) {\n\t    this.removeListener(type, listeners);\n\t  } else if (listeners) {\n\t    // LIFO order\n\t    while (listeners.length)\n\t      this.removeListener(type, listeners[listeners.length - 1]);\n\t  }\n\t  delete this._events[type];\n\t\n\t  return this;\n\t};\n\t\n\tEventEmitter.prototype.listeners = function(type) {\n\t  var ret;\n\t  if (!this._events || !this._events[type])\n\t    ret = [];\n\t  else if (isFunction(this._events[type]))\n\t    ret = [this._events[type]];\n\t  else\n\t    ret = this._events[type].slice();\n\t  return ret;\n\t};\n\t\n\tEventEmitter.prototype.listenerCount = function(type) {\n\t  if (this._events) {\n\t    var evlistener = this._events[type];\n\t\n\t    if (isFunction(evlistener))\n\t      return 1;\n\t    else if (evlistener)\n\t      return evlistener.length;\n\t  }\n\t  return 0;\n\t};\n\t\n\tEventEmitter.listenerCount = function(emitter, type) {\n\t  return emitter.listenerCount(type);\n\t};\n\t\n\tfunction isFunction(arg) {\n\t  return typeof arg === 'function';\n\t}\n\t\n\tfunction isNumber(arg) {\n\t  return typeof arg === 'number';\n\t}\n\t\n\tfunction isObject(arg) {\n\t  return typeof arg === 'object' && arg !== null;\n\t}\n\t\n\tfunction isUndefined(arg) {\n\t  return arg === void 0;\n\t}\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(5)(__webpack_require__(6), Promise);\n\n/***/ },\n/* 5 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Promise wrapper for superagent\n\t */\n\t\n\tfunction wrap(superagent, Promise) {\n\t  /**\n\t   * Request object similar to superagent.Request, but with end() returning\n\t   * a promise.\n\t   */\n\t  function PromiseRequest() {\n\t    superagent.Request.apply(this, arguments);\n\t  }\n\t\n\t  // Inherit form superagent.Request\n\t  PromiseRequest.prototype = Object.create(superagent.Request.prototype);\n\t\n\t  /** Send request and get a promise that `end` was emitted */\n\t  PromiseRequest.prototype.end = function(cb) {\n\t    var _end = superagent.Request.prototype.end;\n\t    var self = this;\n\t\n\t    return new Promise(function(accept, reject) {\n\t      _end.call(self, function(err, response) {\n\t        if (cb) {\n\t          cb(err, response);\n\t        }\n\t\n\t        if (err) {\n\t          err.response = response;\n\t          reject(err);\n\t        } else {\n\t          accept(response);\n\t        }\n\t      });\n\t    });\n\t  };\n\t\n\t  /** Provide a more promise-y interface */\n\t  PromiseRequest.prototype.then = function(resolve, reject) {\n\t    var _end = superagent.Request.prototype.end;\n\t    var self = this;\n\t\n\t    return new Promise(function(accept, reject) {\n\t      _end.call(self, function(err, response) {\n\t        if (err) {\n\t          err.response = response;\n\t          reject(err);\n\t        } else {\n\t          accept(response);\n\t        }\n\t      });\n\t    }).then(resolve, reject);\n\t  };\n\t\n\t  /**\n\t   * Request builder with same interface as superagent.\n\t   * It is convenient to import this as `request` in place of superagent.\n\t   */\n\t  var request = function(method, url) {\n\t    return new PromiseRequest(method, url);\n\t  };\n\t\n\t  /** Helper for making an options request */\n\t  request.options = function(url) {\n\t    return request('OPTIONS', url);\n\t  }\n\t\n\t  /** Helper for making a head request */\n\t  request.head = function(url, data) {\n\t    var req = request('HEAD', url);\n\t    if (data) {\n\t      req.send(data);\n\t    }\n\t    return req;\n\t  };\n\t\n\t  /** Helper for making a get request */\n\t  request.get = function(url, data) {\n\t    var req = request('GET', url);\n\t    if (data) {\n\t      req.query(data);\n\t    }\n\t    return req;\n\t  };\n\t\n\t  /** Helper for making a post request */\n\t  request.post = function(url, data) {\n\t    var req = request('POST', url);\n\t    if (data) {\n\t      req.send(data);\n\t    }\n\t    return req;\n\t  };\n\t\n\t  /** Helper for making a put request */\n\t  request.put = function(url, data) {\n\t    var req = request('PUT', url);\n\t    if (data) {\n\t      req.send(data);\n\t    }\n\t    return req;\n\t  };\n\t\n\t  /** Helper for making a patch request */\n\t  request.patch = function(url, data) {\n\t    var req = request('PATCH', url);\n\t    if (data) {\n\t      req.send(data);\n\t    }\n\t    return req;\n\t  };\n\t\n\t  /** Helper for making a delete request */\n\t  request.del = function(url) {\n\t    return request('DELETE', url);\n\t  };\n\t\n\t  // Export the request builder\n\t  return request;\n\t}\n\t\n\tmodule.exports = wrap;\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Module dependencies.\n\t */\n\t\n\tvar Emitter = __webpack_require__(7);\n\tvar reduce = __webpack_require__(8);\n\t\n\t/**\n\t * Root reference for iframes.\n\t */\n\t\n\tvar root;\n\tif (typeof window !== 'undefined') { // Browser window\n\t  root = window;\n\t} else if (typeof self !== 'undefined') { // Web Worker\n\t  root = self;\n\t} else { // Other environments\n\t  root = this;\n\t}\n\t\n\t/**\n\t * Noop.\n\t */\n\t\n\tfunction noop(){};\n\t\n\t/**\n\t * Check if `obj` is a host object,\n\t * we don't want to serialize these :)\n\t *\n\t * TODO: future proof, move to compoent land\n\t *\n\t * @param {Object} obj\n\t * @return {Boolean}\n\t * @api private\n\t */\n\t\n\tfunction isHost(obj) {\n\t  var str = {}.toString.call(obj);\n\t\n\t  switch (str) {\n\t    case '[object File]':\n\t    case '[object Blob]':\n\t    case '[object FormData]':\n\t      return true;\n\t    default:\n\t      return false;\n\t  }\n\t}\n\t\n\t/**\n\t * Determine XHR.\n\t */\n\t\n\trequest.getXHR = function () {\n\t  if (root.XMLHttpRequest\n\t      && (!root.location || 'file:' != root.location.protocol\n\t          || !root.ActiveXObject)) {\n\t    return new XMLHttpRequest;\n\t  } else {\n\t    try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch(e) {}\n\t    try { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch(e) {}\n\t    try { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch(e) {}\n\t    try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch(e) {}\n\t  }\n\t  return false;\n\t};\n\t\n\t/**\n\t * Removes leading and trailing whitespace, added to support IE.\n\t *\n\t * @param {String} s\n\t * @return {String}\n\t * @api private\n\t */\n\t\n\tvar trim = ''.trim\n\t  ? function(s) { return s.trim(); }\n\t  : function(s) { return s.replace(/(^\\s*|\\s*$)/g, ''); };\n\t\n\t/**\n\t * Check if `obj` is an object.\n\t *\n\t * @param {Object} obj\n\t * @return {Boolean}\n\t * @api private\n\t */\n\t\n\tfunction isObject(obj) {\n\t  return obj === Object(obj);\n\t}\n\t\n\t/**\n\t * Serialize the given `obj`.\n\t *\n\t * @param {Object} obj\n\t * @return {String}\n\t * @api private\n\t */\n\t\n\tfunction serialize(obj) {\n\t  if (!isObject(obj)) return obj;\n\t  var pairs = [];\n\t  for (var key in obj) {\n\t    if (null != obj[key]) {\n\t      pushEncodedKeyValuePair(pairs, key, obj[key]);\n\t        }\n\t      }\n\t  return pairs.join('&');\n\t}\n\t\n\t/**\n\t * Helps 'serialize' with serializing arrays.\n\t * Mutates the pairs array.\n\t *\n\t * @param {Array} pairs\n\t * @param {String} key\n\t * @param {Mixed} val\n\t */\n\t\n\tfunction pushEncodedKeyValuePair(pairs, key, val) {\n\t  if (Array.isArray(val)) {\n\t    return val.forEach(function(v) {\n\t      pushEncodedKeyValuePair(pairs, key, v);\n\t    });\n\t  }\n\t  pairs.push(encodeURIComponent(key)\n\t    + '=' + encodeURIComponent(val));\n\t}\n\t\n\t/**\n\t * Expose serialization method.\n\t */\n\t\n\t request.serializeObject = serialize;\n\t\n\t /**\n\t  * Parse the given x-www-form-urlencoded `str`.\n\t  *\n\t  * @param {String} str\n\t  * @return {Object}\n\t  * @api private\n\t  */\n\t\n\tfunction parseString(str) {\n\t  var obj = {};\n\t  var pairs = str.split('&');\n\t  var parts;\n\t  var pair;\n\t\n\t  for (var i = 0, len = pairs.length; i < len; ++i) {\n\t    pair = pairs[i];\n\t    parts = pair.split('=');\n\t    obj[decodeURIComponent(parts[0])] = decodeURIComponent(parts[1]);\n\t  }\n\t\n\t  return obj;\n\t}\n\t\n\t/**\n\t * Expose parser.\n\t */\n\t\n\trequest.parseString = parseString;\n\t\n\t/**\n\t * Default MIME type map.\n\t *\n\t *     superagent.types.xml = 'application/xml';\n\t *\n\t */\n\t\n\trequest.types = {\n\t  html: 'text/html',\n\t  json: 'application/json',\n\t  xml: 'application/xml',\n\t  urlencoded: 'application/x-www-form-urlencoded',\n\t  'form': 'application/x-www-form-urlencoded',\n\t  'form-data': 'application/x-www-form-urlencoded'\n\t};\n\t\n\t/**\n\t * Default serialization map.\n\t *\n\t *     superagent.serialize['application/xml'] = function(obj){\n\t *       return 'generated xml here';\n\t *     };\n\t *\n\t */\n\t\n\t request.serialize = {\n\t   'application/x-www-form-urlencoded': serialize,\n\t   'application/json': JSON.stringify\n\t };\n\t\n\t /**\n\t  * Default parsers.\n\t  *\n\t  *     superagent.parse['application/xml'] = function(str){\n\t  *       return { object parsed from str };\n\t  *     };\n\t  *\n\t  */\n\t\n\trequest.parse = {\n\t  'application/x-www-form-urlencoded': parseString,\n\t  'application/json': JSON.parse\n\t};\n\t\n\t/**\n\t * Parse the given header `str` into\n\t * an object containing the mapped fields.\n\t *\n\t * @param {String} str\n\t * @return {Object}\n\t * @api private\n\t */\n\t\n\tfunction parseHeader(str) {\n\t  var lines = str.split(/\\r?\\n/);\n\t  var fields = {};\n\t  var index;\n\t  var line;\n\t  var field;\n\t  var val;\n\t\n\t  lines.pop(); // trailing CRLF\n\t\n\t  for (var i = 0, len = lines.length; i < len; ++i) {\n\t    line = lines[i];\n\t    index = line.indexOf(':');\n\t    field = line.slice(0, index).toLowerCase();\n\t    val = trim(line.slice(index + 1));\n\t    fields[field] = val;\n\t  }\n\t\n\t  return fields;\n\t}\n\t\n\t/**\n\t * Check if `mime` is json or has +json structured syntax suffix.\n\t *\n\t * @param {String} mime\n\t * @return {Boolean}\n\t * @api private\n\t */\n\t\n\tfunction isJSON(mime) {\n\t  return /[\\/+]json\\b/.test(mime);\n\t}\n\t\n\t/**\n\t * Return the mime type for the given `str`.\n\t *\n\t * @param {String} str\n\t * @return {String}\n\t * @api private\n\t */\n\t\n\tfunction type(str){\n\t  return str.split(/ *; */).shift();\n\t};\n\t\n\t/**\n\t * Return header field parameters.\n\t *\n\t * @param {String} str\n\t * @return {Object}\n\t * @api private\n\t */\n\t\n\tfunction params(str){\n\t  return reduce(str.split(/ *; */), function(obj, str){\n\t    var parts = str.split(/ *= */)\n\t      , key = parts.shift()\n\t      , val = parts.shift();\n\t\n\t    if (key && val) obj[key] = val;\n\t    return obj;\n\t  }, {});\n\t};\n\t\n\t/**\n\t * Initialize a new `Response` with the given `xhr`.\n\t *\n\t *  - set flags (.ok, .error, etc)\n\t *  - parse header\n\t *\n\t * Examples:\n\t *\n\t *  Aliasing `superagent` as `request` is nice:\n\t *\n\t *      request = superagent;\n\t *\n\t *  We can use the promise-like API, or pass callbacks:\n\t *\n\t *      request.get('/').end(function(res){});\n\t *      request.get('/', function(res){});\n\t *\n\t *  Sending data can be chained:\n\t *\n\t *      request\n\t *        .post('/user')\n\t *        .send({ name: 'tj' })\n\t *        .end(function(res){});\n\t *\n\t *  Or passed to `.send()`:\n\t *\n\t *      request\n\t *        .post('/user')\n\t *        .send({ name: 'tj' }, function(res){});\n\t *\n\t *  Or passed to `.post()`:\n\t *\n\t *      request\n\t *        .post('/user', { name: 'tj' })\n\t *        .end(function(res){});\n\t *\n\t * Or further reduced to a single call for simple cases:\n\t *\n\t *      request\n\t *        .post('/user', { name: 'tj' }, function(res){});\n\t *\n\t * @param {XMLHTTPRequest} xhr\n\t * @param {Object} options\n\t * @api private\n\t */\n\t\n\tfunction Response(req, options) {\n\t  options = options || {};\n\t  this.req = req;\n\t  this.xhr = this.req.xhr;\n\t  // responseText is accessible only if responseType is '' or 'text' and on older browsers\n\t  this.text = ((this.req.method !='HEAD' && (this.xhr.responseType === '' || this.xhr.responseType === 'text')) || typeof this.xhr.responseType === 'undefined')\n\t     ? this.xhr.responseText\n\t     : null;\n\t  this.statusText = this.req.xhr.statusText;\n\t  this.setStatusProperties(this.xhr.status);\n\t  this.header = this.headers = parseHeader(this.xhr.getAllResponseHeaders());\n\t  // getAllResponseHeaders sometimes falsely returns \"\" for CORS requests, but\n\t  // getResponseHeader still works. so we get content-type even if getting\n\t  // other headers fails.\n\t  this.header['content-type'] = this.xhr.getResponseHeader('content-type');\n\t  this.setHeaderProperties(this.header);\n\t  this.body = this.req.method != 'HEAD'\n\t    ? this.parseBody(this.text ? this.text : this.xhr.response)\n\t    : null;\n\t}\n\t\n\t/**\n\t * Get case-insensitive `field` value.\n\t *\n\t * @param {String} field\n\t * @return {String}\n\t * @api public\n\t */\n\t\n\tResponse.prototype.get = function(field){\n\t  return this.header[field.toLowerCase()];\n\t};\n\t\n\t/**\n\t * Set header related properties:\n\t *\n\t *   - `.type` the content type without params\n\t *\n\t * A response of \"Content-Type: text/plain; charset=utf-8\"\n\t * will provide you with a `.type` of \"text/plain\".\n\t *\n\t * @param {Object} header\n\t * @api private\n\t */\n\t\n\tResponse.prototype.setHeaderProperties = function(header){\n\t  // content-type\n\t  var ct = this.header['content-type'] || '';\n\t  this.type = type(ct);\n\t\n\t  // params\n\t  var obj = params(ct);\n\t  for (var key in obj) this[key] = obj[key];\n\t};\n\t\n\t/**\n\t * Parse the given body `str`.\n\t *\n\t * Used for auto-parsing of bodies. Parsers\n\t * are defined on the `superagent.parse` object.\n\t *\n\t * @param {String} str\n\t * @return {Mixed}\n\t * @api private\n\t */\n\t\n\tResponse.prototype.parseBody = function(str){\n\t  var parse = request.parse[this.type];\n\t  return parse && str && (str.length || str instanceof Object)\n\t    ? parse(str)\n\t    : null;\n\t};\n\t\n\t/**\n\t * Set flags such as `.ok` based on `status`.\n\t *\n\t * For example a 2xx response will give you a `.ok` of __true__\n\t * whereas 5xx will be __false__ and `.error` will be __true__. The\n\t * `.clientError` and `.serverError` are also available to be more\n\t * specific, and `.statusType` is the class of error ranging from 1..5\n\t * sometimes useful for mapping respond colors etc.\n\t *\n\t * \"sugar\" properties are also defined for common cases. Currently providing:\n\t *\n\t *   - .noContent\n\t *   - .badRequest\n\t *   - .unauthorized\n\t *   - .notAcceptable\n\t *   - .notFound\n\t *\n\t * @param {Number} status\n\t * @api private\n\t */\n\t\n\tResponse.prototype.setStatusProperties = function(status){\n\t  // handle IE9 bug: http://stackoverflow.com/questions/10046972/msie-returns-status-code-of-1223-for-ajax-request\n\t  if (status === 1223) {\n\t    status = 204;\n\t  }\n\t\n\t  var type = status / 100 | 0;\n\t\n\t  // status / class\n\t  this.status = this.statusCode = status;\n\t  this.statusType = type;\n\t\n\t  // basics\n\t  this.info = 1 == type;\n\t  this.ok = 2 == type;\n\t  this.clientError = 4 == type;\n\t  this.serverError = 5 == type;\n\t  this.error = (4 == type || 5 == type)\n\t    ? this.toError()\n\t    : false;\n\t\n\t  // sugar\n\t  this.accepted = 202 == status;\n\t  this.noContent = 204 == status;\n\t  this.badRequest = 400 == status;\n\t  this.unauthorized = 401 == status;\n\t  this.notAcceptable = 406 == status;\n\t  this.notFound = 404 == status;\n\t  this.forbidden = 403 == status;\n\t};\n\t\n\t/**\n\t * Return an `Error` representative of this response.\n\t *\n\t * @return {Error}\n\t * @api public\n\t */\n\t\n\tResponse.prototype.toError = function(){\n\t  var req = this.req;\n\t  var method = req.method;\n\t  var url = req.url;\n\t\n\t  var msg = 'cannot ' + method + ' ' + url + ' (' + this.status + ')';\n\t  var err = new Error(msg);\n\t  err.status = this.status;\n\t  err.method = method;\n\t  err.url = url;\n\t\n\t  return err;\n\t};\n\t\n\t/**\n\t * Expose `Response`.\n\t */\n\t\n\trequest.Response = Response;\n\t\n\t/**\n\t * Initialize a new `Request` with the given `method` and `url`.\n\t *\n\t * @param {String} method\n\t * @param {String} url\n\t * @api public\n\t */\n\t\n\tfunction Request(method, url) {\n\t  var self = this;\n\t  Emitter.call(this);\n\t  this._query = this._query || [];\n\t  this.method = method;\n\t  this.url = url;\n\t  this.header = {};\n\t  this._header = {};\n\t  this.on('end', function(){\n\t    var err = null;\n\t    var res = null;\n\t\n\t    try {\n\t      res = new Response(self);\n\t    } catch(e) {\n\t      err = new Error('Parser is unable to parse the response');\n\t      err.parse = true;\n\t      err.original = e;\n\t      // issue #675: return the raw response if the response parsing fails\n\t      err.rawResponse = self.xhr && self.xhr.responseText ? self.xhr.responseText : null;\n\t      return self.callback(err);\n\t    }\n\t\n\t    self.emit('response', res);\n\t\n\t    if (err) {\n\t      return self.callback(err, res);\n\t    }\n\t\n\t    if (res.status >= 200 && res.status < 300) {\n\t      return self.callback(err, res);\n\t    }\n\t\n\t    var new_err = new Error(res.statusText || 'Unsuccessful HTTP response');\n\t    new_err.original = err;\n\t    new_err.response = res;\n\t    new_err.status = res.status;\n\t\n\t    self.callback(new_err, res);\n\t  });\n\t}\n\t\n\t/**\n\t * Mixin `Emitter`.\n\t */\n\t\n\tEmitter(Request.prototype);\n\t\n\t/**\n\t * Allow for extension\n\t */\n\t\n\tRequest.prototype.use = function(fn) {\n\t  fn(this);\n\t  return this;\n\t}\n\t\n\t/**\n\t * Set timeout to `ms`.\n\t *\n\t * @param {Number} ms\n\t * @return {Request} for chaining\n\t * @api public\n\t */\n\t\n\tRequest.prototype.timeout = function(ms){\n\t  this._timeout = ms;\n\t  return this;\n\t};\n\t\n\t/**\n\t * Clear previous timeout.\n\t *\n\t * @return {Request} for chaining\n\t * @api public\n\t */\n\t\n\tRequest.prototype.clearTimeout = function(){\n\t  this._timeout = 0;\n\t  clearTimeout(this._timer);\n\t  return this;\n\t};\n\t\n\t/**\n\t * Abort the request, and clear potential timeout.\n\t *\n\t * @return {Request}\n\t * @api public\n\t */\n\t\n\tRequest.prototype.abort = function(){\n\t  if (this.aborted) return;\n\t  this.aborted = true;\n\t  this.xhr.abort();\n\t  this.clearTimeout();\n\t  this.emit('abort');\n\t  return this;\n\t};\n\t\n\t/**\n\t * Set header `field` to `val`, or multiple fields with one object.\n\t *\n\t * Examples:\n\t *\n\t *      req.get('/')\n\t *        .set('Accept', 'application/json')\n\t *        .set('X-API-Key', 'foobar')\n\t *        .end(callback);\n\t *\n\t *      req.get('/')\n\t *        .set({ Accept: 'application/json', 'X-API-Key': 'foobar' })\n\t *        .end(callback);\n\t *\n\t * @param {String|Object} field\n\t * @param {String} val\n\t * @return {Request} for chaining\n\t * @api public\n\t */\n\t\n\tRequest.prototype.set = function(field, val){\n\t  if (isObject(field)) {\n\t    for (var key in field) {\n\t      this.set(key, field[key]);\n\t    }\n\t    return this;\n\t  }\n\t  this._header[field.toLowerCase()] = val;\n\t  this.header[field] = val;\n\t  return this;\n\t};\n\t\n\t/**\n\t * Remove header `field`.\n\t *\n\t * Example:\n\t *\n\t *      req.get('/')\n\t *        .unset('User-Agent')\n\t *        .end(callback);\n\t *\n\t * @param {String} field\n\t * @return {Request} for chaining\n\t * @api public\n\t */\n\t\n\tRequest.prototype.unset = function(field){\n\t  delete this._header[field.toLowerCase()];\n\t  delete this.header[field];\n\t  return this;\n\t};\n\t\n\t/**\n\t * Get case-insensitive header `field` value.\n\t *\n\t * @param {String} field\n\t * @return {String}\n\t * @api private\n\t */\n\t\n\tRequest.prototype.getHeader = function(field){\n\t  return this._header[field.toLowerCase()];\n\t};\n\t\n\t/**\n\t * Set Content-Type to `type`, mapping values from `request.types`.\n\t *\n\t * Examples:\n\t *\n\t *      superagent.types.xml = 'application/xml';\n\t *\n\t *      request.post('/')\n\t *        .type('xml')\n\t *        .send(xmlstring)\n\t *        .end(callback);\n\t *\n\t *      request.post('/')\n\t *        .type('application/xml')\n\t *        .send(xmlstring)\n\t *        .end(callback);\n\t *\n\t * @param {String} type\n\t * @return {Request} for chaining\n\t * @api public\n\t */\n\t\n\tRequest.prototype.type = function(type){\n\t  this.set('Content-Type', request.types[type] || type);\n\t  return this;\n\t};\n\t\n\t/**\n\t * Force given parser\n\t *\n\t * Sets the body parser no matter type.\n\t *\n\t * @param {Function}\n\t * @api public\n\t */\n\t\n\tRequest.prototype.parse = function(fn){\n\t  this._parser = fn;\n\t  return this;\n\t};\n\t\n\t/**\n\t * Set Accept to `type`, mapping values from `request.types`.\n\t *\n\t * Examples:\n\t *\n\t *      superagent.types.json = 'application/json';\n\t *\n\t *      request.get('/agent')\n\t *        .accept('json')\n\t *        .end(callback);\n\t *\n\t *      request.get('/agent')\n\t *        .accept('application/json')\n\t *        .end(callback);\n\t *\n\t * @param {String} accept\n\t * @return {Request} for chaining\n\t * @api public\n\t */\n\t\n\tRequest.prototype.accept = function(type){\n\t  this.set('Accept', request.types[type] || type);\n\t  return this;\n\t};\n\t\n\t/**\n\t * Set Authorization field value with `user` and `pass`.\n\t *\n\t * @param {String} user\n\t * @param {String} pass\n\t * @return {Request} for chaining\n\t * @api public\n\t */\n\t\n\tRequest.prototype.auth = function(user, pass){\n\t  var str = btoa(user + ':' + pass);\n\t  this.set('Authorization', 'Basic ' + str);\n\t  return this;\n\t};\n\t\n\t/**\n\t* Add query-string `val`.\n\t*\n\t* Examples:\n\t*\n\t*   request.get('/shoes')\n\t*     .query('size=10')\n\t*     .query({ color: 'blue' })\n\t*\n\t* @param {Object|String} val\n\t* @return {Request} for chaining\n\t* @api public\n\t*/\n\t\n\tRequest.prototype.query = function(val){\n\t  if ('string' != typeof val) val = serialize(val);\n\t  if (val) this._query.push(val);\n\t  return this;\n\t};\n\t\n\t/**\n\t * Write the field `name` and `val` for \"multipart/form-data\"\n\t * request bodies.\n\t *\n\t * ``` js\n\t * request.post('/upload')\n\t *   .field('foo', 'bar')\n\t *   .end(callback);\n\t * ```\n\t *\n\t * @param {String} name\n\t * @param {String|Blob|File} val\n\t * @return {Request} for chaining\n\t * @api public\n\t */\n\t\n\tRequest.prototype.field = function(name, val){\n\t  if (!this._formData) this._formData = new root.FormData();\n\t  this._formData.append(name, val);\n\t  return this;\n\t};\n\t\n\t/**\n\t * Queue the given `file` as an attachment to the specified `field`,\n\t * with optional `filename`.\n\t *\n\t * ``` js\n\t * request.post('/upload')\n\t *   .attach(new Blob(['<a id=\"a\"><b id=\"b\">hey!</b></a>'], { type: \"text/html\"}))\n\t *   .end(callback);\n\t * ```\n\t *\n\t * @param {String} field\n\t * @param {Blob|File} file\n\t * @param {String} filename\n\t * @return {Request} for chaining\n\t * @api public\n\t */\n\t\n\tRequest.prototype.attach = function(field, file, filename){\n\t  if (!this._formData) this._formData = new root.FormData();\n\t  this._formData.append(field, file, filename || file.name);\n\t  return this;\n\t};\n\t\n\t/**\n\t * Send `data` as the request body, defaulting the `.type()` to \"json\" when\n\t * an object is given.\n\t *\n\t * Examples:\n\t *\n\t *       // manual json\n\t *       request.post('/user')\n\t *         .type('json')\n\t *         .send('{\"name\":\"tj\"}')\n\t *         .end(callback)\n\t *\n\t *       // auto json\n\t *       request.post('/user')\n\t *         .send({ name: 'tj' })\n\t *         .end(callback)\n\t *\n\t *       // manual x-www-form-urlencoded\n\t *       request.post('/user')\n\t *         .type('form')\n\t *         .send('name=tj')\n\t *         .end(callback)\n\t *\n\t *       // auto x-www-form-urlencoded\n\t *       request.post('/user')\n\t *         .type('form')\n\t *         .send({ name: 'tj' })\n\t *         .end(callback)\n\t *\n\t *       // defaults to x-www-form-urlencoded\n\t  *      request.post('/user')\n\t  *        .send('name=tobi')\n\t  *        .send('species=ferret')\n\t  *        .end(callback)\n\t *\n\t * @param {String|Object} data\n\t * @return {Request} for chaining\n\t * @api public\n\t */\n\t\n\tRequest.prototype.send = function(data){\n\t  var obj = isObject(data);\n\t  var type = this.getHeader('Content-Type');\n\t\n\t  // merge\n\t  if (obj && isObject(this._data)) {\n\t    for (var key in data) {\n\t      this._data[key] = data[key];\n\t    }\n\t  } else if ('string' == typeof data) {\n\t    if (!type) this.type('form');\n\t    type = this.getHeader('Content-Type');\n\t    if ('application/x-www-form-urlencoded' == type) {\n\t      this._data = this._data\n\t        ? this._data + '&' + data\n\t        : data;\n\t    } else {\n\t      this._data = (this._data || '') + data;\n\t    }\n\t  } else {\n\t    this._data = data;\n\t  }\n\t\n\t  if (!obj || isHost(data)) return this;\n\t  if (!type) this.type('json');\n\t  return this;\n\t};\n\t\n\t/**\n\t * Invoke the callback with `err` and `res`\n\t * and handle arity check.\n\t *\n\t * @param {Error} err\n\t * @param {Response} res\n\t * @api private\n\t */\n\t\n\tRequest.prototype.callback = function(err, res){\n\t  var fn = this._callback;\n\t  this.clearTimeout();\n\t  fn(err, res);\n\t};\n\t\n\t/**\n\t * Invoke callback with x-domain error.\n\t *\n\t * @api private\n\t */\n\t\n\tRequest.prototype.crossDomainError = function(){\n\t  var err = new Error('Request has been terminated\\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.');\n\t  err.crossDomain = true;\n\t\n\t  err.status = this.status;\n\t  err.method = this.method;\n\t  err.url = this.url;\n\t\n\t  this.callback(err);\n\t};\n\t\n\t/**\n\t * Invoke callback with timeout error.\n\t *\n\t * @api private\n\t */\n\t\n\tRequest.prototype.timeoutError = function(){\n\t  var timeout = this._timeout;\n\t  var err = new Error('timeout of ' + timeout + 'ms exceeded');\n\t  err.timeout = timeout;\n\t  this.callback(err);\n\t};\n\t\n\t/**\n\t * Enable transmission of cookies with x-domain requests.\n\t *\n\t * Note that for this to work the origin must not be\n\t * using \"Access-Control-Allow-Origin\" with a wildcard,\n\t * and also must set \"Access-Control-Allow-Credentials\"\n\t * to \"true\".\n\t *\n\t * @api public\n\t */\n\t\n\tRequest.prototype.withCredentials = function(){\n\t  this._withCredentials = true;\n\t  return this;\n\t};\n\t\n\t/**\n\t * Initiate request, invoking callback `fn(res)`\n\t * with an instanceof `Response`.\n\t *\n\t * @param {Function} fn\n\t * @return {Request} for chaining\n\t * @api public\n\t */\n\t\n\tRequest.prototype.end = function(fn){\n\t  var self = this;\n\t  var xhr = this.xhr = request.getXHR();\n\t  var query = this._query.join('&');\n\t  var timeout = this._timeout;\n\t  var data = this._formData || this._data;\n\t\n\t  // store callback\n\t  this._callback = fn || noop;\n\t\n\t  // state change\n\t  xhr.onreadystatechange = function(){\n\t    if (4 != xhr.readyState) return;\n\t\n\t    // In IE9, reads to any property (e.g. status) off of an aborted XHR will\n\t    // result in the error \"Could not complete the operation due to error c00c023f\"\n\t    var status;\n\t    try { status = xhr.status } catch(e) { status = 0; }\n\t\n\t    if (0 == status) {\n\t      if (self.timedout) return self.timeoutError();\n\t      if (self.aborted) return;\n\t      return self.crossDomainError();\n\t    }\n\t    self.emit('end');\n\t  };\n\t\n\t  // progress\n\t  var handleProgress = function(e){\n\t    if (e.total > 0) {\n\t      e.percent = e.loaded / e.total * 100;\n\t    }\n\t    e.direction = 'download';\n\t    self.emit('progress', e);\n\t  };\n\t  if (this.hasListeners('progress')) {\n\t    xhr.onprogress = handleProgress;\n\t  }\n\t  try {\n\t    if (xhr.upload && this.hasListeners('progress')) {\n\t      xhr.upload.onprogress = handleProgress;\n\t    }\n\t  } catch(e) {\n\t    // Accessing xhr.upload fails in IE from a web worker, so just pretend it doesn't exist.\n\t    // Reported here:\n\t    // https://connect.microsoft.com/IE/feedback/details/837245/xmlhttprequest-upload-throws-invalid-argument-when-used-from-web-worker-context\n\t  }\n\t\n\t  // timeout\n\t  if (timeout && !this._timer) {\n\t    this._timer = setTimeout(function(){\n\t      self.timedout = true;\n\t      self.abort();\n\t    }, timeout);\n\t  }\n\t\n\t  // querystring\n\t  if (query) {\n\t    query = request.serializeObject(query);\n\t    this.url += ~this.url.indexOf('?')\n\t      ? '&' + query\n\t      : '?' + query;\n\t  }\n\t\n\t  // initiate request\n\t  xhr.open(this.method, this.url, true);\n\t\n\t  // CORS\n\t  if (this._withCredentials) xhr.withCredentials = true;\n\t\n\t  // body\n\t  if ('GET' != this.method && 'HEAD' != this.method && 'string' != typeof data && !isHost(data)) {\n\t    // serialize stuff\n\t    var contentType = this.getHeader('Content-Type');\n\t    var serialize = this._parser || request.serialize[contentType ? contentType.split(';')[0] : ''];\n\t    if (!serialize && isJSON(contentType)) serialize = request.serialize['application/json'];\n\t    if (serialize) data = serialize(data);\n\t  }\n\t\n\t  // set header fields\n\t  for (var field in this.header) {\n\t    if (null == this.header[field]) continue;\n\t    xhr.setRequestHeader(field, this.header[field]);\n\t  }\n\t\n\t  // send stuff\n\t  this.emit('request', this);\n\t\n\t  // IE11 xhr.send(undefined) sends 'undefined' string as POST payload (instead of nothing)\n\t  // We need null here if data is undefined\n\t  xhr.send(typeof data !== 'undefined' ? data : null);\n\t  return this;\n\t};\n\t\n\t/**\n\t * Faux promise support\n\t *\n\t * @param {Function} fulfill\n\t * @param {Function} reject\n\t * @return {Request}\n\t */\n\t\n\tRequest.prototype.then = function (fulfill, reject) {\n\t  return this.end(function(err, res) {\n\t    err ? reject(err) : fulfill(res);\n\t  });\n\t}\n\t\n\t/**\n\t * Expose `Request`.\n\t */\n\t\n\trequest.Request = Request;\n\t\n\t/**\n\t * Issue a request:\n\t *\n\t * Examples:\n\t *\n\t *    request('GET', '/users').end(callback)\n\t *    request('/users').end(callback)\n\t *    request('/users', callback)\n\t *\n\t * @param {String} method\n\t * @param {String|Function} url or callback\n\t * @return {Request}\n\t * @api public\n\t */\n\t\n\tfunction request(method, url) {\n\t  // callback\n\t  if ('function' == typeof url) {\n\t    return new Request('GET', method).end(url);\n\t  }\n\t\n\t  // url first\n\t  if (1 == arguments.length) {\n\t    return new Request('GET', method);\n\t  }\n\t\n\t  return new Request(method, url);\n\t}\n\t\n\t/**\n\t * GET `url` with optional callback `fn(res)`.\n\t *\n\t * @param {String} url\n\t * @param {Mixed|Function} data or fn\n\t * @param {Function} fn\n\t * @return {Request}\n\t * @api public\n\t */\n\t\n\trequest.get = function(url, data, fn){\n\t  var req = request('GET', url);\n\t  if ('function' == typeof data) fn = data, data = null;\n\t  if (data) req.query(data);\n\t  if (fn) req.end(fn);\n\t  return req;\n\t};\n\t\n\t/**\n\t * HEAD `url` with optional callback `fn(res)`.\n\t *\n\t * @param {String} url\n\t * @param {Mixed|Function} data or fn\n\t * @param {Function} fn\n\t * @return {Request}\n\t * @api public\n\t */\n\t\n\trequest.head = function(url, data, fn){\n\t  var req = request('HEAD', url);\n\t  if ('function' == typeof data) fn = data, data = null;\n\t  if (data) req.send(data);\n\t  if (fn) req.end(fn);\n\t  return req;\n\t};\n\t\n\t/**\n\t * DELETE `url` with optional callback `fn(res)`.\n\t *\n\t * @param {String} url\n\t * @param {Function} fn\n\t * @return {Request}\n\t * @api public\n\t */\n\t\n\tfunction del(url, fn){\n\t  var req = request('DELETE', url);\n\t  if (fn) req.end(fn);\n\t  return req;\n\t};\n\t\n\trequest['del'] = del;\n\trequest['delete'] = del;\n\t\n\t/**\n\t * PATCH `url` with optional `data` and callback `fn(res)`.\n\t *\n\t * @param {String} url\n\t * @param {Mixed} data\n\t * @param {Function} fn\n\t * @return {Request}\n\t * @api public\n\t */\n\t\n\trequest.patch = function(url, data, fn){\n\t  var req = request('PATCH', url);\n\t  if ('function' == typeof data) fn = data, data = null;\n\t  if (data) req.send(data);\n\t  if (fn) req.end(fn);\n\t  return req;\n\t};\n\t\n\t/**\n\t * POST `url` with optional `data` and callback `fn(res)`.\n\t *\n\t * @param {String} url\n\t * @param {Mixed} data\n\t * @param {Function} fn\n\t * @return {Request}\n\t * @api public\n\t */\n\t\n\trequest.post = function(url, data, fn){\n\t  var req = request('POST', url);\n\t  if ('function' == typeof data) fn = data, data = null;\n\t  if (data) req.send(data);\n\t  if (fn) req.end(fn);\n\t  return req;\n\t};\n\t\n\t/**\n\t * PUT `url` with optional `data` and callback `fn(res)`.\n\t *\n\t * @param {String} url\n\t * @param {Mixed|Function} data or fn\n\t * @param {Function} fn\n\t * @return {Request}\n\t * @api public\n\t */\n\t\n\trequest.put = function(url, data, fn){\n\t  var req = request('PUT', url);\n\t  if ('function' == typeof data) fn = data, data = null;\n\t  if (data) req.send(data);\n\t  if (fn) req.end(fn);\n\t  return req;\n\t};\n\t\n\t/**\n\t * Expose `request`.\n\t */\n\t\n\tmodule.exports = request;\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports) {\n\n\t\n\t/**\n\t * Expose `Emitter`.\n\t */\n\t\n\tmodule.exports = Emitter;\n\t\n\t/**\n\t * Initialize a new `Emitter`.\n\t *\n\t * @api public\n\t */\n\t\n\tfunction Emitter(obj) {\n\t  if (obj) return mixin(obj);\n\t};\n\t\n\t/**\n\t * Mixin the emitter properties.\n\t *\n\t * @param {Object} obj\n\t * @return {Object}\n\t * @api private\n\t */\n\t\n\tfunction mixin(obj) {\n\t  for (var key in Emitter.prototype) {\n\t    obj[key] = Emitter.prototype[key];\n\t  }\n\t  return obj;\n\t}\n\t\n\t/**\n\t * Listen on the given `event` with `fn`.\n\t *\n\t * @param {String} event\n\t * @param {Function} fn\n\t * @return {Emitter}\n\t * @api public\n\t */\n\t\n\tEmitter.prototype.on =\n\tEmitter.prototype.addEventListener = function(event, fn){\n\t  this._callbacks = this._callbacks || {};\n\t  (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n\t    .push(fn);\n\t  return this;\n\t};\n\t\n\t/**\n\t * Adds an `event` listener that will be invoked a single\n\t * time then automatically removed.\n\t *\n\t * @param {String} event\n\t * @param {Function} fn\n\t * @return {Emitter}\n\t * @api public\n\t */\n\t\n\tEmitter.prototype.once = function(event, fn){\n\t  function on() {\n\t    this.off(event, on);\n\t    fn.apply(this, arguments);\n\t  }\n\t\n\t  on.fn = fn;\n\t  this.on(event, on);\n\t  return this;\n\t};\n\t\n\t/**\n\t * Remove the given callback for `event` or all\n\t * registered callbacks.\n\t *\n\t * @param {String} event\n\t * @param {Function} fn\n\t * @return {Emitter}\n\t * @api public\n\t */\n\t\n\tEmitter.prototype.off =\n\tEmitter.prototype.removeListener =\n\tEmitter.prototype.removeAllListeners =\n\tEmitter.prototype.removeEventListener = function(event, fn){\n\t  this._callbacks = this._callbacks || {};\n\t\n\t  // all\n\t  if (0 == arguments.length) {\n\t    this._callbacks = {};\n\t    return this;\n\t  }\n\t\n\t  // specific event\n\t  var callbacks = this._callbacks['$' + event];\n\t  if (!callbacks) return this;\n\t\n\t  // remove all handlers\n\t  if (1 == arguments.length) {\n\t    delete this._callbacks['$' + event];\n\t    return this;\n\t  }\n\t\n\t  // remove specific handler\n\t  var cb;\n\t  for (var i = 0; i < callbacks.length; i++) {\n\t    cb = callbacks[i];\n\t    if (cb === fn || cb.fn === fn) {\n\t      callbacks.splice(i, 1);\n\t      break;\n\t    }\n\t  }\n\t  return this;\n\t};\n\t\n\t/**\n\t * Emit `event` with the given args.\n\t *\n\t * @param {String} event\n\t * @param {Mixed} ...\n\t * @return {Emitter}\n\t */\n\t\n\tEmitter.prototype.emit = function(event){\n\t  this._callbacks = this._callbacks || {};\n\t  var args = [].slice.call(arguments, 1)\n\t    , callbacks = this._callbacks['$' + event];\n\t\n\t  if (callbacks) {\n\t    callbacks = callbacks.slice(0);\n\t    for (var i = 0, len = callbacks.length; i < len; ++i) {\n\t      callbacks[i].apply(this, args);\n\t    }\n\t  }\n\t\n\t  return this;\n\t};\n\t\n\t/**\n\t * Return array of callbacks for `event`.\n\t *\n\t * @param {String} event\n\t * @return {Array}\n\t * @api public\n\t */\n\t\n\tEmitter.prototype.listeners = function(event){\n\t  this._callbacks = this._callbacks || {};\n\t  return this._callbacks['$' + event] || [];\n\t};\n\t\n\t/**\n\t * Check if this emitter has `event` handlers.\n\t *\n\t * @param {String} event\n\t * @return {Boolean}\n\t * @api public\n\t */\n\t\n\tEmitter.prototype.hasListeners = function(event){\n\t  return !! this.listeners(event).length;\n\t};\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports) {\n\n\t\n\t/**\n\t * Reduce `arr` with `fn`.\n\t *\n\t * @param {Array} arr\n\t * @param {Function} fn\n\t * @param {Mixed} initial\n\t *\n\t * TODO: combatible error handling?\n\t */\n\t\n\tmodule.exports = function(arr, fn, initial){  \n\t  var idx = 0;\n\t  var len = arr.length;\n\t  var curr = arguments.length == 3\n\t    ? initial\n\t    : arr[idx++];\n\t\n\t  while (idx < len) {\n\t    curr = fn.call(null, curr, arr[idx], ++idx, arr);\n\t  }\n\t  \n\t  return curr;\n\t};\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\n\t/**\n\t * This is the web browser implementation of `debug()`.\n\t *\n\t * Expose `debug()` as the module.\n\t */\n\t\n\texports = module.exports = __webpack_require__(10);\n\texports.log = log;\n\texports.formatArgs = formatArgs;\n\texports.save = save;\n\texports.load = load;\n\texports.useColors = useColors;\n\texports.storage = 'undefined' != typeof chrome\n\t               && 'undefined' != typeof chrome.storage\n\t                  ? chrome.storage.local\n\t                  : localstorage();\n\t\n\t/**\n\t * Colors.\n\t */\n\t\n\texports.colors = [\n\t  'lightseagreen',\n\t  'forestgreen',\n\t  'goldenrod',\n\t  'dodgerblue',\n\t  'darkorchid',\n\t  'crimson'\n\t];\n\t\n\t/**\n\t * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n\t * and the Firebug extension (any Firefox version) are known\n\t * to support \"%c\" CSS customizations.\n\t *\n\t * TODO: add a `localStorage` variable to explicitly enable/disable colors\n\t */\n\t\n\tfunction useColors() {\n\t  // is webkit? http://stackoverflow.com/a/16459606/376773\n\t  return ('WebkitAppearance' in document.documentElement.style) ||\n\t    // is firebug? http://stackoverflow.com/a/398120/376773\n\t    (window.console && (console.firebug || (console.exception && console.table))) ||\n\t    // is firefox >= v31?\n\t    // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t    (navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31);\n\t}\n\t\n\t/**\n\t * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n\t */\n\t\n\texports.formatters.j = function(v) {\n\t  return JSON.stringify(v);\n\t};\n\t\n\t\n\t/**\n\t * Colorize log arguments if enabled.\n\t *\n\t * @api public\n\t */\n\t\n\tfunction formatArgs() {\n\t  var args = arguments;\n\t  var useColors = this.useColors;\n\t\n\t  args[0] = (useColors ? '%c' : '')\n\t    + this.namespace\n\t    + (useColors ? ' %c' : ' ')\n\t    + args[0]\n\t    + (useColors ? '%c ' : ' ')\n\t    + '+' + exports.humanize(this.diff);\n\t\n\t  if (!useColors) return args;\n\t\n\t  var c = 'color: ' + this.color;\n\t  args = [args[0], c, 'color: inherit'].concat(Array.prototype.slice.call(args, 1));\n\t\n\t  // the final \"%c\" is somewhat tricky, because there could be other\n\t  // arguments passed either before or after the %c, so we need to\n\t  // figure out the correct index to insert the CSS into\n\t  var index = 0;\n\t  var lastC = 0;\n\t  args[0].replace(/%[a-z%]/g, function(match) {\n\t    if ('%%' === match) return;\n\t    index++;\n\t    if ('%c' === match) {\n\t      // we only are interested in the *last* %c\n\t      // (the user may have provided their own)\n\t      lastC = index;\n\t    }\n\t  });\n\t\n\t  args.splice(lastC, 0, c);\n\t  return args;\n\t}\n\t\n\t/**\n\t * Invokes `console.log()` when available.\n\t * No-op when `console.log` is not a \"function\".\n\t *\n\t * @api public\n\t */\n\t\n\tfunction log() {\n\t  // this hackery is required for IE8/9, where\n\t  // the `console.log` function doesn't have 'apply'\n\t  return 'object' === typeof console\n\t    && console.log\n\t    && Function.prototype.apply.call(console.log, console, arguments);\n\t}\n\t\n\t/**\n\t * Save `namespaces`.\n\t *\n\t * @param {String} namespaces\n\t * @api private\n\t */\n\t\n\tfunction save(namespaces) {\n\t  try {\n\t    if (null == namespaces) {\n\t      exports.storage.removeItem('debug');\n\t    } else {\n\t      exports.storage.debug = namespaces;\n\t    }\n\t  } catch(e) {}\n\t}\n\t\n\t/**\n\t * Load `namespaces`.\n\t *\n\t * @return {String} returns the previously persisted debug modes\n\t * @api private\n\t */\n\t\n\tfunction load() {\n\t  var r;\n\t  try {\n\t    r = exports.storage.debug;\n\t  } catch(e) {}\n\t  return r;\n\t}\n\t\n\t/**\n\t * Enable namespaces listed in `localStorage.debug` initially.\n\t */\n\t\n\texports.enable(load());\n\t\n\t/**\n\t * Localstorage attempts to return the localstorage.\n\t *\n\t * This is necessary because safari throws\n\t * when a user disables cookies/localstorage\n\t * and you attempt to access it.\n\t *\n\t * @return {LocalStorage}\n\t * @api private\n\t */\n\t\n\tfunction localstorage(){\n\t  try {\n\t    return window.localStorage;\n\t  } catch (e) {}\n\t}\n\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\n\t/**\n\t * This is the common logic for both the Node.js and web browser\n\t * implementations of `debug()`.\n\t *\n\t * Expose `debug()` as the module.\n\t */\n\t\n\texports = module.exports = debug;\n\texports.coerce = coerce;\n\texports.disable = disable;\n\texports.enable = enable;\n\texports.enabled = enabled;\n\texports.humanize = __webpack_require__(11);\n\t\n\t/**\n\t * The currently active debug mode names, and names to skip.\n\t */\n\t\n\texports.names = [];\n\texports.skips = [];\n\t\n\t/**\n\t * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t *\n\t * Valid key names are a single, lowercased letter, i.e. \"n\".\n\t */\n\t\n\texports.formatters = {};\n\t\n\t/**\n\t * Previously assigned color.\n\t */\n\t\n\tvar prevColor = 0;\n\t\n\t/**\n\t * Previous log timestamp.\n\t */\n\t\n\tvar prevTime;\n\t\n\t/**\n\t * Select a color.\n\t *\n\t * @return {Number}\n\t * @api private\n\t */\n\t\n\tfunction selectColor() {\n\t  return exports.colors[prevColor++ % exports.colors.length];\n\t}\n\t\n\t/**\n\t * Create a debugger with the given `namespace`.\n\t *\n\t * @param {String} namespace\n\t * @return {Function}\n\t * @api public\n\t */\n\t\n\tfunction debug(namespace) {\n\t\n\t  // define the `disabled` version\n\t  function disabled() {\n\t  }\n\t  disabled.enabled = false;\n\t\n\t  // define the `enabled` version\n\t  function enabled() {\n\t\n\t    var self = enabled;\n\t\n\t    // set `diff` timestamp\n\t    var curr = +new Date();\n\t    var ms = curr - (prevTime || curr);\n\t    self.diff = ms;\n\t    self.prev = prevTime;\n\t    self.curr = curr;\n\t    prevTime = curr;\n\t\n\t    // add the `color` if not set\n\t    if (null == self.useColors) self.useColors = exports.useColors();\n\t    if (null == self.color && self.useColors) self.color = selectColor();\n\t\n\t    var args = Array.prototype.slice.call(arguments);\n\t\n\t    args[0] = exports.coerce(args[0]);\n\t\n\t    if ('string' !== typeof args[0]) {\n\t      // anything else let's inspect with %o\n\t      args = ['%o'].concat(args);\n\t    }\n\t\n\t    // apply any `formatters` transformations\n\t    var index = 0;\n\t    args[0] = args[0].replace(/%([a-z%])/g, function(match, format) {\n\t      // if we encounter an escaped % then don't increase the array index\n\t      if (match === '%%') return match;\n\t      index++;\n\t      var formatter = exports.formatters[format];\n\t      if ('function' === typeof formatter) {\n\t        var val = args[index];\n\t        match = formatter.call(self, val);\n\t\n\t        // now we need to remove `args[index]` since it's inlined in the `format`\n\t        args.splice(index, 1);\n\t        index--;\n\t      }\n\t      return match;\n\t    });\n\t\n\t    if ('function' === typeof exports.formatArgs) {\n\t      args = exports.formatArgs.apply(self, args);\n\t    }\n\t    var logFn = enabled.log || exports.log || console.log.bind(console);\n\t    logFn.apply(self, args);\n\t  }\n\t  enabled.enabled = true;\n\t\n\t  var fn = exports.enabled(namespace) ? enabled : disabled;\n\t\n\t  fn.namespace = namespace;\n\t\n\t  return fn;\n\t}\n\t\n\t/**\n\t * Enables a debug mode by namespaces. This can include modes\n\t * separated by a colon and wildcards.\n\t *\n\t * @param {String} namespaces\n\t * @api public\n\t */\n\t\n\tfunction enable(namespaces) {\n\t  exports.save(namespaces);\n\t\n\t  var split = (namespaces || '').split(/[\\s,]+/);\n\t  var len = split.length;\n\t\n\t  for (var i = 0; i < len; i++) {\n\t    if (!split[i]) continue; // ignore empty strings\n\t    namespaces = split[i].replace(/\\*/g, '.*?');\n\t    if (namespaces[0] === '-') {\n\t      exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n\t    } else {\n\t      exports.names.push(new RegExp('^' + namespaces + '$'));\n\t    }\n\t  }\n\t}\n\t\n\t/**\n\t * Disable debug output.\n\t *\n\t * @api public\n\t */\n\t\n\tfunction disable() {\n\t  exports.enable('');\n\t}\n\t\n\t/**\n\t * Returns true if the given mode name is enabled, false otherwise.\n\t *\n\t * @param {String} name\n\t * @return {Boolean}\n\t * @api public\n\t */\n\t\n\tfunction enabled(name) {\n\t  var i, len;\n\t  for (i = 0, len = exports.skips.length; i < len; i++) {\n\t    if (exports.skips[i].test(name)) {\n\t      return false;\n\t    }\n\t  }\n\t  for (i = 0, len = exports.names.length; i < len; i++) {\n\t    if (exports.names[i].test(name)) {\n\t      return true;\n\t    }\n\t  }\n\t  return false;\n\t}\n\t\n\t/**\n\t * Coerce `val`.\n\t *\n\t * @param {Mixed} val\n\t * @return {Mixed}\n\t * @api private\n\t */\n\t\n\tfunction coerce(val) {\n\t  if (val instanceof Error) return val.stack || val.message;\n\t  return val;\n\t}\n\n\n/***/ },\n/* 11 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Helpers.\n\t */\n\t\n\tvar s = 1000;\n\tvar m = s * 60;\n\tvar h = m * 60;\n\tvar d = h * 24;\n\tvar y = d * 365.25;\n\t\n\t/**\n\t * Parse or format the given `val`.\n\t *\n\t * Options:\n\t *\n\t *  - `long` verbose formatting [false]\n\t *\n\t * @param {String|Number} val\n\t * @param {Object} options\n\t * @return {String|Number}\n\t * @api public\n\t */\n\t\n\tmodule.exports = function(val, options){\n\t  options = options || {};\n\t  if ('string' == typeof val) return parse(val);\n\t  return options.long\n\t    ? long(val)\n\t    : short(val);\n\t};\n\t\n\t/**\n\t * Parse the given `str` and return milliseconds.\n\t *\n\t * @param {String} str\n\t * @return {Number}\n\t * @api private\n\t */\n\t\n\tfunction parse(str) {\n\t  str = '' + str;\n\t  if (str.length > 10000) return;\n\t  var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str);\n\t  if (!match) return;\n\t  var n = parseFloat(match[1]);\n\t  var type = (match[2] || 'ms').toLowerCase();\n\t  switch (type) {\n\t    case 'years':\n\t    case 'year':\n\t    case 'yrs':\n\t    case 'yr':\n\t    case 'y':\n\t      return n * y;\n\t    case 'days':\n\t    case 'day':\n\t    case 'd':\n\t      return n * d;\n\t    case 'hours':\n\t    case 'hour':\n\t    case 'hrs':\n\t    case 'hr':\n\t    case 'h':\n\t      return n * h;\n\t    case 'minutes':\n\t    case 'minute':\n\t    case 'mins':\n\t    case 'min':\n\t    case 'm':\n\t      return n * m;\n\t    case 'seconds':\n\t    case 'second':\n\t    case 'secs':\n\t    case 'sec':\n\t    case 's':\n\t      return n * s;\n\t    case 'milliseconds':\n\t    case 'millisecond':\n\t    case 'msecs':\n\t    case 'msec':\n\t    case 'ms':\n\t      return n;\n\t  }\n\t}\n\t\n\t/**\n\t * Short format for `ms`.\n\t *\n\t * @param {Number} ms\n\t * @return {String}\n\t * @api private\n\t */\n\t\n\tfunction short(ms) {\n\t  if (ms >= d) return Math.round(ms / d) + 'd';\n\t  if (ms >= h) return Math.round(ms / h) + 'h';\n\t  if (ms >= m) return Math.round(ms / m) + 'm';\n\t  if (ms >= s) return Math.round(ms / s) + 's';\n\t  return ms + 'ms';\n\t}\n\t\n\t/**\n\t * Long format for `ms`.\n\t *\n\t * @param {Number} ms\n\t * @return {String}\n\t * @api private\n\t */\n\t\n\tfunction long(ms) {\n\t  return plural(ms, d, 'day')\n\t    || plural(ms, h, 'hour')\n\t    || plural(ms, m, 'minute')\n\t    || plural(ms, s, 'second')\n\t    || ms + ' ms';\n\t}\n\t\n\t/**\n\t * Pluralization helper.\n\t */\n\t\n\tfunction plural(ms, n, name) {\n\t  if (ms < n) return;\n\t  if (ms < n * 1.5) return Math.floor(ms / n) + ' ' + name;\n\t  return Math.ceil(ms / n) + ' ' + name + 's';\n\t}\n\n\n/***/ },\n/* 12 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tvar OBJECT_STORE_DATA = 'syncdb-data';\n\t\n\tfunction IDBDriver(dbName) {\n\t    if (typeof dbName !== 'string')\n\t        throw new TypeError('dbName argument must be a string');\n\t\n\t    this._db = null;\n\t    this._name = dbName;\n\t\n\t    this._doInit();\n\t}\n\t\n\tIDBDriver.prototype._doInit = function () {\n\t    var self = this;\n\t    this._init = new Promise(function (resolve, reject) {\n\t        var openRequest = indexedDB.open(self._name, 1);\n\t        openRequest.onerror = reject;\n\t        openRequest.onsuccess = function () {\n\t            self._db = openRequest.result;\n\t            resolve();\n\t        };\n\t        openRequest.onupgradeneeded = function (event) {\n\t            var db = event.target.result;\n\t            var objectStore = db.createObjectStore(OBJECT_STORE_DATA, {keyPath: 'id'});\n\t            objectStore.createIndex('seqid', 'seqid');\n\t        };\n\t    });\n\t};\n\t\n\tIDBDriver.prototype.insert = function (obj) {\n\t    var self = this;\n\t    return this._init.then(function () {\n\t        return new Promise(function (resolve, reject) {\n\t            var transaction = self._db.transaction(OBJECT_STORE_DATA, 'readwrite');\n\t            transaction.oncomplete = resolve;\n\t            transaction.onerror = function () {\n\t                reject(transaction.error);\n\t            };\n\t            var objectStore = transaction.objectStore(OBJECT_STORE_DATA);\n\t            objectStore.put(obj);\n\t        });\n\t    });\n\t};\n\t\n\tIDBDriver.prototype.get = function (id) {\n\t    var self = this;\n\t    return this._init.then(function () {\n\t        return new Promise(function (resolve, reject) {\n\t            var transaction = self._db.transaction(OBJECT_STORE_DATA, 'readonly');\n\t            transaction.onerror = function () {\n\t                reject(transaction.error);\n\t            };\n\t            var objectStore = transaction.objectStore(OBJECT_STORE_DATA);\n\t            var request = objectStore.get(id);\n\t            request.onsuccess = function (event) {\n\t                resolve(event.target.result || null);\n\t            };\n\t        });\n\t    });\n\t};\n\t\n\tIDBDriver.prototype.getData = function () {\n\t    var self = this;\n\t    return this._init.then(function () {\n\t        return new Promise(function (resolve, reject) {\n\t            var result = [];\n\t            var transaction = self._db.transaction(OBJECT_STORE_DATA, 'readonly');\n\t            transaction.oncomplete = function () {\n\t                resolve(result);\n\t            };\n\t            transaction.onerror = function () {\n\t                reject(transaction.error);\n\t            };\n\t            var objectStore = transaction.objectStore(OBJECT_STORE_DATA);\n\t            var request = objectStore.openCursor();\n\t            request.onsuccess = function (event) {\n\t                var cursor = event.target.result;\n\t                if (cursor) {\n\t                    result.push(cursor.value);\n\t                    cursor.continue();\n\t                }\n\t            };\n\t        });\n\t    });\n\t};\n\t\n\tIDBDriver.prototype.getLastSeqid = function () {\n\t    var self = this;\n\t    return this._init.then(function () {\n\t        return new Promise(function (resolve, reject) {\n\t            var transaction = self._db.transaction(OBJECT_STORE_DATA, 'readonly');\n\t            transaction.onerror = function () {\n\t                reject(transaction.error);\n\t            };\n\t            var objectStore = transaction.objectStore(OBJECT_STORE_DATA);\n\t            var index = objectStore.index('seqid');\n\t            index.openCursor(null, 'prev').onsuccess = function (event) {\n\t                var cursor = event.target.result;\n\t                if (cursor) {\n\t                    resolve(cursor.value.seqid);\n\t                } else {\n\t                    resolve(0);\n\t                }\n\t            };\n\t        });\n\t    });\n\t};\n\t\n\tIDBDriver.prototype.getRevData = function () {\n\t    // todo optimize, do not get everything from IDB\n\t    return this.getData().then(function (data) {\n\t        return data.filter(function (doc) {\n\t            return doc.revid > 0;\n\t        });\n\t    });\n\t};\n\t\n\tIDBDriver.prototype.clearDatabase = function () {\n\t    var self = this;\n\t    return this._init.then(function () {\n\t        self._db.close();\n\t        return new Promise(function (resolve, reject) {\n\t            var request = indexedDB.deleteDatabase(self._name);\n\t            request.onerror = reject;\n\t            request.onsuccess = function () {\n\t                self._doInit();\n\t                resolve();\n\t            };\n\t        });\n\t    });\n\t};\n\t\n\tmodule.exports = IDBDriver;\n\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** sync-db-browser.min.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap ea703daf1c85073b66cd\n **/","'use strict';\n\nvar SyncDB = exports.SyncDB = require('sync-db');\nvar IDBDriver = exports.IDBDriver = require('sync-db-idb');\n\nexports.createSync = function (name, url, driver) {\n    if (typeof name !== 'string')\n        throw new TypeError('name argument must be a string');\n    if (driver === undefined)\n        driver = 'idb';\n    if (driver !== 'idb')\n        throw new RangeError('only \"idb\" is supported as a driver');\n    return new SyncDB({\n        driver: new IDBDriver(name),\n        url: url\n    });\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./src/index.js\n ** module id = 0\n ** module chunks = 0\n **/","'use strict';\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _typeof(obj) { return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Sync = require('./sync');\n\nvar SyncDB = (function () {\n    function SyncDB(options) {\n        _classCallCheck(this, SyncDB);\n\n        if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) !== 'object' || options === null) {\n            throw new TypeError('options argument must be an object');\n        }\n        if (_typeof(options.driver) !== 'object') {\n            throw new TypeError('driver option must be an object');\n        }\n\n        this._onGet = options.onGet || defaultOnGet;\n\n        this._driver = options.driver;\n        this._url = options.url ? options.url : '';\n        this._limit = options.limit || 5;\n\n        this._exec = null;\n    }\n\n    _createClass(SyncDB, [{\n        key: 'sync',\n        value: function sync() {\n            var _this = this;\n\n            if (this._exec) {\n                return this._exec;\n            }\n            var exec = new Sync(this._driver, this._url, this._limit);\n            this._exec = exec;\n\n            exec.then(function () {\n                _this._exec = null;\n            });\n            return exec;\n        }\n    }, {\n        key: 'insert',\n        value: function insert(docID, document) {\n            var _this2 = this;\n\n            return this._driver.get(docID).then(function (doc) {\n                if (!doc) {\n                    doc = {\n                        id: docID,\n                        seqid: -1\n                    };\n                }\n                doc.revid = (doc.revid || 0) + 1;\n                doc.date = Date.now();\n                doc.value = document;\n                return _this2._driver.insert(doc);\n            });\n        }\n    }, {\n        key: 'remove',\n        value: function remove(docID) {\n            throw new Error('remove is unimplemented');\n            //return this._driver.remove(docID);\n        }\n    }, {\n        key: 'get',\n        value: function get(docID) {\n            return this._driver.get(docID).then(this._onGet);\n        }\n    }, {\n        key: 'getData',\n        value: function getData() {\n            var _this3 = this;\n\n            return this._driver.getData().then(function (docs) {\n                return docs.map(_this3._onGet);\n            });\n        }\n    }, {\n        key: 'clearDatabase',\n        value: function clearDatabase() {\n            return this._driver.clearDatabase();\n        }\n    }]);\n\n    return SyncDB;\n})();\n\nmodule.exports = SyncDB;\n\nfunction defaultOnGet(dbObject) {\n    return dbObject.value;\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/sync-db/lib/index.js\n ** module id = 1\n ** module chunks = 0\n **/","'use strict';\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _typeof(obj) { return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar EventEmitter = require('events');\nvar agent = require('./superagent');\nvar debug = require('debug')('syncdb:sync');\n\nvar Sync = (function (_EventEmitter) {\n    _inherits(Sync, _EventEmitter);\n\n    function Sync(driver, url, limit) {\n        _classCallCheck(this, Sync);\n\n        debug('new sync');\n\n        var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(Sync).call(this));\n\n        _this._driver = driver;\n        _this._url = url;\n        _this._seqid = 0;\n        _this._inserted = 0;\n        _this._pushed = 0;\n        _this._limit = limit;\n\n        _this._promise = _this._start();\n        _this._promise.catch(function (e) {\n            // This check is needed, otherwise it will throw an exception if\n            // there is no error listener\n            if (_this.listenerCount('error') > 0) {\n                _this.emit('error', e);\n            }\n        });\n        _this.then = _this._promise.then.bind(_this._promise);\n        return _this;\n    }\n\n    _createClass(Sync, [{\n        key: '_start',\n        value: function _start() {\n            var _this2 = this;\n\n            debug('start sync');\n            // Get last local seqid\n            return this._driver.getLastSeqid().then(function (id) {\n                _this2._seqid = id;\n                var infoUrl = _this2._url + '/info?since=' + id;\n                // Get remaining sync steps from server\n                return agent.get(infoUrl).end().then(function (result) {\n                    _this2.emit('info', result.body.data);\n                    return _this2._fetch();\n                });\n            });\n        }\n    }, {\n        key: '_fetch',\n        value: function _fetch() {\n            var _this3 = this;\n\n            debug('_fetch');\n            var url = this._url + '?since=' + this._seqid + '&limit=' + this._limit;\n            return agent.get(url).end().then(function (response) {\n                var result = response.body.data;\n                if (result.length === 0) {\n                    return _this3._push();\n                }\n                var i = 0;\n                var insertNext = function insertNext() {\n                    if (result.length > i) {\n                        var _ret = (function () {\n                            var res = result[i++];\n                            return {\n                                v: _this3._insert(res).then(function () {\n                                    _this3._seqid = res.seqid;\n                                    _this3._inserted++;\n                                    _this3.emit('progress', res);\n                                    return insertNext();\n                                })\n                            };\n                        })();\n\n                        if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === \"object\") return _ret.v;\n                    } else {\n                        return _this3._fetch();\n                    }\n                };\n                return insertNext();\n            });\n        }\n    }, {\n        key: '_insert',\n        value: function _insert(data) {\n            var _this4 = this;\n\n            debug('_insert');\n            return this._driver.get(data.id).then(function (doc) {\n                var toInsert = {\n                    id: data.id,\n                    seqid: data.seqid,\n                    revid: 0,\n                    date: data.date,\n                    value: data.value\n                };\n                if (doc && doc.seqid !== data.seqid) {\n                    return nextIDForConflict(doc.id, _this4._driver, 0).then(function (id) {\n                        var docBackup = {\n                            id: id,\n                            seqid: -1,\n                            revid: 0,\n                            date: doc.date,\n                            value: doc.value\n                        };\n                        return _this4._driver.insert(docBackup).then(function () {\n                            return _this4._driver.insert(toInsert);\n                        });\n                    });\n                } else {\n                    return _this4._driver.insert(toInsert);\n                }\n            });\n        }\n    }, {\n        key: '_push',\n        value: function _push() {\n            var _this5 = this;\n\n            debug('_push');\n            return this._driver.getRevData().then(function (data) {\n                var url = _this5._url + '/update';\n                var i = 0;\n                var pushNext = function pushNext() {\n                    if (data.length > i) {\n                        var _ret2 = (function () {\n                            var obj = data[i++];\n                            var toPush = {\n                                id: obj.id,\n                                seqid: obj.seqid,\n                                date: obj.date,\n                                state: 'update',\n                                value: obj.value\n                            };\n                            return {\n                                v: agent.post(url).send(toPush).end().then(function (response) {\n                                    toPush.seqid = response.body.data.seqid;\n                                    return _this5._driver.insert(toPush).then(function () {\n                                        _this5._pushed++;\n                                        return pushNext();\n                                    });\n                                }, function (e) {\n                                    if (e.status === 409) {\n                                        return _this5._fetch();\n                                    }\n                                    return Promise.reject(e);\n                                })\n                            };\n                        })();\n\n                        if ((typeof _ret2 === 'undefined' ? 'undefined' : _typeof(_ret2)) === \"object\") return _ret2.v;\n                    } else {\n                        return _this5._end();\n                    }\n                };\n                return pushNext();\n            });\n        }\n    }, {\n        key: '_end',\n        value: function _end() {\n            debug('end sync');\n            var resInfo = {\n                inserted: this._inserted,\n                pushed: this._pushed\n            };\n            this.emit('end', resInfo);\n            return resInfo;\n        }\n    }]);\n\n    return Sync;\n})(EventEmitter);\n\nmodule.exports = Sync;\n\nfunction nextIDForConflict(currentID, driver, it) {\n    if (it === undefined) it = 0;\n    var id = currentID + '_' + it;\n    return driver.get(id).then(function (data) {\n        if (!data) return id;else return nextIDForConflict(currentID, driver, ++it);\n    });\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/sync-db/lib/sync.js\n ** module id = 2\n ** module chunks = 0\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\nfunction EventEmitter() {\n  this._events = this._events || {};\n  this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n  if (!isNumber(n) || n < 0 || isNaN(n))\n    throw TypeError('n must be a positive number');\n  this._maxListeners = n;\n  return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n  var er, handler, len, args, i, listeners;\n\n  if (!this._events)\n    this._events = {};\n\n  // If there is no 'error' event listener then throw.\n  if (type === 'error') {\n    if (!this._events.error ||\n        (isObject(this._events.error) && !this._events.error.length)) {\n      er = arguments[1];\n      if (er instanceof Error) {\n        throw er; // Unhandled 'error' event\n      }\n      throw TypeError('Uncaught, unspecified \"error\" event.');\n    }\n  }\n\n  handler = this._events[type];\n\n  if (isUndefined(handler))\n    return false;\n\n  if (isFunction(handler)) {\n    switch (arguments.length) {\n      // fast cases\n      case 1:\n        handler.call(this);\n        break;\n      case 2:\n        handler.call(this, arguments[1]);\n        break;\n      case 3:\n        handler.call(this, arguments[1], arguments[2]);\n        break;\n      // slower\n      default:\n        args = Array.prototype.slice.call(arguments, 1);\n        handler.apply(this, args);\n    }\n  } else if (isObject(handler)) {\n    args = Array.prototype.slice.call(arguments, 1);\n    listeners = handler.slice();\n    len = listeners.length;\n    for (i = 0; i < len; i++)\n      listeners[i].apply(this, args);\n  }\n\n  return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n  var m;\n\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  if (!this._events)\n    this._events = {};\n\n  // To avoid recursion in the case that type === \"newListener\"! Before\n  // adding it to the listeners, first emit \"newListener\".\n  if (this._events.newListener)\n    this.emit('newListener', type,\n              isFunction(listener.listener) ?\n              listener.listener : listener);\n\n  if (!this._events[type])\n    // Optimize the case of one listener. Don't need the extra array object.\n    this._events[type] = listener;\n  else if (isObject(this._events[type]))\n    // If we've already got an array, just append.\n    this._events[type].push(listener);\n  else\n    // Adding the second element, need to change to array.\n    this._events[type] = [this._events[type], listener];\n\n  // Check for listener leak\n  if (isObject(this._events[type]) && !this._events[type].warned) {\n    if (!isUndefined(this._maxListeners)) {\n      m = this._maxListeners;\n    } else {\n      m = EventEmitter.defaultMaxListeners;\n    }\n\n    if (m && m > 0 && this._events[type].length > m) {\n      this._events[type].warned = true;\n      console.error('(node) warning: possible EventEmitter memory ' +\n                    'leak detected. %d listeners added. ' +\n                    'Use emitter.setMaxListeners() to increase limit.',\n                    this._events[type].length);\n      if (typeof console.trace === 'function') {\n        // not supported in IE 10\n        console.trace();\n      }\n    }\n  }\n\n  return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  var fired = false;\n\n  function g() {\n    this.removeListener(type, g);\n\n    if (!fired) {\n      fired = true;\n      listener.apply(this, arguments);\n    }\n  }\n\n  g.listener = listener;\n  this.on(type, g);\n\n  return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n  var list, position, length, i;\n\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  if (!this._events || !this._events[type])\n    return this;\n\n  list = this._events[type];\n  length = list.length;\n  position = -1;\n\n  if (list === listener ||\n      (isFunction(list.listener) && list.listener === listener)) {\n    delete this._events[type];\n    if (this._events.removeListener)\n      this.emit('removeListener', type, listener);\n\n  } else if (isObject(list)) {\n    for (i = length; i-- > 0;) {\n      if (list[i] === listener ||\n          (list[i].listener && list[i].listener === listener)) {\n        position = i;\n        break;\n      }\n    }\n\n    if (position < 0)\n      return this;\n\n    if (list.length === 1) {\n      list.length = 0;\n      delete this._events[type];\n    } else {\n      list.splice(position, 1);\n    }\n\n    if (this._events.removeListener)\n      this.emit('removeListener', type, listener);\n  }\n\n  return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n  var key, listeners;\n\n  if (!this._events)\n    return this;\n\n  // not listening for removeListener, no need to emit\n  if (!this._events.removeListener) {\n    if (arguments.length === 0)\n      this._events = {};\n    else if (this._events[type])\n      delete this._events[type];\n    return this;\n  }\n\n  // emit removeListener for all listeners on all events\n  if (arguments.length === 0) {\n    for (key in this._events) {\n      if (key === 'removeListener') continue;\n      this.removeAllListeners(key);\n    }\n    this.removeAllListeners('removeListener');\n    this._events = {};\n    return this;\n  }\n\n  listeners = this._events[type];\n\n  if (isFunction(listeners)) {\n    this.removeListener(type, listeners);\n  } else if (listeners) {\n    // LIFO order\n    while (listeners.length)\n      this.removeListener(type, listeners[listeners.length - 1]);\n  }\n  delete this._events[type];\n\n  return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n  var ret;\n  if (!this._events || !this._events[type])\n    ret = [];\n  else if (isFunction(this._events[type]))\n    ret = [this._events[type]];\n  else\n    ret = this._events[type].slice();\n  return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n  if (this._events) {\n    var evlistener = this._events[type];\n\n    if (isFunction(evlistener))\n      return 1;\n    else if (evlistener)\n      return evlistener.length;\n  }\n  return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/events/events.js\n ** module id = 3\n ** module chunks = 0\n **/","'use strict';\n\nmodule.exports = require('superagent-promise')(require('superagent'), Promise);\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/sync-db/lib/superagent.js\n ** module id = 4\n ** module chunks = 0\n **/","/**\n * Promise wrapper for superagent\n */\n\nfunction wrap(superagent, Promise) {\n  /**\n   * Request object similar to superagent.Request, but with end() returning\n   * a promise.\n   */\n  function PromiseRequest() {\n    superagent.Request.apply(this, arguments);\n  }\n\n  // Inherit form superagent.Request\n  PromiseRequest.prototype = Object.create(superagent.Request.prototype);\n\n  /** Send request and get a promise that `end` was emitted */\n  PromiseRequest.prototype.end = function(cb) {\n    var _end = superagent.Request.prototype.end;\n    var self = this;\n\n    return new Promise(function(accept, reject) {\n      _end.call(self, function(err, response) {\n        if (cb) {\n          cb(err, response);\n        }\n\n        if (err) {\n          err.response = response;\n          reject(err);\n        } else {\n          accept(response);\n        }\n      });\n    });\n  };\n\n  /** Provide a more promise-y interface */\n  PromiseRequest.prototype.then = function(resolve, reject) {\n    var _end = superagent.Request.prototype.end;\n    var self = this;\n\n    return new Promise(function(accept, reject) {\n      _end.call(self, function(err, response) {\n        if (err) {\n          err.response = response;\n          reject(err);\n        } else {\n          accept(response);\n        }\n      });\n    }).then(resolve, reject);\n  };\n\n  /**\n   * Request builder with same interface as superagent.\n   * It is convenient to import this as `request` in place of superagent.\n   */\n  var request = function(method, url) {\n    return new PromiseRequest(method, url);\n  };\n\n  /** Helper for making an options request */\n  request.options = function(url) {\n    return request('OPTIONS', url);\n  }\n\n  /** Helper for making a head request */\n  request.head = function(url, data) {\n    var req = request('HEAD', url);\n    if (data) {\n      req.send(data);\n    }\n    return req;\n  };\n\n  /** Helper for making a get request */\n  request.get = function(url, data) {\n    var req = request('GET', url);\n    if (data) {\n      req.query(data);\n    }\n    return req;\n  };\n\n  /** Helper for making a post request */\n  request.post = function(url, data) {\n    var req = request('POST', url);\n    if (data) {\n      req.send(data);\n    }\n    return req;\n  };\n\n  /** Helper for making a put request */\n  request.put = function(url, data) {\n    var req = request('PUT', url);\n    if (data) {\n      req.send(data);\n    }\n    return req;\n  };\n\n  /** Helper for making a patch request */\n  request.patch = function(url, data) {\n    var req = request('PATCH', url);\n    if (data) {\n      req.send(data);\n    }\n    return req;\n  };\n\n  /** Helper for making a delete request */\n  request.del = function(url) {\n    return request('DELETE', url);\n  };\n\n  // Export the request builder\n  return request;\n}\n\nmodule.exports = wrap;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/superagent-promise/index.js\n ** module id = 5\n ** module chunks = 0\n **/","/**\n * Module dependencies.\n */\n\nvar Emitter = require('emitter');\nvar reduce = require('reduce');\n\n/**\n * Root reference for iframes.\n */\n\nvar root;\nif (typeof window !== 'undefined') { // Browser window\n  root = window;\n} else if (typeof self !== 'undefined') { // Web Worker\n  root = self;\n} else { // Other environments\n  root = this;\n}\n\n/**\n * Noop.\n */\n\nfunction noop(){};\n\n/**\n * Check if `obj` is a host object,\n * we don't want to serialize these :)\n *\n * TODO: future proof, move to compoent land\n *\n * @param {Object} obj\n * @return {Boolean}\n * @api private\n */\n\nfunction isHost(obj) {\n  var str = {}.toString.call(obj);\n\n  switch (str) {\n    case '[object File]':\n    case '[object Blob]':\n    case '[object FormData]':\n      return true;\n    default:\n      return false;\n  }\n}\n\n/**\n * Determine XHR.\n */\n\nrequest.getXHR = function () {\n  if (root.XMLHttpRequest\n      && (!root.location || 'file:' != root.location.protocol\n          || !root.ActiveXObject)) {\n    return new XMLHttpRequest;\n  } else {\n    try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch(e) {}\n    try { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch(e) {}\n    try { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); } catch(e) {}\n    try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch(e) {}\n  }\n  return false;\n};\n\n/**\n * Removes leading and trailing whitespace, added to support IE.\n *\n * @param {String} s\n * @return {String}\n * @api private\n */\n\nvar trim = ''.trim\n  ? function(s) { return s.trim(); }\n  : function(s) { return s.replace(/(^\\s*|\\s*$)/g, ''); };\n\n/**\n * Check if `obj` is an object.\n *\n * @param {Object} obj\n * @return {Boolean}\n * @api private\n */\n\nfunction isObject(obj) {\n  return obj === Object(obj);\n}\n\n/**\n * Serialize the given `obj`.\n *\n * @param {Object} obj\n * @return {String}\n * @api private\n */\n\nfunction serialize(obj) {\n  if (!isObject(obj)) return obj;\n  var pairs = [];\n  for (var key in obj) {\n    if (null != obj[key]) {\n      pushEncodedKeyValuePair(pairs, key, obj[key]);\n        }\n      }\n  return pairs.join('&');\n}\n\n/**\n * Helps 'serialize' with serializing arrays.\n * Mutates the pairs array.\n *\n * @param {Array} pairs\n * @param {String} key\n * @param {Mixed} val\n */\n\nfunction pushEncodedKeyValuePair(pairs, key, val) {\n  if (Array.isArray(val)) {\n    return val.forEach(function(v) {\n      pushEncodedKeyValuePair(pairs, key, v);\n    });\n  }\n  pairs.push(encodeURIComponent(key)\n    + '=' + encodeURIComponent(val));\n}\n\n/**\n * Expose serialization method.\n */\n\n request.serializeObject = serialize;\n\n /**\n  * Parse the given x-www-form-urlencoded `str`.\n  *\n  * @param {String} str\n  * @return {Object}\n  * @api private\n  */\n\nfunction parseString(str) {\n  var obj = {};\n  var pairs = str.split('&');\n  var parts;\n  var pair;\n\n  for (var i = 0, len = pairs.length; i < len; ++i) {\n    pair = pairs[i];\n    parts = pair.split('=');\n    obj[decodeURIComponent(parts[0])] = decodeURIComponent(parts[1]);\n  }\n\n  return obj;\n}\n\n/**\n * Expose parser.\n */\n\nrequest.parseString = parseString;\n\n/**\n * Default MIME type map.\n *\n *     superagent.types.xml = 'application/xml';\n *\n */\n\nrequest.types = {\n  html: 'text/html',\n  json: 'application/json',\n  xml: 'application/xml',\n  urlencoded: 'application/x-www-form-urlencoded',\n  'form': 'application/x-www-form-urlencoded',\n  'form-data': 'application/x-www-form-urlencoded'\n};\n\n/**\n * Default serialization map.\n *\n *     superagent.serialize['application/xml'] = function(obj){\n *       return 'generated xml here';\n *     };\n *\n */\n\n request.serialize = {\n   'application/x-www-form-urlencoded': serialize,\n   'application/json': JSON.stringify\n };\n\n /**\n  * Default parsers.\n  *\n  *     superagent.parse['application/xml'] = function(str){\n  *       return { object parsed from str };\n  *     };\n  *\n  */\n\nrequest.parse = {\n  'application/x-www-form-urlencoded': parseString,\n  'application/json': JSON.parse\n};\n\n/**\n * Parse the given header `str` into\n * an object containing the mapped fields.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseHeader(str) {\n  var lines = str.split(/\\r?\\n/);\n  var fields = {};\n  var index;\n  var line;\n  var field;\n  var val;\n\n  lines.pop(); // trailing CRLF\n\n  for (var i = 0, len = lines.length; i < len; ++i) {\n    line = lines[i];\n    index = line.indexOf(':');\n    field = line.slice(0, index).toLowerCase();\n    val = trim(line.slice(index + 1));\n    fields[field] = val;\n  }\n\n  return fields;\n}\n\n/**\n * Check if `mime` is json or has +json structured syntax suffix.\n *\n * @param {String} mime\n * @return {Boolean}\n * @api private\n */\n\nfunction isJSON(mime) {\n  return /[\\/+]json\\b/.test(mime);\n}\n\n/**\n * Return the mime type for the given `str`.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\nfunction type(str){\n  return str.split(/ *; */).shift();\n};\n\n/**\n * Return header field parameters.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction params(str){\n  return reduce(str.split(/ *; */), function(obj, str){\n    var parts = str.split(/ *= */)\n      , key = parts.shift()\n      , val = parts.shift();\n\n    if (key && val) obj[key] = val;\n    return obj;\n  }, {});\n};\n\n/**\n * Initialize a new `Response` with the given `xhr`.\n *\n *  - set flags (.ok, .error, etc)\n *  - parse header\n *\n * Examples:\n *\n *  Aliasing `superagent` as `request` is nice:\n *\n *      request = superagent;\n *\n *  We can use the promise-like API, or pass callbacks:\n *\n *      request.get('/').end(function(res){});\n *      request.get('/', function(res){});\n *\n *  Sending data can be chained:\n *\n *      request\n *        .post('/user')\n *        .send({ name: 'tj' })\n *        .end(function(res){});\n *\n *  Or passed to `.send()`:\n *\n *      request\n *        .post('/user')\n *        .send({ name: 'tj' }, function(res){});\n *\n *  Or passed to `.post()`:\n *\n *      request\n *        .post('/user', { name: 'tj' })\n *        .end(function(res){});\n *\n * Or further reduced to a single call for simple cases:\n *\n *      request\n *        .post('/user', { name: 'tj' }, function(res){});\n *\n * @param {XMLHTTPRequest} xhr\n * @param {Object} options\n * @api private\n */\n\nfunction Response(req, options) {\n  options = options || {};\n  this.req = req;\n  this.xhr = this.req.xhr;\n  // responseText is accessible only if responseType is '' or 'text' and on older browsers\n  this.text = ((this.req.method !='HEAD' && (this.xhr.responseType === '' || this.xhr.responseType === 'text')) || typeof this.xhr.responseType === 'undefined')\n     ? this.xhr.responseText\n     : null;\n  this.statusText = this.req.xhr.statusText;\n  this.setStatusProperties(this.xhr.status);\n  this.header = this.headers = parseHeader(this.xhr.getAllResponseHeaders());\n  // getAllResponseHeaders sometimes falsely returns \"\" for CORS requests, but\n  // getResponseHeader still works. so we get content-type even if getting\n  // other headers fails.\n  this.header['content-type'] = this.xhr.getResponseHeader('content-type');\n  this.setHeaderProperties(this.header);\n  this.body = this.req.method != 'HEAD'\n    ? this.parseBody(this.text ? this.text : this.xhr.response)\n    : null;\n}\n\n/**\n * Get case-insensitive `field` value.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\nResponse.prototype.get = function(field){\n  return this.header[field.toLowerCase()];\n};\n\n/**\n * Set header related properties:\n *\n *   - `.type` the content type without params\n *\n * A response of \"Content-Type: text/plain; charset=utf-8\"\n * will provide you with a `.type` of \"text/plain\".\n *\n * @param {Object} header\n * @api private\n */\n\nResponse.prototype.setHeaderProperties = function(header){\n  // content-type\n  var ct = this.header['content-type'] || '';\n  this.type = type(ct);\n\n  // params\n  var obj = params(ct);\n  for (var key in obj) this[key] = obj[key];\n};\n\n/**\n * Parse the given body `str`.\n *\n * Used for auto-parsing of bodies. Parsers\n * are defined on the `superagent.parse` object.\n *\n * @param {String} str\n * @return {Mixed}\n * @api private\n */\n\nResponse.prototype.parseBody = function(str){\n  var parse = request.parse[this.type];\n  return parse && str && (str.length || str instanceof Object)\n    ? parse(str)\n    : null;\n};\n\n/**\n * Set flags such as `.ok` based on `status`.\n *\n * For example a 2xx response will give you a `.ok` of __true__\n * whereas 5xx will be __false__ and `.error` will be __true__. The\n * `.clientError` and `.serverError` are also available to be more\n * specific, and `.statusType` is the class of error ranging from 1..5\n * sometimes useful for mapping respond colors etc.\n *\n * \"sugar\" properties are also defined for common cases. Currently providing:\n *\n *   - .noContent\n *   - .badRequest\n *   - .unauthorized\n *   - .notAcceptable\n *   - .notFound\n *\n * @param {Number} status\n * @api private\n */\n\nResponse.prototype.setStatusProperties = function(status){\n  // handle IE9 bug: http://stackoverflow.com/questions/10046972/msie-returns-status-code-of-1223-for-ajax-request\n  if (status === 1223) {\n    status = 204;\n  }\n\n  var type = status / 100 | 0;\n\n  // status / class\n  this.status = this.statusCode = status;\n  this.statusType = type;\n\n  // basics\n  this.info = 1 == type;\n  this.ok = 2 == type;\n  this.clientError = 4 == type;\n  this.serverError = 5 == type;\n  this.error = (4 == type || 5 == type)\n    ? this.toError()\n    : false;\n\n  // sugar\n  this.accepted = 202 == status;\n  this.noContent = 204 == status;\n  this.badRequest = 400 == status;\n  this.unauthorized = 401 == status;\n  this.notAcceptable = 406 == status;\n  this.notFound = 404 == status;\n  this.forbidden = 403 == status;\n};\n\n/**\n * Return an `Error` representative of this response.\n *\n * @return {Error}\n * @api public\n */\n\nResponse.prototype.toError = function(){\n  var req = this.req;\n  var method = req.method;\n  var url = req.url;\n\n  var msg = 'cannot ' + method + ' ' + url + ' (' + this.status + ')';\n  var err = new Error(msg);\n  err.status = this.status;\n  err.method = method;\n  err.url = url;\n\n  return err;\n};\n\n/**\n * Expose `Response`.\n */\n\nrequest.Response = Response;\n\n/**\n * Initialize a new `Request` with the given `method` and `url`.\n *\n * @param {String} method\n * @param {String} url\n * @api public\n */\n\nfunction Request(method, url) {\n  var self = this;\n  Emitter.call(this);\n  this._query = this._query || [];\n  this.method = method;\n  this.url = url;\n  this.header = {};\n  this._header = {};\n  this.on('end', function(){\n    var err = null;\n    var res = null;\n\n    try {\n      res = new Response(self);\n    } catch(e) {\n      err = new Error('Parser is unable to parse the response');\n      err.parse = true;\n      err.original = e;\n      // issue #675: return the raw response if the response parsing fails\n      err.rawResponse = self.xhr && self.xhr.responseText ? self.xhr.responseText : null;\n      return self.callback(err);\n    }\n\n    self.emit('response', res);\n\n    if (err) {\n      return self.callback(err, res);\n    }\n\n    if (res.status >= 200 && res.status < 300) {\n      return self.callback(err, res);\n    }\n\n    var new_err = new Error(res.statusText || 'Unsuccessful HTTP response');\n    new_err.original = err;\n    new_err.response = res;\n    new_err.status = res.status;\n\n    self.callback(new_err, res);\n  });\n}\n\n/**\n * Mixin `Emitter`.\n */\n\nEmitter(Request.prototype);\n\n/**\n * Allow for extension\n */\n\nRequest.prototype.use = function(fn) {\n  fn(this);\n  return this;\n}\n\n/**\n * Set timeout to `ms`.\n *\n * @param {Number} ms\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.timeout = function(ms){\n  this._timeout = ms;\n  return this;\n};\n\n/**\n * Clear previous timeout.\n *\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.clearTimeout = function(){\n  this._timeout = 0;\n  clearTimeout(this._timer);\n  return this;\n};\n\n/**\n * Abort the request, and clear potential timeout.\n *\n * @return {Request}\n * @api public\n */\n\nRequest.prototype.abort = function(){\n  if (this.aborted) return;\n  this.aborted = true;\n  this.xhr.abort();\n  this.clearTimeout();\n  this.emit('abort');\n  return this;\n};\n\n/**\n * Set header `field` to `val`, or multiple fields with one object.\n *\n * Examples:\n *\n *      req.get('/')\n *        .set('Accept', 'application/json')\n *        .set('X-API-Key', 'foobar')\n *        .end(callback);\n *\n *      req.get('/')\n *        .set({ Accept: 'application/json', 'X-API-Key': 'foobar' })\n *        .end(callback);\n *\n * @param {String|Object} field\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.set = function(field, val){\n  if (isObject(field)) {\n    for (var key in field) {\n      this.set(key, field[key]);\n    }\n    return this;\n  }\n  this._header[field.toLowerCase()] = val;\n  this.header[field] = val;\n  return this;\n};\n\n/**\n * Remove header `field`.\n *\n * Example:\n *\n *      req.get('/')\n *        .unset('User-Agent')\n *        .end(callback);\n *\n * @param {String} field\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.unset = function(field){\n  delete this._header[field.toLowerCase()];\n  delete this.header[field];\n  return this;\n};\n\n/**\n * Get case-insensitive header `field` value.\n *\n * @param {String} field\n * @return {String}\n * @api private\n */\n\nRequest.prototype.getHeader = function(field){\n  return this._header[field.toLowerCase()];\n};\n\n/**\n * Set Content-Type to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n *      superagent.types.xml = 'application/xml';\n *\n *      request.post('/')\n *        .type('xml')\n *        .send(xmlstring)\n *        .end(callback);\n *\n *      request.post('/')\n *        .type('application/xml')\n *        .send(xmlstring)\n *        .end(callback);\n *\n * @param {String} type\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.type = function(type){\n  this.set('Content-Type', request.types[type] || type);\n  return this;\n};\n\n/**\n * Force given parser\n *\n * Sets the body parser no matter type.\n *\n * @param {Function}\n * @api public\n */\n\nRequest.prototype.parse = function(fn){\n  this._parser = fn;\n  return this;\n};\n\n/**\n * Set Accept to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n *      superagent.types.json = 'application/json';\n *\n *      request.get('/agent')\n *        .accept('json')\n *        .end(callback);\n *\n *      request.get('/agent')\n *        .accept('application/json')\n *        .end(callback);\n *\n * @param {String} accept\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.accept = function(type){\n  this.set('Accept', request.types[type] || type);\n  return this;\n};\n\n/**\n * Set Authorization field value with `user` and `pass`.\n *\n * @param {String} user\n * @param {String} pass\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.auth = function(user, pass){\n  var str = btoa(user + ':' + pass);\n  this.set('Authorization', 'Basic ' + str);\n  return this;\n};\n\n/**\n* Add query-string `val`.\n*\n* Examples:\n*\n*   request.get('/shoes')\n*     .query('size=10')\n*     .query({ color: 'blue' })\n*\n* @param {Object|String} val\n* @return {Request} for chaining\n* @api public\n*/\n\nRequest.prototype.query = function(val){\n  if ('string' != typeof val) val = serialize(val);\n  if (val) this._query.push(val);\n  return this;\n};\n\n/**\n * Write the field `name` and `val` for \"multipart/form-data\"\n * request bodies.\n *\n * ``` js\n * request.post('/upload')\n *   .field('foo', 'bar')\n *   .end(callback);\n * ```\n *\n * @param {String} name\n * @param {String|Blob|File} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.field = function(name, val){\n  if (!this._formData) this._formData = new root.FormData();\n  this._formData.append(name, val);\n  return this;\n};\n\n/**\n * Queue the given `file` as an attachment to the specified `field`,\n * with optional `filename`.\n *\n * ``` js\n * request.post('/upload')\n *   .attach(new Blob(['<a id=\"a\"><b id=\"b\">hey!</b></a>'], { type: \"text/html\"}))\n *   .end(callback);\n * ```\n *\n * @param {String} field\n * @param {Blob|File} file\n * @param {String} filename\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.attach = function(field, file, filename){\n  if (!this._formData) this._formData = new root.FormData();\n  this._formData.append(field, file, filename || file.name);\n  return this;\n};\n\n/**\n * Send `data` as the request body, defaulting the `.type()` to \"json\" when\n * an object is given.\n *\n * Examples:\n *\n *       // manual json\n *       request.post('/user')\n *         .type('json')\n *         .send('{\"name\":\"tj\"}')\n *         .end(callback)\n *\n *       // auto json\n *       request.post('/user')\n *         .send({ name: 'tj' })\n *         .end(callback)\n *\n *       // manual x-www-form-urlencoded\n *       request.post('/user')\n *         .type('form')\n *         .send('name=tj')\n *         .end(callback)\n *\n *       // auto x-www-form-urlencoded\n *       request.post('/user')\n *         .type('form')\n *         .send({ name: 'tj' })\n *         .end(callback)\n *\n *       // defaults to x-www-form-urlencoded\n  *      request.post('/user')\n  *        .send('name=tobi')\n  *        .send('species=ferret')\n  *        .end(callback)\n *\n * @param {String|Object} data\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.send = function(data){\n  var obj = isObject(data);\n  var type = this.getHeader('Content-Type');\n\n  // merge\n  if (obj && isObject(this._data)) {\n    for (var key in data) {\n      this._data[key] = data[key];\n    }\n  } else if ('string' == typeof data) {\n    if (!type) this.type('form');\n    type = this.getHeader('Content-Type');\n    if ('application/x-www-form-urlencoded' == type) {\n      this._data = this._data\n        ? this._data + '&' + data\n        : data;\n    } else {\n      this._data = (this._data || '') + data;\n    }\n  } else {\n    this._data = data;\n  }\n\n  if (!obj || isHost(data)) return this;\n  if (!type) this.type('json');\n  return this;\n};\n\n/**\n * Invoke the callback with `err` and `res`\n * and handle arity check.\n *\n * @param {Error} err\n * @param {Response} res\n * @api private\n */\n\nRequest.prototype.callback = function(err, res){\n  var fn = this._callback;\n  this.clearTimeout();\n  fn(err, res);\n};\n\n/**\n * Invoke callback with x-domain error.\n *\n * @api private\n */\n\nRequest.prototype.crossDomainError = function(){\n  var err = new Error('Request has been terminated\\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.');\n  err.crossDomain = true;\n\n  err.status = this.status;\n  err.method = this.method;\n  err.url = this.url;\n\n  this.callback(err);\n};\n\n/**\n * Invoke callback with timeout error.\n *\n * @api private\n */\n\nRequest.prototype.timeoutError = function(){\n  var timeout = this._timeout;\n  var err = new Error('timeout of ' + timeout + 'ms exceeded');\n  err.timeout = timeout;\n  this.callback(err);\n};\n\n/**\n * Enable transmission of cookies with x-domain requests.\n *\n * Note that for this to work the origin must not be\n * using \"Access-Control-Allow-Origin\" with a wildcard,\n * and also must set \"Access-Control-Allow-Credentials\"\n * to \"true\".\n *\n * @api public\n */\n\nRequest.prototype.withCredentials = function(){\n  this._withCredentials = true;\n  return this;\n};\n\n/**\n * Initiate request, invoking callback `fn(res)`\n * with an instanceof `Response`.\n *\n * @param {Function} fn\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.end = function(fn){\n  var self = this;\n  var xhr = this.xhr = request.getXHR();\n  var query = this._query.join('&');\n  var timeout = this._timeout;\n  var data = this._formData || this._data;\n\n  // store callback\n  this._callback = fn || noop;\n\n  // state change\n  xhr.onreadystatechange = function(){\n    if (4 != xhr.readyState) return;\n\n    // In IE9, reads to any property (e.g. status) off of an aborted XHR will\n    // result in the error \"Could not complete the operation due to error c00c023f\"\n    var status;\n    try { status = xhr.status } catch(e) { status = 0; }\n\n    if (0 == status) {\n      if (self.timedout) return self.timeoutError();\n      if (self.aborted) return;\n      return self.crossDomainError();\n    }\n    self.emit('end');\n  };\n\n  // progress\n  var handleProgress = function(e){\n    if (e.total > 0) {\n      e.percent = e.loaded / e.total * 100;\n    }\n    e.direction = 'download';\n    self.emit('progress', e);\n  };\n  if (this.hasListeners('progress')) {\n    xhr.onprogress = handleProgress;\n  }\n  try {\n    if (xhr.upload && this.hasListeners('progress')) {\n      xhr.upload.onprogress = handleProgress;\n    }\n  } catch(e) {\n    // Accessing xhr.upload fails in IE from a web worker, so just pretend it doesn't exist.\n    // Reported here:\n    // https://connect.microsoft.com/IE/feedback/details/837245/xmlhttprequest-upload-throws-invalid-argument-when-used-from-web-worker-context\n  }\n\n  // timeout\n  if (timeout && !this._timer) {\n    this._timer = setTimeout(function(){\n      self.timedout = true;\n      self.abort();\n    }, timeout);\n  }\n\n  // querystring\n  if (query) {\n    query = request.serializeObject(query);\n    this.url += ~this.url.indexOf('?')\n      ? '&' + query\n      : '?' + query;\n  }\n\n  // initiate request\n  xhr.open(this.method, this.url, true);\n\n  // CORS\n  if (this._withCredentials) xhr.withCredentials = true;\n\n  // body\n  if ('GET' != this.method && 'HEAD' != this.method && 'string' != typeof data && !isHost(data)) {\n    // serialize stuff\n    var contentType = this.getHeader('Content-Type');\n    var serialize = this._parser || request.serialize[contentType ? contentType.split(';')[0] : ''];\n    if (!serialize && isJSON(contentType)) serialize = request.serialize['application/json'];\n    if (serialize) data = serialize(data);\n  }\n\n  // set header fields\n  for (var field in this.header) {\n    if (null == this.header[field]) continue;\n    xhr.setRequestHeader(field, this.header[field]);\n  }\n\n  // send stuff\n  this.emit('request', this);\n\n  // IE11 xhr.send(undefined) sends 'undefined' string as POST payload (instead of nothing)\n  // We need null here if data is undefined\n  xhr.send(typeof data !== 'undefined' ? data : null);\n  return this;\n};\n\n/**\n * Faux promise support\n *\n * @param {Function} fulfill\n * @param {Function} reject\n * @return {Request}\n */\n\nRequest.prototype.then = function (fulfill, reject) {\n  return this.end(function(err, res) {\n    err ? reject(err) : fulfill(res);\n  });\n}\n\n/**\n * Expose `Request`.\n */\n\nrequest.Request = Request;\n\n/**\n * Issue a request:\n *\n * Examples:\n *\n *    request('GET', '/users').end(callback)\n *    request('/users').end(callback)\n *    request('/users', callback)\n *\n * @param {String} method\n * @param {String|Function} url or callback\n * @return {Request}\n * @api public\n */\n\nfunction request(method, url) {\n  // callback\n  if ('function' == typeof url) {\n    return new Request('GET', method).end(url);\n  }\n\n  // url first\n  if (1 == arguments.length) {\n    return new Request('GET', method);\n  }\n\n  return new Request(method, url);\n}\n\n/**\n * GET `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} data or fn\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nrequest.get = function(url, data, fn){\n  var req = request('GET', url);\n  if ('function' == typeof data) fn = data, data = null;\n  if (data) req.query(data);\n  if (fn) req.end(fn);\n  return req;\n};\n\n/**\n * HEAD `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} data or fn\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nrequest.head = function(url, data, fn){\n  var req = request('HEAD', url);\n  if ('function' == typeof data) fn = data, data = null;\n  if (data) req.send(data);\n  if (fn) req.end(fn);\n  return req;\n};\n\n/**\n * DELETE `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nfunction del(url, fn){\n  var req = request('DELETE', url);\n  if (fn) req.end(fn);\n  return req;\n};\n\nrequest['del'] = del;\nrequest['delete'] = del;\n\n/**\n * PATCH `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} data\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nrequest.patch = function(url, data, fn){\n  var req = request('PATCH', url);\n  if ('function' == typeof data) fn = data, data = null;\n  if (data) req.send(data);\n  if (fn) req.end(fn);\n  return req;\n};\n\n/**\n * POST `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} data\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nrequest.post = function(url, data, fn){\n  var req = request('POST', url);\n  if ('function' == typeof data) fn = data, data = null;\n  if (data) req.send(data);\n  if (fn) req.end(fn);\n  return req;\n};\n\n/**\n * PUT `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} data or fn\n * @param {Function} fn\n * @return {Request}\n * @api public\n */\n\nrequest.put = function(url, data, fn){\n  var req = request('PUT', url);\n  if ('function' == typeof data) fn = data, data = null;\n  if (data) req.send(data);\n  if (fn) req.end(fn);\n  return req;\n};\n\n/**\n * Expose `request`.\n */\n\nmodule.exports = request;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/superagent/lib/client.js\n ** module id = 6\n ** module chunks = 0\n **/","\n/**\n * Expose `Emitter`.\n */\n\nmodule.exports = Emitter;\n\n/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nfunction Emitter(obj) {\n  if (obj) return mixin(obj);\n};\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n  for (var key in Emitter.prototype) {\n    obj[key] = Emitter.prototype[key];\n  }\n  return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n  this._callbacks = this._callbacks || {};\n  (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n    .push(fn);\n  return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n  function on() {\n    this.off(event, on);\n    fn.apply(this, arguments);\n  }\n\n  on.fn = fn;\n  this.on(event, on);\n  return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n  this._callbacks = this._callbacks || {};\n\n  // all\n  if (0 == arguments.length) {\n    this._callbacks = {};\n    return this;\n  }\n\n  // specific event\n  var callbacks = this._callbacks['$' + event];\n  if (!callbacks) return this;\n\n  // remove all handlers\n  if (1 == arguments.length) {\n    delete this._callbacks['$' + event];\n    return this;\n  }\n\n  // remove specific handler\n  var cb;\n  for (var i = 0; i < callbacks.length; i++) {\n    cb = callbacks[i];\n    if (cb === fn || cb.fn === fn) {\n      callbacks.splice(i, 1);\n      break;\n    }\n  }\n  return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n  this._callbacks = this._callbacks || {};\n  var args = [].slice.call(arguments, 1)\n    , callbacks = this._callbacks['$' + event];\n\n  if (callbacks) {\n    callbacks = callbacks.slice(0);\n    for (var i = 0, len = callbacks.length; i < len; ++i) {\n      callbacks[i].apply(this, args);\n    }\n  }\n\n  return this;\n};\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n  this._callbacks = this._callbacks || {};\n  return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n  return !! this.listeners(event).length;\n};\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/component-emitter/index.js\n ** module id = 7\n ** module chunks = 0\n **/","\n/**\n * Reduce `arr` with `fn`.\n *\n * @param {Array} arr\n * @param {Function} fn\n * @param {Mixed} initial\n *\n * TODO: combatible error handling?\n */\n\nmodule.exports = function(arr, fn, initial){  \n  var idx = 0;\n  var len = arr.length;\n  var curr = arguments.length == 3\n    ? initial\n    : arr[idx++];\n\n  while (idx < len) {\n    curr = fn.call(null, curr, arr[idx], ++idx, arr);\n  }\n  \n  return curr;\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/reduce-component/index.js\n ** module id = 8\n ** module chunks = 0\n **/","\n/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n               && 'undefined' != typeof chrome.storage\n                  ? chrome.storage.local\n                  : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n  'lightseagreen',\n  'forestgreen',\n  'goldenrod',\n  'dodgerblue',\n  'darkorchid',\n  'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n  // is webkit? http://stackoverflow.com/a/16459606/376773\n  return ('WebkitAppearance' in document.documentElement.style) ||\n    // is firebug? http://stackoverflow.com/a/398120/376773\n    (window.console && (console.firebug || (console.exception && console.table))) ||\n    // is firefox >= v31?\n    // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n    (navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31);\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n  return JSON.stringify(v);\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs() {\n  var args = arguments;\n  var useColors = this.useColors;\n\n  args[0] = (useColors ? '%c' : '')\n    + this.namespace\n    + (useColors ? ' %c' : ' ')\n    + args[0]\n    + (useColors ? '%c ' : ' ')\n    + '+' + exports.humanize(this.diff);\n\n  if (!useColors) return args;\n\n  var c = 'color: ' + this.color;\n  args = [args[0], c, 'color: inherit'].concat(Array.prototype.slice.call(args, 1));\n\n  // the final \"%c\" is somewhat tricky, because there could be other\n  // arguments passed either before or after the %c, so we need to\n  // figure out the correct index to insert the CSS into\n  var index = 0;\n  var lastC = 0;\n  args[0].replace(/%[a-z%]/g, function(match) {\n    if ('%%' === match) return;\n    index++;\n    if ('%c' === match) {\n      // we only are interested in the *last* %c\n      // (the user may have provided their own)\n      lastC = index;\n    }\n  });\n\n  args.splice(lastC, 0, c);\n  return args;\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n  // this hackery is required for IE8/9, where\n  // the `console.log` function doesn't have 'apply'\n  return 'object' === typeof console\n    && console.log\n    && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n  try {\n    if (null == namespaces) {\n      exports.storage.removeItem('debug');\n    } else {\n      exports.storage.debug = namespaces;\n    }\n  } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n  var r;\n  try {\n    r = exports.storage.debug;\n  } catch(e) {}\n  return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage(){\n  try {\n    return window.localStorage;\n  } catch (e) {}\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/debug/browser.js\n ** module id = 9\n ** module chunks = 0\n **/","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = debug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lowercased letter, i.e. \"n\".\n */\n\nexports.formatters = {};\n\n/**\n * Previously assigned color.\n */\n\nvar prevColor = 0;\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n *\n * @return {Number}\n * @api private\n */\n\nfunction selectColor() {\n  return exports.colors[prevColor++ % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction debug(namespace) {\n\n  // define the `disabled` version\n  function disabled() {\n  }\n  disabled.enabled = false;\n\n  // define the `enabled` version\n  function enabled() {\n\n    var self = enabled;\n\n    // set `diff` timestamp\n    var curr = +new Date();\n    var ms = curr - (prevTime || curr);\n    self.diff = ms;\n    self.prev = prevTime;\n    self.curr = curr;\n    prevTime = curr;\n\n    // add the `color` if not set\n    if (null == self.useColors) self.useColors = exports.useColors();\n    if (null == self.color && self.useColors) self.color = selectColor();\n\n    var args = Array.prototype.slice.call(arguments);\n\n    args[0] = exports.coerce(args[0]);\n\n    if ('string' !== typeof args[0]) {\n      // anything else let's inspect with %o\n      args = ['%o'].concat(args);\n    }\n\n    // apply any `formatters` transformations\n    var index = 0;\n    args[0] = args[0].replace(/%([a-z%])/g, function(match, format) {\n      // if we encounter an escaped % then don't increase the array index\n      if (match === '%%') return match;\n      index++;\n      var formatter = exports.formatters[format];\n      if ('function' === typeof formatter) {\n        var val = args[index];\n        match = formatter.call(self, val);\n\n        // now we need to remove `args[index]` since it's inlined in the `format`\n        args.splice(index, 1);\n        index--;\n      }\n      return match;\n    });\n\n    if ('function' === typeof exports.formatArgs) {\n      args = exports.formatArgs.apply(self, args);\n    }\n    var logFn = enabled.log || exports.log || console.log.bind(console);\n    logFn.apply(self, args);\n  }\n  enabled.enabled = true;\n\n  var fn = exports.enabled(namespace) ? enabled : disabled;\n\n  fn.namespace = namespace;\n\n  return fn;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n  exports.save(namespaces);\n\n  var split = (namespaces || '').split(/[\\s,]+/);\n  var len = split.length;\n\n  for (var i = 0; i < len; i++) {\n    if (!split[i]) continue; // ignore empty strings\n    namespaces = split[i].replace(/\\*/g, '.*?');\n    if (namespaces[0] === '-') {\n      exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n    } else {\n      exports.names.push(new RegExp('^' + namespaces + '$'));\n    }\n  }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n  exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n  var i, len;\n  for (i = 0, len = exports.skips.length; i < len; i++) {\n    if (exports.skips[i].test(name)) {\n      return false;\n    }\n  }\n  for (i = 0, len = exports.names.length; i < len; i++) {\n    if (exports.names[i].test(name)) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n  if (val instanceof Error) return val.stack || val.message;\n  return val;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/debug/debug.js\n ** module id = 10\n ** module chunks = 0\n **/","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} options\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options){\n  options = options || {};\n  if ('string' == typeof val) return parse(val);\n  return options.long\n    ? long(val)\n    : short(val);\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n  str = '' + str;\n  if (str.length > 10000) return;\n  var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str);\n  if (!match) return;\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n  }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction short(ms) {\n  if (ms >= d) return Math.round(ms / d) + 'd';\n  if (ms >= h) return Math.round(ms / h) + 'h';\n  if (ms >= m) return Math.round(ms / m) + 'm';\n  if (ms >= s) return Math.round(ms / s) + 's';\n  return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction long(ms) {\n  return plural(ms, d, 'day')\n    || plural(ms, h, 'hour')\n    || plural(ms, m, 'minute')\n    || plural(ms, s, 'second')\n    || ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n  if (ms < n) return;\n  if (ms < n * 1.5) return Math.floor(ms / n) + ' ' + name;\n  return Math.ceil(ms / n) + ' ' + name + 's';\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/ms/index.js\n ** module id = 11\n ** module chunks = 0\n **/","'use strict';\n\nvar OBJECT_STORE_DATA = 'syncdb-data';\n\nfunction IDBDriver(dbName) {\n    if (typeof dbName !== 'string')\n        throw new TypeError('dbName argument must be a string');\n\n    this._db = null;\n    this._name = dbName;\n\n    this._doInit();\n}\n\nIDBDriver.prototype._doInit = function () {\n    var self = this;\n    this._init = new Promise(function (resolve, reject) {\n        var openRequest = indexedDB.open(self._name, 1);\n        openRequest.onerror = reject;\n        openRequest.onsuccess = function () {\n            self._db = openRequest.result;\n            resolve();\n        };\n        openRequest.onupgradeneeded = function (event) {\n            var db = event.target.result;\n            var objectStore = db.createObjectStore(OBJECT_STORE_DATA, {keyPath: 'id'});\n            objectStore.createIndex('seqid', 'seqid');\n        };\n    });\n};\n\nIDBDriver.prototype.insert = function (obj) {\n    var self = this;\n    return this._init.then(function () {\n        return new Promise(function (resolve, reject) {\n            var transaction = self._db.transaction(OBJECT_STORE_DATA, 'readwrite');\n            transaction.oncomplete = resolve;\n            transaction.onerror = function () {\n                reject(transaction.error);\n            };\n            var objectStore = transaction.objectStore(OBJECT_STORE_DATA);\n            objectStore.put(obj);\n        });\n    });\n};\n\nIDBDriver.prototype.get = function (id) {\n    var self = this;\n    return this._init.then(function () {\n        return new Promise(function (resolve, reject) {\n            var transaction = self._db.transaction(OBJECT_STORE_DATA, 'readonly');\n            transaction.onerror = function () {\n                reject(transaction.error);\n            };\n            var objectStore = transaction.objectStore(OBJECT_STORE_DATA);\n            var request = objectStore.get(id);\n            request.onsuccess = function (event) {\n                resolve(event.target.result || null);\n            };\n        });\n    });\n};\n\nIDBDriver.prototype.getData = function () {\n    var self = this;\n    return this._init.then(function () {\n        return new Promise(function (resolve, reject) {\n            var result = [];\n            var transaction = self._db.transaction(OBJECT_STORE_DATA, 'readonly');\n            transaction.oncomplete = function () {\n                resolve(result);\n            };\n            transaction.onerror = function () {\n                reject(transaction.error);\n            };\n            var objectStore = transaction.objectStore(OBJECT_STORE_DATA);\n            var request = objectStore.openCursor();\n            request.onsuccess = function (event) {\n                var cursor = event.target.result;\n                if (cursor) {\n                    result.push(cursor.value);\n                    cursor.continue();\n                }\n            };\n        });\n    });\n};\n\nIDBDriver.prototype.getLastSeqid = function () {\n    var self = this;\n    return this._init.then(function () {\n        return new Promise(function (resolve, reject) {\n            var transaction = self._db.transaction(OBJECT_STORE_DATA, 'readonly');\n            transaction.onerror = function () {\n                reject(transaction.error);\n            };\n            var objectStore = transaction.objectStore(OBJECT_STORE_DATA);\n            var index = objectStore.index('seqid');\n            index.openCursor(null, 'prev').onsuccess = function (event) {\n                var cursor = event.target.result;\n                if (cursor) {\n                    resolve(cursor.value.seqid);\n                } else {\n                    resolve(0);\n                }\n            };\n        });\n    });\n};\n\nIDBDriver.prototype.getRevData = function () {\n    // todo optimize, do not get everything from IDB\n    return this.getData().then(function (data) {\n        return data.filter(function (doc) {\n            return doc.revid > 0;\n        });\n    });\n};\n\nIDBDriver.prototype.clearDatabase = function () {\n    var self = this;\n    return this._init.then(function () {\n        self._db.close();\n        return new Promise(function (resolve, reject) {\n            var request = indexedDB.deleteDatabase(self._name);\n            request.onerror = reject;\n            request.onsuccess = function () {\n                self._doInit();\n                resolve();\n            };\n        });\n    });\n};\n\nmodule.exports = IDBDriver;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/sync-db-idb/src/index.js\n ** module id = 12\n ** module chunks = 0\n **/"],"sourceRoot":""}