1
0
mirror of https://github.com/billz/raspap-webgui.git synced 2023-10-10 13:37:24 +02:00
2018-03-09 02:03:53 +00:00

1 line
648 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"sources":["webpack:///index.min.js","webpack:///webpack/bootstrap c999e2f6d9a134306bac","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/debug/src/browser.js","webpack:///./node_modules/component-emitter/index.js","webpack:///./node_modules/engine.io-parser/lib/browser.js","webpack:///./lib/browser.utils.js","webpack:///./node_modules/parseqs/index.js","webpack:///./node_modules/component-inherit/index.js","webpack:///./lib/emitter.js","webpack:///./node_modules/socket.io-parser/index.js","webpack:///./node_modules/engine.io-client/lib/xmlhttprequest.js","webpack:///./node_modules/engine.io-client/lib/transport.js","webpack:///./lib/ghostmode.scroll.js","webpack:///./lib/events.js","webpack:///./lib/socket.js","webpack:///./node_modules/parseuri/index.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/has-binary2/index.js","webpack:///./node_modules/socket.io-parser/is-buffer.js","webpack:///./node_modules/socket.io-client/lib/manager.js","webpack:///./node_modules/engine.io-client/lib/transports/index.js","webpack:///./node_modules/engine.io-client/lib/transports/polling.js","webpack:///./node_modules/yeast/index.js","webpack:///./node_modules/indexof/index.js","webpack:///./node_modules/socket.io-client/lib/socket.js","webpack:///./node_modules/socket.io-client/lib/on.js","webpack:///./node_modules/component-bind/index.js","webpack:///./lib/notify.js","webpack:///./lib/ghostmode.clicks.js","webpack:///./lib/ghostmode.forms.js","webpack:///./lib/ghostmode.forms.input.js","webpack:///./lib/ghostmode.forms.toggles.js","webpack:///./lib/ghostmode.forms.submit.js","webpack:///./lib/ghostmode.location.js","webpack:///./lib/index.js","webpack:///./node_modules/socket.io-client/lib/index.js","webpack:///./node_modules/socket.io-client/lib/url.js","webpack:///./node_modules/debug/src/debug.js","webpack:///./node_modules/ms/index.js","webpack:///./node_modules/has-binary2/node_modules/isarray/index.js","webpack:///./node_modules/socket.io-parser/binary.js","webpack:///./node_modules/socket.io-parser/node_modules/isarray/index.js","webpack:///./node_modules/engine.io-client/lib/index.js","webpack:///./node_modules/engine.io-client/lib/socket.js","webpack:///./node_modules/has-cors/index.js","webpack:///./node_modules/engine.io-client/lib/transports/polling-xhr.js","webpack:///./node_modules/engine.io-parser/lib/keys.js","webpack:///./node_modules/arraybuffer.slice/index.js","webpack:///./node_modules/after/index.js","webpack:///./node_modules/engine.io-parser/lib/utf8.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/base64-arraybuffer/lib/base64-arraybuffer.js","webpack:///./node_modules/blob/index.js","webpack:///./node_modules/engine.io-client/lib/transports/polling-jsonp.js","webpack:///./node_modules/engine.io-client/lib/transports/websocket.js","webpack:///./node_modules/to-array/index.js","webpack:///./node_modules/backo2/index.js","webpack:///./lib/client-shims.js","webpack:///./lib/code-sync.js","webpack:///./vendor/Reloader.ts","webpack:///./lib/utils.ts","webpack:///./vendor/Timer.ts","webpack:///./node_modules/nanologger/index.js","webpack:///./node_modules/assert/assert.js","webpack:///./node_modules/util/util.js","webpack:///./node_modules/util/support/isBufferBrowser.js","webpack:///./node_modules/util/node_modules/inherits/inherits_browser.js","webpack:///./node_modules/xtend/immutable.js","webpack:///./lib/browser-sync.js","webpack:///./lib/tab.js","webpack:///./lib/ghostmode.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","g","this","Function","eval","e","window","process","useColors","type","document","documentElement","style","WebkitAppearance","console","firebug","exception","table","navigator","userAgent","toLowerCase","match","parseInt","RegExp","$1","formatArgs","args","namespace","humanize","diff","color","splice","index","lastC","replace","log","apply","arguments","save","namespaces","storage","removeItem","debug","load","r","env","DEBUG","chrome","local","localStorage","colors","formatters","j","v","JSON","stringify","err","message","enable","Emitter","obj","mixin","key","on","addEventListener","event","fn","_callbacks","push","once","off","removeListener","removeAllListeners","removeEventListener","length","callbacks","cb","emit","slice","len","listeners","hasListeners","global","encodeBase64Object","packet","callback","packets","data","encodeArrayBuffer","supportsBinary","encodeBase64Packet","contentArray","Uint8Array","resultBuffer","byteLength","buffer","encodeBlobAsArrayBuffer","fr","FileReader","onload","result","encodePacket","readAsArrayBuffer","encodeBlob","dontSendBlobs","Blob","tryDecode","utf8","decode","strict","map","ary","each","done","Array","next","after","el","error","msg","base64encoder","keys","hasBinary","sliceBuffer","ArrayBuffer","isAndroid","test","isPhantomJS","protocol","open","close","ping","pong","upgrade","noop","packetslist","utf8encode","undefined","base64","encoded","encode","String","b64","split","readAsDataURL","b64data","fromCharCode","typed","basic","btoa","decodePacket","binaryType","utf8decode","charAt","decodeBase64Packet","substr","Number","substring","asArray","rest","encodePayload","setLengthHeader","encodeOne","doneCallback","isBinary","encodePayloadAsBlob","encodePayloadAsArrayBuffer","results","join","decodePayload","decodePayloadAsBinary","chr","encodedPackets","totalLength","reduce","acc","toString","resultArray","bufferIndex","forEach","isString","ab","view","charCodeAt","lenStr","binaryIdentifier","size","lengthAry","blob","bufferTail","buffers","tailArray","msgLength","total","utils","getWindow","getDocument","getBody","getElementsByTagName","getBrowserScrollPosition","scrollX","scrollY","$window","$document","dElement","dBody","body","pageYOffset","pageXOffset","scrollLeft","scrollTop","x","y","getScrollSpace","scrollHeight","clientWidth","clientHeight","saveScrollPosition","pos","cookie","restoreScrollPosition","scrollTo","getElementIndex","tagName","elem","allElems","indexOf","forceChange","blur","focus","getElementData","getSingleElement","setScroll","reloadBrowser","location","reload","coll","isOldIe","attachEvent","getLocation","url","createElement","href","host","str","encodeURIComponent","qs","qry","pairs","pair","decodeURIComponent","a","b","constructor","events","func","Encoder","encodeAsString","BINARY_EVENT","BINARY_ACK","attachments","nsp","id","encodeAsBinary","writeEncoding","bloblessData","deconstruction","binary","deconstructPacket","pack","unshift","removeBlobs","Decoder","reconstructor","decodeString","types","buf","Error","tryParse","parse","BinaryReconstructor","reconPack","ERROR","hasBin","isBuf","CONNECT","DISCONNECT","EVENT","ACK","add","takeBinaryData","destroy","finishedReconstruction","binData","reconstructPacket","hasCORS","opts","xdomain","xscheme","enablesXDR","XMLHttpRequest","XDomainRequest","concat","Transport","path","hostname","port","secure","query","timestampParam","timestampRequests","readyState","agent","socket","pfx","passphrase","cert","ca","ciphers","rejectUnauthorized","forceNode","extraHeaders","localAddress","parser","onError","desc","description","doOpen","doClose","onClose","send","write","onOpen","writable","onData","onPacket","WINDOW_EVENT_NAME","canEmitEvents","init","bs","eventManager","addElementScrollEvents","selector","elems","querySelectorAll","cacheSelector","cache","addEvent","browserEventForElement","options","browserEvent","socketEvent","socketEventForElement","canSync","scrollSpace","scrollProportionally","position","proportional","raw","scrollOne","getScrollPosition","getScrollTopPercentage","getScrollPercentage","scrollPosition","_ElementCache","guidCounter","expando","Date","getTime","getData","guid","removeData","removeAttribute","_fixEvent","returnTrue","returnFalse","stopPropagation","old","prop","target","srcElement","relatedTarget","fromElement","toElement","preventDefault","returnValue","isDefaultPrevented","cancelBubble","isPropagationStopped","stopImmediatePropagation","isImmediatePropagationStopped","clientX","doc","pageX","clientLeft","pageY","clientY","clientTop","which","charCode","keyCode","button","_EventManager","tidyUp","isEmpty","handlers","dispatcher","detachEvent","nextGuid","disabled","removeEvent","removeType","t","proxy","context","ret","triggerClick","evObj","createEvent","setTimeout","initEvent","dispatchEvent","createEventObject","fireEvent","manager","socketConfig","___browserSync___","socketUrl","io","getPath","pathname","re","parts","src","exec","uri","source","authority","ipv6uri","defaultSetTimout","defaultClearTimeout","runTimeout","fun","cachedSetTimeout","runClearTimeout","marker","cachedClearTimeout","clearTimeout","cleanUpNextTick","draining","currentQueue","queue","queueIndex","drainQueue","timeout","run","Item","array","nextTick","title","browser","argv","version","versions","addListener","prependListener","prependOnceListener","binding","cwd","chdir","dir","umask","isArray","Buffer","isBuffer","withNativeBlob","withNativeFile","File","toJSON","Manager","nsps","subs","reconnection","reconnectionAttempts","Infinity","reconnectionDelay","reconnectionDelayMax","randomizationFactor","backoff","Backoff","min","max","jitter","connecting","lastPing","encoding","packetBuffer","_parser","encoder","decoder","autoConnect","eio","Socket","bind","has","emitAll","updateSocketIds","generateId","engine","_reconnection","_reconnectionAttempts","_reconnectionDelay","setMin","_randomizationFactor","setJitter","_reconnectionDelayMax","setMax","_timeout","maybeReconnectOnOpen","reconnecting","attempts","reconnect","connect","self","skipReconnect","openSub","onopen","errorSub","cleanup","timer","onping","onpong","ondata","ondecoded","onerror","onConnecting","processPacketQueue","shift","subsLength","disconnect","reset","onclose","reason","delay","duration","onreconnect","attempt","polling","xd","xs","jsonp","isSSL","forceJSONP","XHR","JSONP","websocket","Polling","forceBase64","hasXHR2","parseqs","inherit","yeast","responseType","poll","pause","onPause","doPoll","callbackfn","doWrite","schema","sid","num","alphabet","Math","floor","decoded","now","prev","seed","arr","json","ids","acks","receiveBuffer","sendBuffer","connected","disconnected","toArray","connect_error","connect_timeout","reconnect_attempt","reconnect_failed","reconnect_error","subEvents","ev","compress","flags","pop","onpacket","onconnect","onevent","onack","ondisconnect","ack","sent","emitBuffered","timeoutInt","styles","display","padding","fontFamily","fontSize","zIndex","right","top","borderBottomLeftRadius","backgroundColor","margin","textAlign","pointerEvents","cssStyles","notify","cssText","rule","flashFn","watchEvent","emitter","override","flash","getElem","$body","innerHTML","appendChild","parentNode","removeChild","tabHidden","plugins","inputs","toggles","submit","checkOpt","ghostMode","forms","value","addEvents","domElems","checked","setPath","setUrl","codeSync","BrowserSync","shouldReload","initialised","reloadOnRestart","BS","client","browserSync","__karma__","__bs_scroll__","__bs_clicks__","__bs_location__","__bs_inputs__","__bs_toggles__","__bs_submit__","__bs_forms__","__bs_utils__","__bs_emitter__","__bs","__bs_notify__","__bs_code_sync__","__bs_ghost_mode__","__bs_socket__","__bs_index__","lookup","parsed","sameNamespace","newConnection","forceNew","multiplex","managers","loc","parseuri","ipv6","selectColor","hash","abs","createDebug","enabled","curr","ms","prevTime","coerce","format","formatter","val","names","skips","disable","stack","parseFloat","h","fmtShort","round","fmtLong","plural","ceil","isNaN","long","_deconstructPacket","placeholder","_placeholder","newData","_reconstructPacket","packetData","_removeBlobs","curKey","containingObject","pendingBlobs","fileReader","transports","transportOptions","writeBuffer","prevBufferLen","policyPort","rememberUpgrade","onlyBinaryUpgrades","perMessageDeflate","threshold","freeGlobal","upgrades","pingInterval","pingTimeout","pingIntervalTimer","pingTimeoutTimer","clone","priorWebsocketSuccess","createTransport","EIO","transport","requestTimeout","protocols","setTransport","onDrain","probe","onTransportOpen","upgradeLosesBinary","failed","upgrading","flush","freezeTransport","onTransportClose","onupgrade","to","onHandshake","setPing","code","filterUpgrades","onHeartbeat","sendPacket","cleanupAndClose","waitForUpgrade","filteredUpgrades","empty","Request","method","async","create","unloadHandler","requests","abort","request","req","sendXhr","pollXhr","xhr","setDisableHeaderCheck","setRequestHeader","withCredentials","hasXDR","onLoad","responseText","onreadystatechange","contentType","getResponseHeader","status","requestsCount","onSuccess","fromError","response","arraybuffer","start","end","bytes","abv","ii","count","err_cb","bail","__WEBPACK_AMD_DEFINE_RESULT__","root","ucs2decode","string","extra","output","counter","ucs2encode","stringFromCharCode","checkScalarValue","codePoint","toUpperCase","createByte","encodeCodePoint","symbol","codePoints","byteString","readContinuationByte","byteIndex","byteCount","continuationByte","byteArray","decodeSymbol","byte1","byte2","byte3","byte4","tmp","freeExports","webpackPolyfill","deprecate","paths","children","chars","encoded1","encoded2","encoded3","encoded4","bufferLength","mapArrayBufferViews","chunk","copy","set","byteOffset","BlobBuilderConstructor","bb","BlobBuilder","append","getBlob","BlobConstructor","WebKitBlobBuilder","MSBlobBuilder","MozBlobBuilder","blobSupported","blobSupportsArrayBufferView","blobBuilderSupported","JSONPPolling","___eio","script","rNewline","rEscapedNewline","form","iframe","insertAt","insertBefore","head","complete","initIframe","html","iframeId","area","className","left","setAttribute","action","WS","usingBrowserWebSocket","BrowserWebSocket","WebSocket","NodeWebSocket","MozWebSocket","check","headers","ws","supports","addEventListeners","onmessage","list","factor","pow","rand","random","deviation","find","thisArg","T","A","k","TypeError","O","kValue","mappedValue","filter","res","__assign","assign","Reloader_1","Timer_1","sync","nanlogger","magenta","reloader","Reloader","Timer","tagNames","css","jpg","jpeg","png","svg","gif","js","attrs","link","img","blacklist","incoming","ext","current","scrollRestoreTechnique","saveScrollInName","saveScrollInCookie","PRE","SUF","regex","saved","newname","hardReload","scroll","injectChanges","basename","isBlacklisted","liveCSS","liveImg","some","confirm","hiddenElem","utils_1","IMAGE_STYLES","styleNames","logger","importCacheWaitPeriod","addPlugin","plugin","analyze","stylesheetReloadTimeout","trace","reloadStylesheet","reloadImages","domData","getElems","getMatches","attr","swapFile","fileExtension","matches","urlMatcher","currentValue","timeStamp","suffix","anchor","search","updateSearch","timestamps","info","reloadPage","_this","generateUniqueString","images","pathsMatch","pathFromUrl","generateCacheBustUrl","_a","reloadStyleImages","styleSheets","styleSheet","reloadStylesheetImages","rules","cssRules","CSSRule","IMPORT_RULE","STYLE_RULE","MEDIA_RULE","styleName","newValue","links","rel","__LiveReload_pendingRemoval","imported","_i","from","sheet","collectImportedStylesheets","_b","_c","StyleFix","pickBestMatch","linkHref","reattachImportedRule","reattachStylesheetLink","CHARSET_RULE","waitUntilCssLoads","callbackExecuted","executeCallback","knownToSupportCssOnLoad","poll_1","getAttribute","media","cloneNode","parent","lastChild","nextSibling","additionalWaitingTime","parentStyleSheet","newRule","__LiveReload_newHref","tempLink","insertRule","deleteRule","oldParams","splitUrl","params","overrideURL","serverURL","originalUrl","sep","item","tuple","objects","pathFunc","score","bestMatch","numberOfMatchingSegments","path1","path2","comps1","reverse","comps2","eqCount","running","_handler","stop","Nanologger","assert","equal","_name","_colors","xtend","defaultColors","logLevel","getItem","_logLevel","levels","getTimeStamp","date","pad","getHours","getMinutes","getSeconds","emojis","warn","fatal","foreground","background","black","red","green","yellow","blue","cyan","white","brightBlack","_print","level","time","emoji","msgColor","objs","arg","compare","_isBuffer","pToString","isView","arrbuf","DataView","getName","util","isFunction","functionsHaveNames","truncate","inspect","something","rawname","getMessage","actual","operator","expected","fail","stackStartFunction","AssertionError","ok","_deepEqual","memos","isDate","isRegExp","multiline","lastIndex","ignoreCase","Float32Array","Float64Array","actualIndex","objEquiv","isArguments","actualVisitedObjects","isPrimitive","getPrototypeOf","aIsArgs","bIsArgs","pSlice","ka","objectKeys","kb","sort","notDeepStrictEqual","expectedException","isPrototypeOf","_tryBlock","block","_throws","shouldThrow","userProvidedMessage","isUnwantedException","isError","isUnexpectedException","hasOwn","generatedMessage","captureStackTrace","out","fn_name","idx","next_line","inherits","notEqual","deepEqual","deepStrictEqual","notDeepEqual","strictEqual","notStrictEqual","throws","doesNotThrow","ifError","ctx","seen","stylize","stylizeNoColor","depth","isBoolean","showHidden","_extend","isUndefined","customInspect","stylizeWithColor","formatValue","styleType","arrayToHash","recurseTimes","primitive","formatPrimitive","visibleKeys","getOwnPropertyNames","formatError","base","braces","toUTCString","formatArray","formatProperty","reduceToSingleString","simple","isNumber","isNull","getOwnPropertyDescriptor","line","numLinesEst","cur","ar","isNullOrUndefined","isSymbol","isObject","objectToString","timestamp","getDate","months","getMonth","formatRegExp","f","_","deprecated","warned","throwDeprecation","traceDeprecation","noDeprecation","debugEnviron","debugs","debuglog","NODE_DEBUG","pid","bold","italic","underline","inverse","grey","special","number","boolean","null","regexp","origin","fill","readUInt8","ctor","superCtor","super_","TempCtor","extend","getByPath","tempPath","optPath","getOption","opt","handleVisibilityChange","hidden","visibilityChange","mozHidden","msHidden","webkitHidden","clicks"],"mappings":"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","file":"index.min.js","sourcesContent":["/******/ (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/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\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.l = 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// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 33);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(process) {/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = __webpack_require__(37);\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 // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(15)))\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (true) {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n var args = [].slice.call(arguments, 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/**\n * Module dependencies.\n */\n\nvar keys = __webpack_require__(46);\nvar hasBinary = __webpack_require__(16);\nvar sliceBuffer = __webpack_require__(47);\nvar after = __webpack_require__(48);\nvar utf8 = __webpack_require__(49);\n\nvar base64encoder;\nif (global && global.ArrayBuffer) {\n base64encoder = __webpack_require__(51);\n}\n\n/**\n * Check if we are running an android browser. That requires us to use\n * ArrayBuffer with polling transports...\n *\n * http://ghinda.net/jpeg-blob-ajax-android/\n */\n\nvar isAndroid = typeof navigator !== 'undefined' && /Android/i.test(navigator.userAgent);\n\n/**\n * Check if we are running in PhantomJS.\n * Uploading a Blob with PhantomJS does not work correctly, as reported here:\n * https://github.com/ariya/phantomjs/issues/11395\n * @type boolean\n */\nvar isPhantomJS = typeof navigator !== 'undefined' && /PhantomJS/i.test(navigator.userAgent);\n\n/**\n * When true, avoids using Blobs to encode payloads.\n * @type boolean\n */\nvar dontSendBlobs = isAndroid || isPhantomJS;\n\n/**\n * Current protocol version.\n */\n\nexports.protocol = 3;\n\n/**\n * Packet types.\n */\n\nvar packets = exports.packets = {\n open: 0 // non-ws\n , close: 1 // non-ws\n , ping: 2\n , pong: 3\n , message: 4\n , upgrade: 5\n , noop: 6\n};\n\nvar packetslist = keys(packets);\n\n/**\n * Premade error packet.\n */\n\nvar err = { type: 'error', data: 'parser error' };\n\n/**\n * Create a blob api even for blob builder when vendor prefixes exist\n */\n\nvar Blob = __webpack_require__(52);\n\n/**\n * Encodes a packet.\n *\n * <packet type id> [ <data> ]\n *\n * Example:\n *\n * 5hello world\n * 3\n * 4\n *\n * Binary is encoded in an identical principle\n *\n * @api private\n */\n\nexports.encodePacket = function (packet, supportsBinary, utf8encode, callback) {\n if (typeof supportsBinary === 'function') {\n callback = supportsBinary;\n supportsBinary = false;\n }\n\n if (typeof utf8encode === 'function') {\n callback = utf8encode;\n utf8encode = null;\n }\n\n var data = (packet.data === undefined)\n ? undefined\n : packet.data.buffer || packet.data;\n\n if (global.ArrayBuffer && data instanceof ArrayBuffer) {\n return encodeArrayBuffer(packet, supportsBinary, callback);\n } else if (Blob && data instanceof global.Blob) {\n return encodeBlob(packet, supportsBinary, callback);\n }\n\n // might be an object with { base64: true, data: dataAsBase64String }\n if (data && data.base64) {\n return encodeBase64Object(packet, callback);\n }\n\n // Sending data as a utf-8 string\n var encoded = packets[packet.type];\n\n // data fragment is optional\n if (undefined !== packet.data) {\n encoded += utf8encode ? utf8.encode(String(packet.data), { strict: false }) : String(packet.data);\n }\n\n return callback('' + encoded);\n\n};\n\nfunction encodeBase64Object(packet, callback) {\n // packet data is an object { base64: true, data: dataAsBase64String }\n var message = 'b' + exports.packets[packet.type] + packet.data.data;\n return callback(message);\n}\n\n/**\n * Encode packet helpers for binary types\n */\n\nfunction encodeArrayBuffer(packet, supportsBinary, callback) {\n if (!supportsBinary) {\n return exports.encodeBase64Packet(packet, callback);\n }\n\n var data = packet.data;\n var contentArray = new Uint8Array(data);\n var resultBuffer = new Uint8Array(1 + data.byteLength);\n\n resultBuffer[0] = packets[packet.type];\n for (var i = 0; i < contentArray.length; i++) {\n resultBuffer[i+1] = contentArray[i];\n }\n\n return callback(resultBuffer.buffer);\n}\n\nfunction encodeBlobAsArrayBuffer(packet, supportsBinary, callback) {\n if (!supportsBinary) {\n return exports.encodeBase64Packet(packet, callback);\n }\n\n var fr = new FileReader();\n fr.onload = function() {\n packet.data = fr.result;\n exports.encodePacket(packet, supportsBinary, true, callback);\n };\n return fr.readAsArrayBuffer(packet.data);\n}\n\nfunction encodeBlob(packet, supportsBinary, callback) {\n if (!supportsBinary) {\n return exports.encodeBase64Packet(packet, callback);\n }\n\n if (dontSendBlobs) {\n return encodeBlobAsArrayBuffer(packet, supportsBinary, callback);\n }\n\n var length = new Uint8Array(1);\n length[0] = packets[packet.type];\n var blob = new Blob([length.buffer, packet.data]);\n\n return callback(blob);\n}\n\n/**\n * Encodes a packet with binary data in a base64 string\n *\n * @param {Object} packet, has `type` and `data`\n * @return {String} base64 encoded message\n */\n\nexports.encodeBase64Packet = function(packet, callback) {\n var message = 'b' + exports.packets[packet.type];\n if (Blob && packet.data instanceof global.Blob) {\n var fr = new FileReader();\n fr.onload = function() {\n var b64 = fr.result.split(',')[1];\n callback(message + b64);\n };\n return fr.readAsDataURL(packet.data);\n }\n\n var b64data;\n try {\n b64data = String.fromCharCode.apply(null, new Uint8Array(packet.data));\n } catch (e) {\n // iPhone Safari doesn't let you apply with typed arrays\n var typed = new Uint8Array(packet.data);\n var basic = new Array(typed.length);\n for (var i = 0; i < typed.length; i++) {\n basic[i] = typed[i];\n }\n b64data = String.fromCharCode.apply(null, basic);\n }\n message += global.btoa(b64data);\n return callback(message);\n};\n\n/**\n * Decodes a packet. Changes format to Blob if requested.\n *\n * @return {Object} with `type` and `data` (if any)\n * @api private\n */\n\nexports.decodePacket = function (data, binaryType, utf8decode) {\n if (data === undefined) {\n return err;\n }\n // String data\n if (typeof data === 'string') {\n if (data.charAt(0) === 'b') {\n return exports.decodeBase64Packet(data.substr(1), binaryType);\n }\n\n if (utf8decode) {\n data = tryDecode(data);\n if (data === false) {\n return err;\n }\n }\n var type = data.charAt(0);\n\n if (Number(type) != type || !packetslist[type]) {\n return err;\n }\n\n if (data.length > 1) {\n return { type: packetslist[type], data: data.substring(1) };\n } else {\n return { type: packetslist[type] };\n }\n }\n\n var asArray = new Uint8Array(data);\n var type = asArray[0];\n var rest = sliceBuffer(data, 1);\n if (Blob && binaryType === 'blob') {\n rest = new Blob([rest]);\n }\n return { type: packetslist[type], data: rest };\n};\n\nfunction tryDecode(data) {\n try {\n data = utf8.decode(data, { strict: false });\n } catch (e) {\n return false;\n }\n return data;\n}\n\n/**\n * Decodes a packet encoded in a base64 string\n *\n * @param {String} base64 encoded message\n * @return {Object} with `type` and `data` (if any)\n */\n\nexports.decodeBase64Packet = function(msg, binaryType) {\n var type = packetslist[msg.charAt(0)];\n if (!base64encoder) {\n return { type: type, data: { base64: true, data: msg.substr(1) } };\n }\n\n var data = base64encoder.decode(msg.substr(1));\n\n if (binaryType === 'blob' && Blob) {\n data = new Blob([data]);\n }\n\n return { type: type, data: data };\n};\n\n/**\n * Encodes multiple messages (payload).\n *\n * <length>:data\n *\n * Example:\n *\n * 11:hello world2:hi\n *\n * If any contents are binary, they will be encoded as base64 strings. Base64\n * encoded strings are marked with a b before the length specifier\n *\n * @param {Array} packets\n * @api private\n */\n\nexports.encodePayload = function (packets, supportsBinary, callback) {\n if (typeof supportsBinary === 'function') {\n callback = supportsBinary;\n supportsBinary = null;\n }\n\n var isBinary = hasBinary(packets);\n\n if (supportsBinary && isBinary) {\n if (Blob && !dontSendBlobs) {\n return exports.encodePayloadAsBlob(packets, callback);\n }\n\n return exports.encodePayloadAsArrayBuffer(packets, callback);\n }\n\n if (!packets.length) {\n return callback('0:');\n }\n\n function setLengthHeader(message) {\n return message.length + ':' + message;\n }\n\n function encodeOne(packet, doneCallback) {\n exports.encodePacket(packet, !isBinary ? false : supportsBinary, false, function(message) {\n doneCallback(null, setLengthHeader(message));\n });\n }\n\n map(packets, encodeOne, function(err, results) {\n return callback(results.join(''));\n });\n};\n\n/**\n * Async array map using after\n */\n\nfunction map(ary, each, done) {\n var result = new Array(ary.length);\n var next = after(ary.length, done);\n\n var eachWithIndex = function(i, el, cb) {\n each(el, function(error, msg) {\n result[i] = msg;\n cb(error, result);\n });\n };\n\n for (var i = 0; i < ary.length; i++) {\n eachWithIndex(i, ary[i], next);\n }\n}\n\n/*\n * Decodes data when a payload is maybe expected. Possible binary contents are\n * decoded from their base64 representation\n *\n * @param {String} data, callback method\n * @api public\n */\n\nexports.decodePayload = function (data, binaryType, callback) {\n if (typeof data !== 'string') {\n return exports.decodePayloadAsBinary(data, binaryType, callback);\n }\n\n if (typeof binaryType === 'function') {\n callback = binaryType;\n binaryType = null;\n }\n\n var packet;\n if (data === '') {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n var length = '', n, msg;\n\n for (var i = 0, l = data.length; i < l; i++) {\n var chr = data.charAt(i);\n\n if (chr !== ':') {\n length += chr;\n continue;\n }\n\n if (length === '' || (length != (n = Number(length)))) {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n msg = data.substr(i + 1, n);\n\n if (length != msg.length) {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n if (msg.length) {\n packet = exports.decodePacket(msg, binaryType, false);\n\n if (err.type === packet.type && err.data === packet.data) {\n // parser error in individual packet - ignoring payload\n return callback(err, 0, 1);\n }\n\n var ret = callback(packet, i + n, l);\n if (false === ret) return;\n }\n\n // advance cursor\n i += n;\n length = '';\n }\n\n if (length !== '') {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n};\n\n/**\n * Encodes multiple messages (payload) as binary.\n *\n * <1 = binary, 0 = string><number from 0-9><number from 0-9>[...]<number\n * 255><data>\n *\n * Example:\n * 1 3 255 1 2 3, if the binary contents are interpreted as 8 bit integers\n *\n * @param {Array} packets\n * @return {ArrayBuffer} encoded payload\n * @api private\n */\n\nexports.encodePayloadAsArrayBuffer = function(packets, callback) {\n if (!packets.length) {\n return callback(new ArrayBuffer(0));\n }\n\n function encodeOne(packet, doneCallback) {\n exports.encodePacket(packet, true, true, function(data) {\n return doneCallback(null, data);\n });\n }\n\n map(packets, encodeOne, function(err, encodedPackets) {\n var totalLength = encodedPackets.reduce(function(acc, p) {\n var len;\n if (typeof p === 'string'){\n len = p.length;\n } else {\n len = p.byteLength;\n }\n return acc + len.toString().length + len + 2; // string/binary identifier + separator = 2\n }, 0);\n\n var resultArray = new Uint8Array(totalLength);\n\n var bufferIndex = 0;\n encodedPackets.forEach(function(p) {\n var isString = typeof p === 'string';\n var ab = p;\n if (isString) {\n var view = new Uint8Array(p.length);\n for (var i = 0; i < p.length; i++) {\n view[i] = p.charCodeAt(i);\n }\n ab = view.buffer;\n }\n\n if (isString) { // not true binary\n resultArray[bufferIndex++] = 0;\n } else { // true binary\n resultArray[bufferIndex++] = 1;\n }\n\n var lenStr = ab.byteLength.toString();\n for (var i = 0; i < lenStr.length; i++) {\n resultArray[bufferIndex++] = parseInt(lenStr[i]);\n }\n resultArray[bufferIndex++] = 255;\n\n var view = new Uint8Array(ab);\n for (var i = 0; i < view.length; i++) {\n resultArray[bufferIndex++] = view[i];\n }\n });\n\n return callback(resultArray.buffer);\n });\n};\n\n/**\n * Encode as Blob\n */\n\nexports.encodePayloadAsBlob = function(packets, callback) {\n function encodeOne(packet, doneCallback) {\n exports.encodePacket(packet, true, true, function(encoded) {\n var binaryIdentifier = new Uint8Array(1);\n binaryIdentifier[0] = 1;\n if (typeof encoded === 'string') {\n var view = new Uint8Array(encoded.length);\n for (var i = 0; i < encoded.length; i++) {\n view[i] = encoded.charCodeAt(i);\n }\n encoded = view.buffer;\n binaryIdentifier[0] = 0;\n }\n\n var len = (encoded instanceof ArrayBuffer)\n ? encoded.byteLength\n : encoded.size;\n\n var lenStr = len.toString();\n var lengthAry = new Uint8Array(lenStr.length + 1);\n for (var i = 0; i < lenStr.length; i++) {\n lengthAry[i] = parseInt(lenStr[i]);\n }\n lengthAry[lenStr.length] = 255;\n\n if (Blob) {\n var blob = new Blob([binaryIdentifier.buffer, lengthAry.buffer, encoded]);\n doneCallback(null, blob);\n }\n });\n }\n\n map(packets, encodeOne, function(err, results) {\n return callback(new Blob(results));\n });\n};\n\n/*\n * Decodes data when a payload is maybe expected. Strings are decoded by\n * interpreting each byte as a key code for entries marked to start with 0. See\n * description of encodePayloadAsBinary\n *\n * @param {ArrayBuffer} data, callback method\n * @api public\n */\n\nexports.decodePayloadAsBinary = function (data, binaryType, callback) {\n if (typeof binaryType === 'function') {\n callback = binaryType;\n binaryType = null;\n }\n\n var bufferTail = data;\n var buffers = [];\n\n while (bufferTail.byteLength > 0) {\n var tailArray = new Uint8Array(bufferTail);\n var isString = tailArray[0] === 0;\n var msgLength = '';\n\n for (var i = 1; ; i++) {\n if (tailArray[i] === 255) break;\n\n // 310 = char length of Number.MAX_VALUE\n if (msgLength.length > 310) {\n return callback(err, 0, 1);\n }\n\n msgLength += tailArray[i];\n }\n\n bufferTail = sliceBuffer(bufferTail, 2 + msgLength.length);\n msgLength = parseInt(msgLength);\n\n var msg = sliceBuffer(bufferTail, 0, msgLength);\n if (isString) {\n try {\n msg = String.fromCharCode.apply(null, new Uint8Array(msg));\n } catch (e) {\n // iPhone Safari doesn't let you apply to typed arrays\n var typed = new Uint8Array(msg);\n msg = '';\n for (var i = 0; i < typed.length; i++) {\n msg += String.fromCharCode(typed[i]);\n }\n }\n }\n\n buffers.push(msg);\n bufferTail = sliceBuffer(bufferTail, msgLength);\n }\n\n var total = buffers.length;\n buffers.forEach(function(buffer, i) {\n callback(exports.decodePacket(buffer, binaryType, true), i, total);\n });\n};\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar utils = exports;\r\n/**\r\n * @returns {window}\r\n */\r\nutils.getWindow = function () {\r\n return window;\r\n};\r\n/**\r\n * @returns {HTMLDocument}\r\n */\r\nutils.getDocument = function () {\r\n return document;\r\n};\r\n/**\r\n * @returns {HTMLElement}\r\n */\r\nutils.getBody = function () {\r\n return document.getElementsByTagName(\"body\")[0];\r\n};\r\n/**\r\n * Get the current x/y position crossbow\r\n * @returns {{x: *, y: *}}\r\n */\r\nutils.getBrowserScrollPosition = function () {\r\n var $window = exports.getWindow();\r\n var $document = exports.getDocument();\r\n var scrollX;\r\n var scrollY;\r\n var dElement = $document.documentElement;\r\n var dBody = $document.body;\r\n if ($window.pageYOffset !== undefined) {\r\n scrollX = $window.pageXOffset;\r\n scrollY = $window.pageYOffset;\r\n }\r\n else {\r\n scrollX = dElement.scrollLeft || dBody.scrollLeft || 0;\r\n scrollY = dElement.scrollTop || dBody.scrollTop || 0;\r\n }\r\n return {\r\n x: scrollX,\r\n y: scrollY\r\n };\r\n};\r\n/**\r\n * @returns {{x: number, y: number}}\r\n */\r\nutils.getScrollSpace = function () {\r\n var $document = exports.getDocument();\r\n var dElement = $document.documentElement;\r\n var dBody = $document.body;\r\n return {\r\n x: dBody.scrollHeight - dElement.clientWidth,\r\n y: dBody.scrollHeight - dElement.clientHeight\r\n };\r\n};\r\n/**\r\n * Saves scroll position into cookies\r\n */\r\nutils.saveScrollPosition = function () {\r\n var pos = utils.getBrowserScrollPosition();\r\n pos = [pos.x, pos.y];\r\n utils.getDocument.cookie = \"bs_scroll_pos=\" + pos.join(\",\");\r\n};\r\n/**\r\n * Restores scroll position from cookies\r\n */\r\nutils.restoreScrollPosition = function () {\r\n var pos = utils\r\n .getDocument()\r\n .cookie.replace(/(?:(?:^|.*;\\s*)bs_scroll_pos\\s*\\=\\s*([^;]*).*$)|^.*$/, \"$1\")\r\n .split(\",\");\r\n utils.getWindow().scrollTo(pos[0], pos[1]);\r\n};\r\n/**\r\n * @param tagName\r\n * @param elem\r\n * @returns {*|number}\r\n */\r\nutils.getElementIndex = function (tagName, elem) {\r\n var allElems = utils.getDocument().getElementsByTagName(tagName);\r\n return Array.prototype.indexOf.call(allElems, elem);\r\n};\r\n/**\r\n * Force Change event on radio & checkboxes (IE)\r\n */\r\nutils.forceChange = function (elem) {\r\n elem.blur();\r\n elem.focus();\r\n};\r\n/**\r\n * @param elem\r\n * @returns {{tagName: (elem.tagName|*), index: *}}\r\n */\r\nutils.getElementData = function (elem) {\r\n var tagName = elem.tagName;\r\n var index = utils.getElementIndex(tagName, elem);\r\n return {\r\n tagName: tagName,\r\n index: index\r\n };\r\n};\r\n/**\r\n * @param {string} tagName\r\n * @param {number} index\r\n */\r\nutils.getSingleElement = function (tagName, index) {\r\n var elems = utils.getDocument().getElementsByTagName(tagName);\r\n return elems[index];\r\n};\r\n/**\r\n * Get the body element\r\n */\r\nutils.getBody = function () {\r\n return utils.getDocument().getElementsByTagName(\"body\")[0];\r\n};\r\n/**\r\n * @param {{x: number, y: number}} pos\r\n */\r\nutils.setScroll = function (pos) {\r\n utils.getWindow().scrollTo(pos.x, pos.y);\r\n};\r\n/**\r\n * Hard reload\r\n */\r\nutils.reloadBrowser = function () {\r\n utils.getWindow().location.reload(true);\r\n};\r\n/**\r\n * Foreach polyfill\r\n * @param coll\r\n * @param fn\r\n */\r\nutils.forEach = function (coll, fn) {\r\n for (var i = 0, n = coll.length; i < n; i += 1) {\r\n fn(coll[i], i, coll);\r\n }\r\n};\r\n/**\r\n * Are we dealing with old IE?\r\n * @returns {boolean}\r\n */\r\nutils.isOldIe = function () {\r\n return typeof utils.getWindow().attachEvent !== \"undefined\";\r\n};\r\n/**\r\n * Split the URL information\r\n * @returns {object}\r\n */\r\nutils.getLocation = function (url) {\r\n var location = utils.getDocument().createElement(\"a\");\r\n location.href = url;\r\n if (location.host === \"\") {\r\n location.href = location.href;\r\n }\r\n return location;\r\n};\r\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\n/**\r\n * Compiles a querystring\r\n * Returns string representation of the object\r\n *\r\n * @param {Object}\r\n * @api private\r\n */\r\n\r\nexports.encode = function (obj) {\r\n var str = '';\r\n\r\n for (var i in obj) {\r\n if (obj.hasOwnProperty(i)) {\r\n if (str.length) str += '&';\r\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\r\n }\r\n }\r\n\r\n return str;\r\n};\r\n\r\n/**\r\n * Parses a simple querystring into an object\r\n *\r\n * @param {String} qs\r\n * @api private\r\n */\r\n\r\nexports.decode = function(qs){\r\n var qry = {};\r\n var pairs = qs.split('&');\r\n for (var i = 0, l = pairs.length; i < l; i++) {\r\n var pair = pairs[i].split('=');\r\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\r\n }\r\n return qry;\r\n};\r\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\n\nmodule.exports = function(a, b){\n var fn = function(){};\n fn.prototype = b.prototype;\n a.prototype = new fn;\n a.prototype.constructor = a;\n};\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nexports.events = {};\r\n/**\r\n * @param name\r\n * @param data\r\n */\r\nexports.emit = function (name, data) {\r\n var event = exports.events[name];\r\n var listeners;\r\n if (event && event.listeners) {\r\n listeners = event.listeners;\r\n for (var i = 0, n = listeners.length; i < n; i += 1) {\r\n listeners[i](data);\r\n }\r\n }\r\n};\r\n/**\r\n * @param name\r\n * @param func\r\n */\r\nexports.on = function (name, func) {\r\n var events = exports.events;\r\n if (!events[name]) {\r\n events[name] = {\r\n listeners: [func]\r\n };\r\n }\r\n else {\r\n events[name].listeners.push(func);\r\n }\r\n};\r\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/**\n * Module dependencies.\n */\n\nvar debug = __webpack_require__(1)('socket.io-parser');\nvar Emitter = __webpack_require__(2);\nvar hasBin = __webpack_require__(16);\nvar binary = __webpack_require__(40);\nvar isBuf = __webpack_require__(17);\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nexports.protocol = 4;\n\n/**\n * Packet types.\n *\n * @api public\n */\n\nexports.types = [\n 'CONNECT',\n 'DISCONNECT',\n 'EVENT',\n 'ACK',\n 'ERROR',\n 'BINARY_EVENT',\n 'BINARY_ACK'\n];\n\n/**\n * Packet type `connect`.\n *\n * @api public\n */\n\nexports.CONNECT = 0;\n\n/**\n * Packet type `disconnect`.\n *\n * @api public\n */\n\nexports.DISCONNECT = 1;\n\n/**\n * Packet type `event`.\n *\n * @api public\n */\n\nexports.EVENT = 2;\n\n/**\n * Packet type `ack`.\n *\n * @api public\n */\n\nexports.ACK = 3;\n\n/**\n * Packet type `error`.\n *\n * @api public\n */\n\nexports.ERROR = 4;\n\n/**\n * Packet type 'binary event'\n *\n * @api public\n */\n\nexports.BINARY_EVENT = 5;\n\n/**\n * Packet type `binary ack`. For acks with binary arguments.\n *\n * @api public\n */\n\nexports.BINARY_ACK = 6;\n\n/**\n * Encoder constructor.\n *\n * @api public\n */\n\nexports.Encoder = Encoder;\n\n/**\n * Decoder constructor.\n *\n * @api public\n */\n\nexports.Decoder = Decoder;\n\n/**\n * A socket.io Encoder instance\n *\n * @api public\n */\n\nfunction Encoder() {}\n\n/**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n * @param {Function} callback - function to handle encodings (likely engine.write)\n * @return Calls callback with Array of encodings\n * @api public\n */\n\nEncoder.prototype.encode = function(obj, callback){\n if ((obj.type === exports.EVENT || obj.type === exports.ACK) && hasBin(obj.data)) {\n obj.type = obj.type === exports.EVENT ? exports.BINARY_EVENT : exports.BINARY_ACK;\n }\n\n debug('encoding packet %j', obj);\n\n if (exports.BINARY_EVENT === obj.type || exports.BINARY_ACK === obj.type) {\n encodeAsBinary(obj, callback);\n }\n else {\n var encoding = encodeAsString(obj);\n callback([encoding]);\n }\n};\n\n/**\n * Encode packet as string.\n *\n * @param {Object} packet\n * @return {String} encoded\n * @api private\n */\n\nfunction encodeAsString(obj) {\n\n // first is type\n var str = '' + obj.type;\n\n // attachments if we have them\n if (exports.BINARY_EVENT === obj.type || exports.BINARY_ACK === obj.type) {\n str += obj.attachments + '-';\n }\n\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && '/' !== obj.nsp) {\n str += obj.nsp + ',';\n }\n\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data);\n }\n\n debug('encoded %j as %s', obj, str);\n return str;\n}\n\n/**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n *\n * @param {Object} packet\n * @return {Buffer} encoded\n * @api private\n */\n\nfunction encodeAsBinary(obj, callback) {\n\n function writeEncoding(bloblessData) {\n var deconstruction = binary.deconstructPacket(bloblessData);\n var pack = encodeAsString(deconstruction.packet);\n var buffers = deconstruction.buffers;\n\n buffers.unshift(pack); // add packet info to beginning of data list\n callback(buffers); // write all the buffers\n }\n\n binary.removeBlobs(obj, writeEncoding);\n}\n\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n * @api public\n */\n\nfunction Decoder() {\n this.reconstructor = null;\n}\n\n/**\n * Mix in `Emitter` with Decoder.\n */\n\nEmitter(Decoder.prototype);\n\n/**\n * Decodes an ecoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n * @return {Object} packet\n * @api public\n */\n\nDecoder.prototype.add = function(obj) {\n var packet;\n if (typeof obj === 'string') {\n packet = decodeString(obj);\n if (exports.BINARY_EVENT === packet.type || exports.BINARY_ACK === packet.type) { // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n\n // no attachments, labeled binary but no binary data to follow\n if (this.reconstructor.reconPack.attachments === 0) {\n this.emit('decoded', packet);\n }\n } else { // non-binary full packet\n this.emit('decoded', packet);\n }\n }\n else if (isBuf(obj) || obj.base64) { // raw binary data\n if (!this.reconstructor) {\n throw new Error('got binary data when not reconstructing a packet');\n } else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) { // received final buffer\n this.reconstructor = null;\n this.emit('decoded', packet);\n }\n }\n }\n else {\n throw new Error('Unknown type: ' + obj);\n }\n};\n\n/**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n * @api private\n */\n\nfunction decodeString(str) {\n var i = 0;\n // look up type\n var p = {\n type: Number(str.charAt(0))\n };\n\n if (null == exports.types[p.type]) return error();\n\n // look up attachments if type binary\n if (exports.BINARY_EVENT === p.type || exports.BINARY_ACK === p.type) {\n var buf = '';\n while (str.charAt(++i) !== '-') {\n buf += str.charAt(i);\n if (i == str.length) break;\n }\n if (buf != Number(buf) || str.charAt(i) !== '-') {\n throw new Error('Illegal attachments');\n }\n p.attachments = Number(buf);\n }\n\n // look up namespace (if any)\n if ('/' === str.charAt(i + 1)) {\n p.nsp = '';\n while (++i) {\n var c = str.charAt(i);\n if (',' === c) break;\n p.nsp += c;\n if (i === str.length) break;\n }\n } else {\n p.nsp = '/';\n }\n\n // look up id\n var next = str.charAt(i + 1);\n if ('' !== next && Number(next) == next) {\n p.id = '';\n while (++i) {\n var c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n p.id += str.charAt(i);\n if (i === str.length) break;\n }\n p.id = Number(p.id);\n }\n\n // look up json data\n if (str.charAt(++i)) {\n p = tryParse(p, str.substr(i));\n }\n\n debug('decoded %s as %j', str, p);\n return p;\n}\n\nfunction tryParse(p, str) {\n try {\n p.data = JSON.parse(str);\n } catch(e){\n return error();\n }\n return p; \n}\n\n/**\n * Deallocates a parser's resources\n *\n * @api public\n */\n\nDecoder.prototype.destroy = function() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n }\n};\n\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n * @api private\n */\n\nfunction BinaryReconstructor(packet) {\n this.reconPack = packet;\n this.buffers = [];\n}\n\n/**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n * @api private\n */\n\nBinaryReconstructor.prototype.takeBinaryData = function(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) { // done with buffer list\n var packet = binary.reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n};\n\n/**\n * Cleans up binary packet reconstruction variables.\n *\n * @api private\n */\n\nBinaryReconstructor.prototype.finishedReconstruction = function() {\n this.reconPack = null;\n this.buffers = [];\n};\n\nfunction error() {\n return {\n type: exports.ERROR,\n data: 'parser error'\n };\n}\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {// browser shim for xmlhttprequest module\n\nvar hasCORS = __webpack_require__(44);\n\nmodule.exports = function (opts) {\n var xdomain = opts.xdomain;\n\n // scheme must be same when usign XDomainRequest\n // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx\n var xscheme = opts.xscheme;\n\n // XDomainRequest has a flow of not sending cookie, therefore it should be disabled as a default.\n // https://github.com/Automattic/engine.io-client/pull/217\n var enablesXDR = opts.enablesXDR;\n\n // XMLHttpRequest can be disabled on IE\n try {\n if ('undefined' !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n } catch (e) { }\n\n // Use XDomainRequest for IE8 if enablesXDR is true\n // because loading bar keeps flashing when using jsonp-polling\n // https://github.com/yujiosaka/socke.io-ie8-loading-example\n try {\n if ('undefined' !== typeof XDomainRequest && !xscheme && enablesXDR) {\n return new XDomainRequest();\n }\n } catch (e) { }\n\n if (!xdomain) {\n try {\n return new global[['Active'].concat('Object').join('X')]('Microsoft.XMLHTTP');\n } catch (e) { }\n }\n};\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Module dependencies.\n */\n\nvar parser = __webpack_require__(3);\nvar Emitter = __webpack_require__(2);\n\n/**\n * Module exports.\n */\n\nmodule.exports = Transport;\n\n/**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\n */\n\nfunction Transport (opts) {\n this.path = opts.path;\n this.hostname = opts.hostname;\n this.port = opts.port;\n this.secure = opts.secure;\n this.query = opts.query;\n this.timestampParam = opts.timestampParam;\n this.timestampRequests = opts.timestampRequests;\n this.readyState = '';\n this.agent = opts.agent || false;\n this.socket = opts.socket;\n this.enablesXDR = opts.enablesXDR;\n\n // SSL options for Node.js client\n this.pfx = opts.pfx;\n this.key = opts.key;\n this.passphrase = opts.passphrase;\n this.cert = opts.cert;\n this.ca = opts.ca;\n this.ciphers = opts.ciphers;\n this.rejectUnauthorized = opts.rejectUnauthorized;\n this.forceNode = opts.forceNode;\n\n // other options for Node.js client\n this.extraHeaders = opts.extraHeaders;\n this.localAddress = opts.localAddress;\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Transport.prototype);\n\n/**\n * Emits an error.\n *\n * @param {String} str\n * @return {Transport} for chaining\n * @api public\n */\n\nTransport.prototype.onError = function (msg, desc) {\n var err = new Error(msg);\n err.type = 'TransportError';\n err.description = desc;\n this.emit('error', err);\n return this;\n};\n\n/**\n * Opens the transport.\n *\n * @api public\n */\n\nTransport.prototype.open = function () {\n if ('closed' === this.readyState || '' === this.readyState) {\n this.readyState = 'opening';\n this.doOpen();\n }\n\n return this;\n};\n\n/**\n * Closes the transport.\n *\n * @api private\n */\n\nTransport.prototype.close = function () {\n if ('opening' === this.readyState || 'open' === this.readyState) {\n this.doClose();\n this.onClose();\n }\n\n return this;\n};\n\n/**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api private\n */\n\nTransport.prototype.send = function (packets) {\n if ('open' === this.readyState) {\n this.write(packets);\n } else {\n throw new Error('Transport not open');\n }\n};\n\n/**\n * Called upon open\n *\n * @api private\n */\n\nTransport.prototype.onOpen = function () {\n this.readyState = 'open';\n this.writable = true;\n this.emit('open');\n};\n\n/**\n * Called with data.\n *\n * @param {String} data\n * @api private\n */\n\nTransport.prototype.onData = function (data) {\n var packet = parser.decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n};\n\n/**\n * Called with a decoded packet.\n */\n\nTransport.prototype.onPacket = function (packet) {\n this.emit('packet', packet);\n};\n\n/**\n * Called upon close.\n *\n * @api private\n */\n\nTransport.prototype.onClose = function () {\n this.readyState = 'closed';\n this.emit('close');\n};\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n/**\r\n * This is the plugin for syncing scroll between devices\r\n * @type {string}\r\n */\r\nvar WINDOW_EVENT_NAME = \"scroll\";\r\nvar ELEMENT_EVENT_NAME = \"scroll:element\";\r\nvar OPT_PATH = \"ghostMode.scroll\";\r\nvar utils;\r\nexports.canEmitEvents = true;\r\n/**\r\n * @param {BrowserSync} bs\r\n * @param eventManager\r\n */\r\nexports.init = function (bs, eventManager) {\r\n utils = bs.utils;\r\n var opts = bs.options;\r\n /**\r\n * Window Scroll events\r\n */\r\n eventManager.addEvent(window, WINDOW_EVENT_NAME, exports.browserEvent(bs));\r\n bs.socket.on(WINDOW_EVENT_NAME, exports.socketEvent(bs));\r\n /**\r\n * element Scroll Events\r\n */\r\n var cache = {};\r\n addElementScrollEvents(\"scrollElements\", false);\r\n addElementScrollEvents(\"scrollElementMapping\", true);\r\n bs.socket.on(ELEMENT_EVENT_NAME, exports.socketEventForElement(bs, cache));\r\n function addElementScrollEvents(key, map) {\r\n if (!opts[key] ||\r\n !opts[key].length ||\r\n !(\"querySelectorAll\" in document)) {\r\n return;\r\n }\r\n utils.forEach(opts[key], function (selector) {\r\n var elems = document.querySelectorAll(selector) || [];\r\n utils.forEach(elems, function (elem) {\r\n var data = utils.getElementData(elem);\r\n data.cacheSelector = data.tagName + \":\" + data.index;\r\n data.map = map;\r\n cache[data.cacheSelector] = elem;\r\n eventManager.addEvent(elem, WINDOW_EVENT_NAME, exports.browserEventForElement(bs, elem, data));\r\n });\r\n });\r\n }\r\n};\r\n/**\r\n * @param {BrowserSync} bs\r\n */\r\nexports.socketEvent = function (bs) {\r\n return function (data) {\r\n if (!bs.canSync(data, OPT_PATH)) {\r\n return false;\r\n }\r\n var scrollSpace = utils.getScrollSpace();\r\n exports.canEmitEvents = false;\r\n if (bs.options && bs.options.scrollProportionally) {\r\n return window.scrollTo(0, scrollSpace.y * data.position.proportional); // % of y axis of scroll to px\r\n }\r\n else {\r\n return window.scrollTo(0, data.position.raw.y);\r\n }\r\n };\r\n};\r\n/**\r\n * @param bs\r\n */\r\nexports.socketEventForElement = function (bs, cache) {\r\n return function (data) {\r\n if (!bs.canSync(data, OPT_PATH)) {\r\n return false;\r\n }\r\n exports.canEmitEvents = false;\r\n function scrollOne(selector, pos) {\r\n if (cache[selector]) {\r\n cache[selector].scrollTop = pos;\r\n }\r\n }\r\n if (data.map) {\r\n return Object.keys(cache).forEach(function (key) {\r\n scrollOne(key, data.position);\r\n });\r\n }\r\n scrollOne(data.elem.cacheSelector, data.position);\r\n };\r\n};\r\n/**\r\n * @param bs\r\n */\r\nexports.browserEventForElement = function (bs, elem, data) {\r\n return function () {\r\n var canSync = exports.canEmitEvents;\r\n if (canSync) {\r\n bs.socket.emit(ELEMENT_EVENT_NAME, {\r\n position: elem.scrollTop,\r\n elem: data,\r\n map: data.map\r\n });\r\n }\r\n exports.canEmitEvents = true;\r\n };\r\n};\r\nexports.browserEvent = function (bs) {\r\n return function () {\r\n var canSync = exports.canEmitEvents;\r\n if (canSync) {\r\n bs.socket.emit(WINDOW_EVENT_NAME, {\r\n position: exports.getScrollPosition()\r\n });\r\n }\r\n exports.canEmitEvents = true;\r\n };\r\n};\r\n/**\r\n * @returns {{raw: number, proportional: number}}\r\n */\r\nexports.getScrollPosition = function () {\r\n var pos = utils.getBrowserScrollPosition();\r\n return {\r\n raw: pos,\r\n proportional: exports.getScrollTopPercentage(pos) // Get % of y axis of scroll\r\n };\r\n};\r\n/**\r\n * @param {{x: number, y: number}} scrollSpace\r\n * @param scrollPosition\r\n * @returns {{x: number, y: number}}\r\n */\r\nexports.getScrollPercentage = function (scrollSpace, scrollPosition) {\r\n var x = scrollPosition.x / scrollSpace.x;\r\n var y = scrollPosition.y / scrollSpace.y;\r\n return {\r\n x: x || 0,\r\n y: y\r\n };\r\n};\r\n/**\r\n * Get just the percentage of Y axis of scroll\r\n * @returns {number}\r\n */\r\nexports.getScrollTopPercentage = function (pos) {\r\n var scrollSpace = utils.getScrollSpace();\r\n var percentage = exports.getScrollPercentage(scrollSpace, pos);\r\n return percentage.y;\r\n};\r\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports) {\n\nexports._ElementCache = function () {\r\n var cache = {}, guidCounter = 1, expando = \"data\" + new Date().getTime();\r\n this.getData = function (elem) {\r\n var guid = elem[expando];\r\n if (!guid) {\r\n guid = elem[expando] = guidCounter++;\r\n cache[guid] = {};\r\n }\r\n return cache[guid];\r\n };\r\n this.removeData = function (elem) {\r\n var guid = elem[expando];\r\n if (!guid)\r\n return;\r\n delete cache[guid];\r\n try {\r\n delete elem[expando];\r\n }\r\n catch (e) {\r\n if (elem.removeAttribute) {\r\n elem.removeAttribute(expando);\r\n }\r\n }\r\n };\r\n};\r\n/**\r\n * Fix an event\r\n * @param event\r\n * @returns {*}\r\n */\r\nexports._fixEvent = function (event) {\r\n function returnTrue() {\r\n return true;\r\n }\r\n function returnFalse() {\r\n return false;\r\n }\r\n if (!event || !event.stopPropagation) {\r\n var old = event || window.event;\r\n // Clone the old object so that we can modify the values\r\n event = {};\r\n for (var prop in old) {\r\n event[prop] = old[prop];\r\n }\r\n // The event occurred on this element\r\n if (!event.target) {\r\n event.target = event.srcElement || document;\r\n }\r\n // Handle which other element the event is related to\r\n event.relatedTarget =\r\n event.fromElement === event.target\r\n ? event.toElement\r\n : event.fromElement;\r\n // Stop the default browser action\r\n event.preventDefault = function () {\r\n event.returnValue = false;\r\n event.isDefaultPrevented = returnTrue;\r\n };\r\n event.isDefaultPrevented = returnFalse;\r\n // Stop the event from bubbling\r\n event.stopPropagation = function () {\r\n event.cancelBubble = true;\r\n event.isPropagationStopped = returnTrue;\r\n };\r\n event.isPropagationStopped = returnFalse;\r\n // Stop the event from bubbling and executing other handlers\r\n event.stopImmediatePropagation = function () {\r\n this.isImmediatePropagationStopped = returnTrue;\r\n this.stopPropagation();\r\n };\r\n event.isImmediatePropagationStopped = returnFalse;\r\n // Handle mouse position\r\n if (event.clientX != null) {\r\n var doc = document.documentElement, body = document.body;\r\n event.pageX =\r\n event.clientX +\r\n ((doc && doc.scrollLeft) || (body && body.scrollLeft) || 0) -\r\n ((doc && doc.clientLeft) || (body && body.clientLeft) || 0);\r\n event.pageY =\r\n event.clientY +\r\n ((doc && doc.scrollTop) || (body && body.scrollTop) || 0) -\r\n ((doc && doc.clientTop) || (body && body.clientTop) || 0);\r\n }\r\n // Handle key presses\r\n event.which = event.charCode || event.keyCode;\r\n // Fix button for mouse clicks:\r\n // 0 == left; 1 == middle; 2 == right\r\n if (event.button != null) {\r\n event.button =\r\n event.button & 1\r\n ? 0\r\n : event.button & 4 ? 1 : event.button & 2 ? 2 : 0;\r\n }\r\n }\r\n return event;\r\n};\r\n/**\r\n * @constructor\r\n */\r\nexports._EventManager = function (cache) {\r\n var nextGuid = 1;\r\n this.addEvent = function (elem, type, fn) {\r\n var data = cache.getData(elem);\r\n if (!data.handlers)\r\n data.handlers = {};\r\n if (!data.handlers[type])\r\n data.handlers[type] = [];\r\n if (!fn.guid)\r\n fn.guid = nextGuid++;\r\n data.handlers[type].push(fn);\r\n if (!data.dispatcher) {\r\n data.disabled = false;\r\n data.dispatcher = function (event) {\r\n if (data.disabled)\r\n return;\r\n event = exports._fixEvent(event);\r\n var handlers = data.handlers[event.type];\r\n if (handlers) {\r\n for (var n = 0; n < handlers.length; n++) {\r\n handlers[n].call(elem, event);\r\n }\r\n }\r\n };\r\n }\r\n if (data.handlers[type].length == 1) {\r\n if (document.addEventListener) {\r\n elem.addEventListener(type, data.dispatcher, false);\r\n }\r\n else if (document.attachEvent) {\r\n elem.attachEvent(\"on\" + type, data.dispatcher);\r\n }\r\n }\r\n };\r\n function tidyUp(elem, type) {\r\n function isEmpty(object) {\r\n for (var prop in object) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n var data = cache.getData(elem);\r\n if (data.handlers[type].length === 0) {\r\n delete data.handlers[type];\r\n if (document.removeEventListener) {\r\n elem.removeEventListener(type, data.dispatcher, false);\r\n }\r\n else if (document.detachEvent) {\r\n elem.detachEvent(\"on\" + type, data.dispatcher);\r\n }\r\n }\r\n if (isEmpty(data.handlers)) {\r\n delete data.handlers;\r\n delete data.dispatcher;\r\n }\r\n if (isEmpty(data)) {\r\n cache.removeData(elem);\r\n }\r\n }\r\n this.removeEvent = function (elem, type, fn) {\r\n var data = cache.getData(elem);\r\n if (!data.handlers)\r\n return;\r\n var removeType = function (t) {\r\n data.handlers[t] = [];\r\n tidyUp(elem, t);\r\n };\r\n if (!type) {\r\n for (var t in data.handlers)\r\n removeType(t);\r\n return;\r\n }\r\n var handlers = data.handlers[type];\r\n if (!handlers)\r\n return;\r\n if (!fn) {\r\n removeType(type);\r\n return;\r\n }\r\n if (fn.guid) {\r\n for (var n = 0; n < handlers.length; n++) {\r\n if (handlers[n].guid === fn.guid) {\r\n handlers.splice(n--, 1);\r\n }\r\n }\r\n }\r\n tidyUp(elem, type);\r\n };\r\n this.proxy = function (context, fn) {\r\n if (!fn.guid) {\r\n fn.guid = nextGuid++;\r\n }\r\n var ret = function () {\r\n return fn.apply(context, arguments);\r\n };\r\n ret.guid = fn.guid;\r\n return ret;\r\n };\r\n};\r\n/**\r\n * Trigger a click on an element\r\n * @param elem\r\n */\r\nexports.triggerClick = function (elem) {\r\n var evObj;\r\n if (document.createEvent) {\r\n window.setTimeout(function () {\r\n evObj = document.createEvent(\"MouseEvents\");\r\n evObj.initEvent(\"click\", true, true);\r\n elem.dispatchEvent(evObj);\r\n }, 0);\r\n }\r\n else {\r\n window.setTimeout(function () {\r\n if (document.createEventObject) {\r\n evObj = document.createEventObject();\r\n evObj.cancelBubble = true;\r\n elem.fireEvent(\"on\" + \"click\", evObj);\r\n }\r\n }, 0);\r\n }\r\n};\r\nvar cache = new exports._ElementCache();\r\nvar eventManager = new exports._EventManager(cache);\r\neventManager.triggerClick = exports.triggerClick;\r\nexports.manager = eventManager;\r\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar socket = __webpack_require__(35);\r\n/**\r\n * @type {{emit: emit, on: on}}\r\n */\r\nvar socketConfig = window.___browserSync___.socketConfig;\r\nvar socketUrl = window.___browserSync___.socketUrl;\r\nvar io = socket(socketUrl, socketConfig);\r\n/**\r\n * *****BACK-COMPAT*******\r\n * Scripts that come after Browsersync may rely on the previous window.___browserSync___.socket\r\n */\r\nwindow.___browserSync___.socket = io;\r\n/**\r\n * @returns {string}\r\n */\r\nexports.getPath = function () {\r\n return window.location.pathname;\r\n};\r\n/**\r\n * Alias for socket.emit\r\n * @param name\r\n * @param data\r\n */\r\nexports.emit = function (name, data) {\r\n if (io && io.emit) {\r\n // send relative path of where the event is sent\r\n data.url = exports.getPath();\r\n io.emit(name, data);\r\n }\r\n};\r\n/**\r\n * Alias for socket.on\r\n * @param name\r\n * @param func\r\n */\r\nexports.on = function (name, func) {\r\n io.on(name, func);\r\n};\r\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\n/**\r\n * Parses an URI\r\n *\r\n * @author Steven Levithan <stevenlevithan.com> (MIT license)\r\n * @api private\r\n */\r\n\r\nvar re = /^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\r\n\r\nvar parts = [\r\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\r\n];\r\n\r\nmodule.exports = function parseuri(str) {\r\n var src = str,\r\n b = str.indexOf('['),\r\n e = str.indexOf(']');\r\n\r\n if (b != -1 && e != -1) {\r\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\r\n }\r\n\r\n var m = re.exec(str || ''),\r\n uri = {},\r\n i = 14;\r\n\r\n while (i--) {\r\n uri[parts[i]] = m[i] || '';\r\n }\r\n\r\n if (b != -1 && e != -1) {\r\n uri.source = src;\r\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\r\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\r\n uri.ipv6uri = true;\r\n }\r\n\r\n return uri;\r\n};\r\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports) {\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/* global Blob File */\n\n/*\n * Module requirements.\n */\n\nvar isArray = __webpack_require__(39);\n\nvar toString = Object.prototype.toString;\nvar withNativeBlob = typeof global.Blob === 'function' || toString.call(global.Blob) === '[object BlobConstructor]';\nvar withNativeFile = typeof global.File === 'function' || toString.call(global.File) === '[object FileConstructor]';\n\n/**\n * Module exports.\n */\n\nmodule.exports = hasBinary;\n\n/**\n * Checks for binary data.\n *\n * Supports Buffer, ArrayBuffer, Blob and File.\n *\n * @param {Object} anything\n * @api public\n */\n\nfunction hasBinary (obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n if (isArray(obj)) {\n for (var i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n\n if ((typeof global.Buffer === 'function' && global.Buffer.isBuffer && global.Buffer.isBuffer(obj)) ||\n (typeof global.ArrayBuffer === 'function' && obj instanceof ArrayBuffer) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File)\n ) {\n return true;\n }\n\n // see: https://github.com/Automattic/has-binary/pull/4\n if (obj.toJSON && typeof obj.toJSON === 'function' && arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n\n return false;\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {\nmodule.exports = isBuf;\n\n/**\n * Returns true if obj is a buffer or an arraybuffer.\n *\n * @api private\n */\n\nfunction isBuf(obj) {\n return (global.Buffer && global.Buffer.isBuffer(obj)) ||\n (global.ArrayBuffer && obj instanceof ArrayBuffer);\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/**\n * Module dependencies.\n */\n\nvar eio = __webpack_require__(42);\nvar Socket = __webpack_require__(23);\nvar Emitter = __webpack_require__(2);\nvar parser = __webpack_require__(8);\nvar on = __webpack_require__(24);\nvar bind = __webpack_require__(25);\nvar debug = __webpack_require__(1)('socket.io-client:manager');\nvar indexOf = __webpack_require__(22);\nvar Backoff = __webpack_require__(57);\n\n/**\n * IE6+ hasOwnProperty\n */\n\nvar has = Object.prototype.hasOwnProperty;\n\n/**\n * Module exports\n */\n\nmodule.exports = Manager;\n\n/**\n * `Manager` constructor.\n *\n * @param {String} engine instance or engine uri/opts\n * @param {Object} options\n * @api public\n */\n\nfunction Manager (uri, opts) {\n if (!(this instanceof Manager)) return new Manager(uri, opts);\n if (uri && ('object' === typeof uri)) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n\n opts.path = opts.path || '/socket.io';\n this.nsps = {};\n this.subs = [];\n this.opts = opts;\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor(opts.randomizationFactor || 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor()\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this.readyState = 'closed';\n this.uri = uri;\n this.connecting = [];\n this.lastPing = null;\n this.encoding = false;\n this.packetBuffer = [];\n var _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this.autoConnect = opts.autoConnect !== false;\n if (this.autoConnect) this.open();\n}\n\n/**\n * Propagate given event to sockets and emit on `this`\n *\n * @api private\n */\n\nManager.prototype.emitAll = function () {\n this.emit.apply(this, arguments);\n for (var nsp in this.nsps) {\n if (has.call(this.nsps, nsp)) {\n this.nsps[nsp].emit.apply(this.nsps[nsp], arguments);\n }\n }\n};\n\n/**\n * Update `socket.id` of all sockets\n *\n * @api private\n */\n\nManager.prototype.updateSocketIds = function () {\n for (var nsp in this.nsps) {\n if (has.call(this.nsps, nsp)) {\n this.nsps[nsp].id = this.generateId(nsp);\n }\n }\n};\n\n/**\n * generate `socket.id` for the given `nsp`\n *\n * @param {String} nsp\n * @return {String}\n * @api private\n */\n\nManager.prototype.generateId = function (nsp) {\n return (nsp === '/' ? '' : (nsp + '#')) + this.engine.id;\n};\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Manager.prototype);\n\n/**\n * Sets the `reconnection` config.\n *\n * @param {Boolean} true/false if it should automatically reconnect\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnection = function (v) {\n if (!arguments.length) return this._reconnection;\n this._reconnection = !!v;\n return this;\n};\n\n/**\n * Sets the reconnection attempts config.\n *\n * @param {Number} max reconnection attempts before giving up\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionAttempts = function (v) {\n if (!arguments.length) return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n};\n\n/**\n * Sets the delay between reconnections.\n *\n * @param {Number} delay\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionDelay = function (v) {\n if (!arguments.length) return this._reconnectionDelay;\n this._reconnectionDelay = v;\n this.backoff && this.backoff.setMin(v);\n return this;\n};\n\nManager.prototype.randomizationFactor = function (v) {\n if (!arguments.length) return this._randomizationFactor;\n this._randomizationFactor = v;\n this.backoff && this.backoff.setJitter(v);\n return this;\n};\n\n/**\n * Sets the maximum delay between reconnections.\n *\n * @param {Number} delay\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionDelayMax = function (v) {\n if (!arguments.length) return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n this.backoff && this.backoff.setMax(v);\n return this;\n};\n\n/**\n * Sets the connection timeout. `false` to disable\n *\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.timeout = function (v) {\n if (!arguments.length) return this._timeout;\n this._timeout = v;\n return this;\n};\n\n/**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @api private\n */\n\nManager.prototype.maybeReconnectOnOpen = function () {\n // Only try to reconnect if it's the first time we're connecting\n if (!this.reconnecting && this._reconnection && this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n};\n\n/**\n * Sets the current transport `socket`.\n *\n * @param {Function} optional, callback\n * @return {Manager} self\n * @api public\n */\n\nManager.prototype.open =\nManager.prototype.connect = function (fn, opts) {\n debug('readyState %s', this.readyState);\n if (~this.readyState.indexOf('open')) return this;\n\n debug('opening %s', this.uri);\n this.engine = eio(this.uri, this.opts);\n var socket = this.engine;\n var self = this;\n this.readyState = 'opening';\n this.skipReconnect = false;\n\n // emit `open`\n var openSub = on(socket, 'open', function () {\n self.onopen();\n fn && fn();\n });\n\n // emit `connect_error`\n var errorSub = on(socket, 'error', function (data) {\n debug('connect_error');\n self.cleanup();\n self.readyState = 'closed';\n self.emitAll('connect_error', data);\n if (fn) {\n var err = new Error('Connection error');\n err.data = data;\n fn(err);\n } else {\n // Only do this if there is no fn to handle the error\n self.maybeReconnectOnOpen();\n }\n });\n\n // emit `connect_timeout`\n if (false !== this._timeout) {\n var timeout = this._timeout;\n debug('connect attempt will timeout after %d', timeout);\n\n // set timer\n var timer = setTimeout(function () {\n debug('connect attempt timed out after %d', timeout);\n openSub.destroy();\n socket.close();\n socket.emit('error', 'timeout');\n self.emitAll('connect_timeout', timeout);\n }, timeout);\n\n this.subs.push({\n destroy: function () {\n clearTimeout(timer);\n }\n });\n }\n\n this.subs.push(openSub);\n this.subs.push(errorSub);\n\n return this;\n};\n\n/**\n * Called upon transport open.\n *\n * @api private\n */\n\nManager.prototype.onopen = function () {\n debug('open');\n\n // clear old subs\n this.cleanup();\n\n // mark as open\n this.readyState = 'open';\n this.emit('open');\n\n // add new subs\n var socket = this.engine;\n this.subs.push(on(socket, 'data', bind(this, 'ondata')));\n this.subs.push(on(socket, 'ping', bind(this, 'onping')));\n this.subs.push(on(socket, 'pong', bind(this, 'onpong')));\n this.subs.push(on(socket, 'error', bind(this, 'onerror')));\n this.subs.push(on(socket, 'close', bind(this, 'onclose')));\n this.subs.push(on(this.decoder, 'decoded', bind(this, 'ondecoded')));\n};\n\n/**\n * Called upon a ping.\n *\n * @api private\n */\n\nManager.prototype.onping = function () {\n this.lastPing = new Date();\n this.emitAll('ping');\n};\n\n/**\n * Called upon a packet.\n *\n * @api private\n */\n\nManager.prototype.onpong = function () {\n this.emitAll('pong', new Date() - this.lastPing);\n};\n\n/**\n * Called with data.\n *\n * @api private\n */\n\nManager.prototype.ondata = function (data) {\n this.decoder.add(data);\n};\n\n/**\n * Called when parser fully decodes a packet.\n *\n * @api private\n */\n\nManager.prototype.ondecoded = function (packet) {\n this.emit('packet', packet);\n};\n\n/**\n * Called upon socket error.\n *\n * @api private\n */\n\nManager.prototype.onerror = function (err) {\n debug('error', err);\n this.emitAll('error', err);\n};\n\n/**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @api public\n */\n\nManager.prototype.socket = function (nsp, opts) {\n var socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n var self = this;\n socket.on('connecting', onConnecting);\n socket.on('connect', function () {\n socket.id = self.generateId(nsp);\n });\n\n if (this.autoConnect) {\n // manually call here since connecting event is fired before listening\n onConnecting();\n }\n }\n\n function onConnecting () {\n if (!~indexOf(self.connecting, socket)) {\n self.connecting.push(socket);\n }\n }\n\n return socket;\n};\n\n/**\n * Called upon a socket close.\n *\n * @param {Socket} socket\n */\n\nManager.prototype.destroy = function (socket) {\n var index = indexOf(this.connecting, socket);\n if (~index) this.connecting.splice(index, 1);\n if (this.connecting.length) return;\n\n this.close();\n};\n\n/**\n * Writes a packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nManager.prototype.packet = function (packet) {\n debug('writing packet %j', packet);\n var self = this;\n if (packet.query && packet.type === 0) packet.nsp += '?' + packet.query;\n\n if (!self.encoding) {\n // encode, then write to engine with result\n self.encoding = true;\n this.encoder.encode(packet, function (encodedPackets) {\n for (var i = 0; i < encodedPackets.length; i++) {\n self.engine.write(encodedPackets[i], packet.options);\n }\n self.encoding = false;\n self.processPacketQueue();\n });\n } else { // add packet to the queue\n self.packetBuffer.push(packet);\n }\n};\n\n/**\n * If packet buffer is non-empty, begins encoding the\n * next packet in line.\n *\n * @api private\n */\n\nManager.prototype.processPacketQueue = function () {\n if (this.packetBuffer.length > 0 && !this.encoding) {\n var pack = this.packetBuffer.shift();\n this.packet(pack);\n }\n};\n\n/**\n * Clean up transport subscriptions and packet buffer.\n *\n * @api private\n */\n\nManager.prototype.cleanup = function () {\n debug('cleanup');\n\n var subsLength = this.subs.length;\n for (var i = 0; i < subsLength; i++) {\n var sub = this.subs.shift();\n sub.destroy();\n }\n\n this.packetBuffer = [];\n this.encoding = false;\n this.lastPing = null;\n\n this.decoder.destroy();\n};\n\n/**\n * Close the current socket.\n *\n * @api private\n */\n\nManager.prototype.close =\nManager.prototype.disconnect = function () {\n debug('disconnect');\n this.skipReconnect = true;\n this.reconnecting = false;\n if ('opening' === this.readyState) {\n // `onclose` will not fire because\n // an open event never happened\n this.cleanup();\n }\n this.backoff.reset();\n this.readyState = 'closed';\n if (this.engine) this.engine.close();\n};\n\n/**\n * Called upon engine close.\n *\n * @api private\n */\n\nManager.prototype.onclose = function (reason) {\n debug('onclose');\n\n this.cleanup();\n this.backoff.reset();\n this.readyState = 'closed';\n this.emit('close', reason);\n\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n};\n\n/**\n * Attempt a reconnection.\n *\n * @api private\n */\n\nManager.prototype.reconnect = function () {\n if (this.reconnecting || this.skipReconnect) return this;\n\n var self = this;\n\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n debug('reconnect failed');\n this.backoff.reset();\n this.emitAll('reconnect_failed');\n this.reconnecting = false;\n } else {\n var delay = this.backoff.duration();\n debug('will wait %dms before reconnect attempt', delay);\n\n this.reconnecting = true;\n var timer = setTimeout(function () {\n if (self.skipReconnect) return;\n\n debug('attempting reconnect');\n self.emitAll('reconnect_attempt', self.backoff.attempts);\n self.emitAll('reconnecting', self.backoff.attempts);\n\n // check again for the case socket closed in above events\n if (self.skipReconnect) return;\n\n self.open(function (err) {\n if (err) {\n debug('reconnect attempt error');\n self.reconnecting = false;\n self.reconnect();\n self.emitAll('reconnect_error', err.data);\n } else {\n debug('reconnect success');\n self.onreconnect();\n }\n });\n }, delay);\n\n this.subs.push({\n destroy: function () {\n clearTimeout(timer);\n }\n });\n }\n};\n\n/**\n * Called upon successful reconnect.\n *\n * @api private\n */\n\nManager.prototype.onreconnect = function () {\n var attempt = this.backoff.attempts;\n this.reconnecting = false;\n this.backoff.reset();\n this.updateSocketIds();\n this.emitAll('reconnect', attempt);\n};\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/**\n * Module dependencies\n */\n\nvar XMLHttpRequest = __webpack_require__(9);\nvar XHR = __webpack_require__(45);\nvar JSONP = __webpack_require__(53);\nvar websocket = __webpack_require__(54);\n\n/**\n * Export transports.\n */\n\nexports.polling = polling;\nexports.websocket = websocket;\n\n/**\n * Polling transport polymorphic constructor.\n * Decides on xhr vs jsonp based on feature detection.\n *\n * @api private\n */\n\nfunction polling (opts) {\n var xhr;\n var xd = false;\n var xs = false;\n var jsonp = false !== opts.jsonp;\n\n if (global.location) {\n var isSSL = 'https:' === location.protocol;\n var port = location.port;\n\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? 443 : 80;\n }\n\n xd = opts.hostname !== location.hostname || port !== opts.port;\n xs = opts.secure !== isSSL;\n }\n\n opts.xdomain = xd;\n opts.xscheme = xs;\n xhr = new XMLHttpRequest(opts);\n\n if ('open' in xhr && !opts.forceJSONP) {\n return new XHR(opts);\n } else {\n if (!jsonp) throw new Error('JSONP disabled');\n return new JSONP(opts);\n }\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Module dependencies.\n */\n\nvar Transport = __webpack_require__(10);\nvar parseqs = __webpack_require__(5);\nvar parser = __webpack_require__(3);\nvar inherit = __webpack_require__(6);\nvar yeast = __webpack_require__(21);\nvar debug = __webpack_require__(1)('engine.io-client:polling');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Polling;\n\n/**\n * Is XHR2 supported?\n */\n\nvar hasXHR2 = (function () {\n var XMLHttpRequest = __webpack_require__(9);\n var xhr = new XMLHttpRequest({ xdomain: false });\n return null != xhr.responseType;\n})();\n\n/**\n * Polling interface.\n *\n * @param {Object} opts\n * @api private\n */\n\nfunction Polling (opts) {\n var forceBase64 = (opts && opts.forceBase64);\n if (!hasXHR2 || forceBase64) {\n this.supportsBinary = false;\n }\n Transport.call(this, opts);\n}\n\n/**\n * Inherits from Transport.\n */\n\ninherit(Polling, Transport);\n\n/**\n * Transport name.\n */\n\nPolling.prototype.name = 'polling';\n\n/**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @api private\n */\n\nPolling.prototype.doOpen = function () {\n this.poll();\n};\n\n/**\n * Pauses polling.\n *\n * @param {Function} callback upon buffers are flushed and transport is paused\n * @api private\n */\n\nPolling.prototype.pause = function (onPause) {\n var self = this;\n\n this.readyState = 'pausing';\n\n function pause () {\n debug('paused');\n self.readyState = 'paused';\n onPause();\n }\n\n if (this.polling || !this.writable) {\n var total = 0;\n\n if (this.polling) {\n debug('we are currently polling - waiting to pause');\n total++;\n this.once('pollComplete', function () {\n debug('pre-pause polling complete');\n --total || pause();\n });\n }\n\n if (!this.writable) {\n debug('we are currently writing - waiting to pause');\n total++;\n this.once('drain', function () {\n debug('pre-pause writing complete');\n --total || pause();\n });\n }\n } else {\n pause();\n }\n};\n\n/**\n * Starts polling cycle.\n *\n * @api public\n */\n\nPolling.prototype.poll = function () {\n debug('polling');\n this.polling = true;\n this.doPoll();\n this.emit('poll');\n};\n\n/**\n * Overloads onData to detect payloads.\n *\n * @api private\n */\n\nPolling.prototype.onData = function (data) {\n var self = this;\n debug('polling got data %s', data);\n var callback = function (packet, index, total) {\n // if its the first message we consider the transport open\n if ('opening' === self.readyState) {\n self.onOpen();\n }\n\n // if its a close packet, we close the ongoing requests\n if ('close' === packet.type) {\n self.onClose();\n return false;\n }\n\n // otherwise bypass onData and handle the message\n self.onPacket(packet);\n };\n\n // decode payload\n parser.decodePayload(data, this.socket.binaryType, callback);\n\n // if an event did not trigger closing\n if ('closed' !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emit('pollComplete');\n\n if ('open' === this.readyState) {\n this.poll();\n } else {\n debug('ignoring poll - transport state \"%s\"', this.readyState);\n }\n }\n};\n\n/**\n * For polling, send a close packet.\n *\n * @api private\n */\n\nPolling.prototype.doClose = function () {\n var self = this;\n\n function close () {\n debug('writing close packet');\n self.write([{ type: 'close' }]);\n }\n\n if ('open' === this.readyState) {\n debug('transport open - closing');\n close();\n } else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n debug('transport not open - deferring close');\n this.once('open', close);\n }\n};\n\n/**\n * Writes a packets payload.\n *\n * @param {Array} data packets\n * @param {Function} drain callback\n * @api private\n */\n\nPolling.prototype.write = function (packets) {\n var self = this;\n this.writable = false;\n var callbackfn = function () {\n self.writable = true;\n self.emit('drain');\n };\n\n parser.encodePayload(packets, this.supportsBinary, function (data) {\n self.doWrite(data, callbackfn);\n });\n};\n\n/**\n * Generates uri for connection.\n *\n * @api private\n */\n\nPolling.prototype.uri = function () {\n var query = this.query || {};\n var schema = this.secure ? 'https' : 'http';\n var port = '';\n\n // cache busting is forced\n if (false !== this.timestampRequests) {\n query[this.timestampParam] = yeast();\n }\n\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n\n query = parseqs.encode(query);\n\n // avoid port if default for schema\n if (this.port && (('https' === schema && Number(this.port) !== 443) ||\n ('http' === schema && Number(this.port) !== 80))) {\n port = ':' + this.port;\n }\n\n // prepend ? to query\n if (query.length) {\n query = '?' + query;\n }\n\n var ipv6 = this.hostname.indexOf(':') !== -1;\n return schema + '://' + (ipv6 ? '[' + this.hostname + ']' : this.hostname) + port + this.path + query;\n};\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split('')\n , length = 64\n , map = {}\n , seed = 0\n , i = 0\n , prev;\n\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nfunction encode(num) {\n var encoded = '';\n\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n\n return encoded;\n}\n\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nfunction decode(str) {\n var decoded = 0;\n\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n\n return decoded;\n}\n\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nfunction yeast() {\n var now = encode(+new Date());\n\n if (now !== prev) return seed = 0, prev = now;\n return now +'.'+ encode(seed++);\n}\n\n//\n// Map each character to its index.\n//\nfor (; i < length; i++) map[alphabet[i]] = i;\n\n//\n// Expose the `yeast`, `encode` and `decode` functions.\n//\nyeast.encode = encode;\nyeast.decode = decode;\nmodule.exports = yeast;\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports) {\n\n\nvar indexOf = [].indexOf;\n\nmodule.exports = function(arr, obj){\n if (indexOf) return arr.indexOf(obj);\n for (var i = 0; i < arr.length; ++i) {\n if (arr[i] === obj) return i;\n }\n return -1;\n};\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/**\n * Module dependencies.\n */\n\nvar parser = __webpack_require__(8);\nvar Emitter = __webpack_require__(2);\nvar toArray = __webpack_require__(56);\nvar on = __webpack_require__(24);\nvar bind = __webpack_require__(25);\nvar debug = __webpack_require__(1)('socket.io-client:socket');\nvar parseqs = __webpack_require__(5);\n\n/**\n * Module exports.\n */\n\nmodule.exports = exports = Socket;\n\n/**\n * Internal events (blacklisted).\n * These events can't be emitted by the user.\n *\n * @api private\n */\n\nvar events = {\n connect: 1,\n connect_error: 1,\n connect_timeout: 1,\n connecting: 1,\n disconnect: 1,\n error: 1,\n reconnect: 1,\n reconnect_attempt: 1,\n reconnect_failed: 1,\n reconnect_error: 1,\n reconnecting: 1,\n ping: 1,\n pong: 1\n};\n\n/**\n * Shortcut to `Emitter#emit`.\n */\n\nvar emit = Emitter.prototype.emit;\n\n/**\n * `Socket` constructor.\n *\n * @api public\n */\n\nfunction Socket (io, nsp, opts) {\n this.io = io;\n this.nsp = nsp;\n this.json = this; // compat\n this.ids = 0;\n this.acks = {};\n this.receiveBuffer = [];\n this.sendBuffer = [];\n this.connected = false;\n this.disconnected = true;\n if (opts && opts.query) {\n this.query = opts.query;\n }\n if (this.io.autoConnect) this.open();\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Socket.prototype);\n\n/**\n * Subscribe to open, close and packet events\n *\n * @api private\n */\n\nSocket.prototype.subEvents = function () {\n if (this.subs) return;\n\n var io = this.io;\n this.subs = [\n on(io, 'open', bind(this, 'onopen')),\n on(io, 'packet', bind(this, 'onpacket')),\n on(io, 'close', bind(this, 'onclose'))\n ];\n};\n\n/**\n * \"Opens\" the socket.\n *\n * @api public\n */\n\nSocket.prototype.open =\nSocket.prototype.connect = function () {\n if (this.connected) return this;\n\n this.subEvents();\n this.io.open(); // ensure open\n if ('open' === this.io.readyState) this.onopen();\n this.emit('connecting');\n return this;\n};\n\n/**\n * Sends a `message` event.\n *\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.send = function () {\n var args = toArray(arguments);\n args.unshift('message');\n this.emit.apply(this, args);\n return this;\n};\n\n/**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @param {String} event name\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.emit = function (ev) {\n if (events.hasOwnProperty(ev)) {\n emit.apply(this, arguments);\n return this;\n }\n\n var args = toArray(arguments);\n var packet = { type: parser.EVENT, data: args };\n\n packet.options = {};\n packet.options.compress = !this.flags || false !== this.flags.compress;\n\n // event ack callback\n if ('function' === typeof args[args.length - 1]) {\n debug('emitting packet with ack id %d', this.ids);\n this.acks[this.ids] = args.pop();\n packet.id = this.ids++;\n }\n\n if (this.connected) {\n this.packet(packet);\n } else {\n this.sendBuffer.push(packet);\n }\n\n delete this.flags;\n\n return this;\n};\n\n/**\n * Sends a packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.packet = function (packet) {\n packet.nsp = this.nsp;\n this.io.packet(packet);\n};\n\n/**\n * Called upon engine `open`.\n *\n * @api private\n */\n\nSocket.prototype.onopen = function () {\n debug('transport is open - connecting');\n\n // write connect packet if necessary\n if ('/' !== this.nsp) {\n if (this.query) {\n var query = typeof this.query === 'object' ? parseqs.encode(this.query) : this.query;\n debug('sending connect packet with query %s', query);\n this.packet({type: parser.CONNECT, query: query});\n } else {\n this.packet({type: parser.CONNECT});\n }\n }\n};\n\n/**\n * Called upon engine `close`.\n *\n * @param {String} reason\n * @api private\n */\n\nSocket.prototype.onclose = function (reason) {\n debug('close (%s)', reason);\n this.connected = false;\n this.disconnected = true;\n delete this.id;\n this.emit('disconnect', reason);\n};\n\n/**\n * Called with socket packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onpacket = function (packet) {\n if (packet.nsp !== this.nsp) return;\n\n switch (packet.type) {\n case parser.CONNECT:\n this.onconnect();\n break;\n\n case parser.EVENT:\n this.onevent(packet);\n break;\n\n case parser.BINARY_EVENT:\n this.onevent(packet);\n break;\n\n case parser.ACK:\n this.onack(packet);\n break;\n\n case parser.BINARY_ACK:\n this.onack(packet);\n break;\n\n case parser.DISCONNECT:\n this.ondisconnect();\n break;\n\n case parser.ERROR:\n this.emit('error', packet.data);\n break;\n }\n};\n\n/**\n * Called upon a server event.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onevent = function (packet) {\n var args = packet.data || [];\n debug('emitting event %j', args);\n\n if (null != packet.id) {\n debug('attaching ack callback to event');\n args.push(this.ack(packet.id));\n }\n\n if (this.connected) {\n emit.apply(this, args);\n } else {\n this.receiveBuffer.push(args);\n }\n};\n\n/**\n * Produces an ack callback to emit with an event.\n *\n * @api private\n */\n\nSocket.prototype.ack = function (id) {\n var self = this;\n var sent = false;\n return function () {\n // prevent double callbacks\n if (sent) return;\n sent = true;\n var args = toArray(arguments);\n debug('sending ack %j', args);\n\n self.packet({\n type: parser.ACK,\n id: id,\n data: args\n });\n };\n};\n\n/**\n * Called upon a server acknowlegement.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onack = function (packet) {\n var ack = this.acks[packet.id];\n if ('function' === typeof ack) {\n debug('calling ack %s with %j', packet.id, packet.data);\n ack.apply(this, packet.data);\n delete this.acks[packet.id];\n } else {\n debug('bad ack %s', packet.id);\n }\n};\n\n/**\n * Called upon server connect.\n *\n * @api private\n */\n\nSocket.prototype.onconnect = function () {\n this.connected = true;\n this.disconnected = false;\n this.emit('connect');\n this.emitBuffered();\n};\n\n/**\n * Emit buffered events (received and emitted).\n *\n * @api private\n */\n\nSocket.prototype.emitBuffered = function () {\n var i;\n for (i = 0; i < this.receiveBuffer.length; i++) {\n emit.apply(this, this.receiveBuffer[i]);\n }\n this.receiveBuffer = [];\n\n for (i = 0; i < this.sendBuffer.length; i++) {\n this.packet(this.sendBuffer[i]);\n }\n this.sendBuffer = [];\n};\n\n/**\n * Called upon server disconnect.\n *\n * @api private\n */\n\nSocket.prototype.ondisconnect = function () {\n debug('server disconnect (%s)', this.nsp);\n this.destroy();\n this.onclose('io server disconnect');\n};\n\n/**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @api private.\n */\n\nSocket.prototype.destroy = function () {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n for (var i = 0; i < this.subs.length; i++) {\n this.subs[i].destroy();\n }\n this.subs = null;\n }\n\n this.io.destroy(this);\n};\n\n/**\n * Disconnects the socket manually.\n *\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.close =\nSocket.prototype.disconnect = function () {\n if (this.connected) {\n debug('performing disconnect (%s)', this.nsp);\n this.packet({ type: parser.DISCONNECT });\n }\n\n // remove socket from pool\n this.destroy();\n\n if (this.connected) {\n // fire events\n this.onclose('io client disconnect');\n }\n return this;\n};\n\n/**\n * Sets the compress flag.\n *\n * @param {Boolean} if `true`, compresses the sending data\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.compress = function (compress) {\n this.flags = this.flags || {};\n this.flags.compress = compress;\n return this;\n};\n\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports) {\n\n\n/**\n * Module exports.\n */\n\nmodule.exports = on;\n\n/**\n * Helper for subscriptions.\n *\n * @param {Object|EventEmitter} obj with `Emitter` mixin or `EventEmitter`\n * @param {String} event name\n * @param {Function} callback\n * @api public\n */\n\nfunction on (obj, ev, fn) {\n obj.on(ev, fn);\n return {\n destroy: function () {\n obj.removeListener(ev, fn);\n }\n };\n}\n\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports) {\n\n/**\n * Slice reference.\n */\n\nvar slice = [].slice;\n\n/**\n * Bind `obj` to `fn`.\n *\n * @param {Object} obj\n * @param {Function|String} fn or string\n * @return {Function}\n * @api public\n */\n\nmodule.exports = function(obj, fn){\n if ('string' == typeof fn) fn = obj[fn];\n if ('function' != typeof fn) throw new Error('bind() requires a function');\n var args = slice.call(arguments, 2);\n return function(){\n return fn.apply(obj, args.concat(slice.call(arguments)));\n }\n};\n\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar scroll = __webpack_require__(11);\r\nvar utils = __webpack_require__(4);\r\nvar styles = {\r\n display: \"none\",\r\n padding: \"15px\",\r\n fontFamily: \"sans-serif\",\r\n position: \"fixed\",\r\n fontSize: \"0.9em\",\r\n zIndex: 9999,\r\n right: 0,\r\n top: 0,\r\n borderBottomLeftRadius: \"5px\",\r\n backgroundColor: \"#1B2032\",\r\n margin: 0,\r\n color: \"white\",\r\n textAlign: \"center\",\r\n pointerEvents: \"none\"\r\n};\r\nvar elem;\r\nvar options;\r\nvar timeoutInt;\r\n/**\r\n * @param {BrowserSync} bs\r\n * @returns {*}\r\n */\r\nexports.init = function (bs) {\r\n options = bs.options;\r\n var cssStyles = styles;\r\n if (options.notify.styles) {\r\n if (Object.prototype.toString.call(options.notify.styles) ===\r\n \"[object Array]\") {\r\n // handle original array behavior, replace all styles with a joined copy\r\n cssStyles = options.notify.styles.join(\";\");\r\n }\r\n else {\r\n for (var key in options.notify.styles) {\r\n if (options.notify.styles.hasOwnProperty(key)) {\r\n cssStyles[key] = options.notify.styles[key];\r\n }\r\n }\r\n }\r\n }\r\n elem = document.createElement(\"DIV\");\r\n elem.id = \"__bs_notify__\";\r\n if (typeof cssStyles === \"string\") {\r\n elem.style.cssText = cssStyles;\r\n }\r\n else {\r\n for (var rule in cssStyles) {\r\n elem.style[rule] = cssStyles[rule];\r\n }\r\n }\r\n var flashFn = exports.watchEvent(bs);\r\n bs.emitter.on(\"notify\", flashFn);\r\n bs.socket.on(\"browser:notify\", flashFn);\r\n return elem;\r\n};\r\n/**\r\n * @returns {Function}\r\n */\r\nexports.watchEvent = function (bs) {\r\n return function (data) {\r\n if (bs.options.notify || data.override) {\r\n if (typeof data === \"string\") {\r\n return exports.flash(data);\r\n }\r\n exports.flash(data.message, data.timeout);\r\n }\r\n };\r\n};\r\n/**\r\n *\r\n */\r\nexports.getElem = function () {\r\n return elem;\r\n};\r\n/**\r\n * @param message\r\n * @param [timeout]\r\n * @returns {*}\r\n */\r\nexports.flash = function (message, timeout) {\r\n var elem = exports.getElem();\r\n var $body = utils.getBody();\r\n // return if notify was never initialised\r\n if (!elem) {\r\n return false;\r\n }\r\n elem.innerHTML = message;\r\n elem.style.display = \"block\";\r\n $body.appendChild(elem);\r\n if (timeoutInt) {\r\n clearTimeout(timeoutInt);\r\n timeoutInt = undefined;\r\n }\r\n timeoutInt = window.setTimeout(function () {\r\n elem.style.display = \"none\";\r\n if (elem.parentNode) {\r\n $body.removeChild(elem);\r\n }\r\n }, timeout || 2000);\r\n return elem;\r\n};\r\n\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n/**\r\n * This is the plugin for syncing clicks between browsers\r\n * @type {string}\r\n */\r\nvar EVENT_NAME = \"click\";\r\nvar OPT_PATH = \"ghostMode.clicks\";\r\nexports.canEmitEvents = true;\r\n/**\r\n * @param {BrowserSync} bs\r\n * @param eventManager\r\n */\r\nexports.init = function (bs, eventManager) {\r\n eventManager.addEvent(document.body, EVENT_NAME, exports.browserEvent(bs));\r\n bs.socket.on(EVENT_NAME, exports.socketEvent(bs, eventManager));\r\n};\r\n/**\r\n * Uses event delegation to determine the clicked element\r\n * @param {BrowserSync} bs\r\n * @returns {Function}\r\n */\r\nexports.browserEvent = function (bs) {\r\n return function (event) {\r\n if (exports.canEmitEvents) {\r\n var elem = event.target || event.srcElement;\r\n if (elem.type === \"checkbox\" || elem.type === \"radio\") {\r\n bs.utils.forceChange(elem);\r\n return;\r\n }\r\n bs.socket.emit(EVENT_NAME, bs.utils.getElementData(elem));\r\n }\r\n else {\r\n exports.canEmitEvents = true;\r\n }\r\n };\r\n};\r\n/**\r\n * @param {BrowserSync} bs\r\n * @param {manager} eventManager\r\n * @returns {Function}\r\n */\r\nexports.socketEvent = function (bs, eventManager) {\r\n return function (data) {\r\n if (!bs.canSync(data, OPT_PATH) || bs.tabHidden) {\r\n return false;\r\n }\r\n var elem = bs.utils.getSingleElement(data.tagName, data.index);\r\n if (elem) {\r\n exports.canEmitEvents = false;\r\n eventManager.triggerClick(elem);\r\n }\r\n };\r\n};\r\n\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nexports.plugins = {\r\n inputs: __webpack_require__(29),\r\n toggles: __webpack_require__(30),\r\n submit: __webpack_require__(31)\r\n};\r\n/**\r\n * Load plugins for enabled options\r\n * @param bs\r\n */\r\nexports.init = function (bs, eventManager) {\r\n var checkOpt = true;\r\n var options = bs.options.ghostMode.forms;\r\n if (options === true) {\r\n checkOpt = false;\r\n }\r\n function init(name) {\r\n exports.plugins[name].init(bs, eventManager);\r\n }\r\n for (var name in exports.plugins) {\r\n if (!checkOpt) {\r\n init(name);\r\n }\r\n else {\r\n if (options[name]) {\r\n init(name);\r\n }\r\n }\r\n }\r\n};\r\n\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n/**\r\n * This is the plugin for syncing clicks between browsers\r\n * @type {string}\r\n */\r\nvar EVENT_NAME = \"input:text\";\r\nvar OPT_PATH = \"ghostMode.forms.inputs\";\r\nexports.canEmitEvents = true;\r\n/**\r\n * @param {BrowserSync} bs\r\n * @param eventManager\r\n */\r\nexports.init = function (bs, eventManager) {\r\n eventManager.addEvent(document.body, \"keyup\", exports.browserEvent(bs));\r\n bs.socket.on(EVENT_NAME, exports.socketEvent(bs, eventManager));\r\n};\r\n/**\r\n * @param {BrowserSync} bs\r\n * @returns {Function}\r\n */\r\nexports.browserEvent = function (bs) {\r\n return function (event) {\r\n var elem = event.target || event.srcElement;\r\n var data;\r\n if (exports.canEmitEvents) {\r\n if (elem.tagName === \"INPUT\" || elem.tagName === \"TEXTAREA\") {\r\n data = bs.utils.getElementData(elem);\r\n data.value = elem.value;\r\n bs.socket.emit(EVENT_NAME, data);\r\n }\r\n }\r\n else {\r\n exports.canEmitEvents = true;\r\n }\r\n };\r\n};\r\n/**\r\n * @param {BrowserSync} bs\r\n * @returns {Function}\r\n */\r\nexports.socketEvent = function (bs) {\r\n return function (data) {\r\n if (!bs.canSync(data, OPT_PATH)) {\r\n return false;\r\n }\r\n var elem = bs.utils.getSingleElement(data.tagName, data.index);\r\n if (elem) {\r\n elem.value = data.value;\r\n return elem;\r\n }\r\n return false;\r\n };\r\n};\r\n\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n/**\r\n * This is the plugin for syncing clicks between browsers\r\n * @type {string}\r\n */\r\nvar EVENT_NAME = \"input:toggles\";\r\nvar OPT_PATH = \"ghostMode.forms.toggles\";\r\nexports.canEmitEvents = true;\r\n/**\r\n * @param {BrowserSync} bs\r\n * @param eventManager\r\n */\r\nexports.init = function (bs, eventManager) {\r\n var browserEvent = exports.browserEvent(bs);\r\n exports.addEvents(eventManager, browserEvent);\r\n bs.socket.on(EVENT_NAME, exports.socketEvent(bs, eventManager));\r\n};\r\n/**\r\n * @param eventManager\r\n * @param event\r\n */\r\nexports.addEvents = function (eventManager, event) {\r\n var elems = document.getElementsByTagName(\"select\");\r\n var inputs = document.getElementsByTagName(\"input\");\r\n addEvents(elems);\r\n addEvents(inputs);\r\n function addEvents(domElems) {\r\n for (var i = 0, n = domElems.length; i < n; i += 1) {\r\n eventManager.addEvent(domElems[i], \"change\", event);\r\n }\r\n }\r\n};\r\n/**\r\n * @param {BrowserSync} bs\r\n * @returns {Function}\r\n */\r\nexports.browserEvent = function (bs) {\r\n return function (event) {\r\n if (exports.canEmitEvents) {\r\n var elem = event.target || event.srcElement;\r\n var data;\r\n if (elem.type === \"radio\" ||\r\n elem.type === \"checkbox\" ||\r\n elem.tagName === \"SELECT\") {\r\n data = bs.utils.getElementData(elem);\r\n data.type = elem.type;\r\n data.value = elem.value;\r\n data.checked = elem.checked;\r\n bs.socket.emit(EVENT_NAME, data);\r\n }\r\n }\r\n else {\r\n exports.canEmitEvents = true;\r\n }\r\n };\r\n};\r\n/**\r\n * @param {BrowserSync} bs\r\n * @returns {Function}\r\n */\r\nexports.socketEvent = function (bs) {\r\n return function (data) {\r\n if (!bs.canSync(data, OPT_PATH)) {\r\n return false;\r\n }\r\n exports.canEmitEvents = false;\r\n var elem = bs.utils.getSingleElement(data.tagName, data.index);\r\n if (elem) {\r\n if (data.type === \"radio\") {\r\n elem.checked = true;\r\n }\r\n if (data.type === \"checkbox\") {\r\n elem.checked = data.checked;\r\n }\r\n if (data.tagName === \"SELECT\") {\r\n elem.value = data.value;\r\n }\r\n return elem;\r\n }\r\n return false;\r\n };\r\n};\r\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n/**\r\n * This is the plugin for syncing clicks between browsers\r\n * @type {string}\r\n */\r\nvar EVENT_NAME = \"form:submit\";\r\nvar OPT_PATH = \"ghostMode.forms.submit\";\r\nexports.canEmitEvents = true;\r\n/**\r\n * @param {BrowserSync} bs\r\n * @param eventManager\r\n */\r\nexports.init = function (bs, eventManager) {\r\n var browserEvent = exports.browserEvent(bs);\r\n eventManager.addEvent(document.body, \"submit\", browserEvent);\r\n eventManager.addEvent(document.body, \"reset\", browserEvent);\r\n bs.socket.on(EVENT_NAME, exports.socketEvent(bs, eventManager));\r\n};\r\n/**\r\n * @param {BrowserSync} bs\r\n * @returns {Function}\r\n */\r\nexports.browserEvent = function (bs) {\r\n return function (event) {\r\n if (exports.canEmitEvents) {\r\n var elem = event.target || event.srcElement;\r\n var data = bs.utils.getElementData(elem);\r\n data.type = event.type;\r\n bs.socket.emit(EVENT_NAME, data);\r\n }\r\n else {\r\n exports.canEmitEvents = true;\r\n }\r\n };\r\n};\r\n/**\r\n * @param {BrowserSync} bs\r\n * @returns {Function}\r\n */\r\nexports.socketEvent = function (bs) {\r\n return function (data) {\r\n if (!bs.canSync(data, OPT_PATH)) {\r\n return false;\r\n }\r\n var elem = bs.utils.getSingleElement(data.tagName, data.index);\r\n exports.canEmitEvents = false;\r\n if (elem && data.type === \"submit\") {\r\n elem.submit();\r\n }\r\n if (elem && data.type === \"reset\") {\r\n elem.reset();\r\n }\r\n return false;\r\n };\r\n};\r\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\n/**\r\n * This is the plugin for syncing location\r\n * @type {string}\r\n */\r\nvar EVENT_NAME = \"browser:location\";\r\nvar OPT_PATH = \"ghostMode.location\";\r\nexports.canEmitEvents = true;\r\n/**\r\n * @param {BrowserSync} bs\r\n */\r\nexports.init = function (bs) {\r\n bs.socket.on(EVENT_NAME, exports.socketEvent(bs));\r\n};\r\n/**\r\n * Respond to socket event\r\n */\r\nexports.socketEvent = function (bs) {\r\n return function (data) {\r\n if (!bs.canSync(data, OPT_PATH)) {\r\n return false;\r\n }\r\n if (data.path) {\r\n exports.setPath(data.path);\r\n }\r\n else {\r\n exports.setUrl(data.url);\r\n }\r\n };\r\n};\r\n/**\r\n * @param url\r\n */\r\nexports.setUrl = function (url) {\r\n window.location = url;\r\n};\r\n/**\r\n * @param path\r\n */\r\nexports.setPath = function (path) {\r\n window.location =\r\n window.location.protocol + \"//\" + window.location.host + path;\r\n};\r\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(34);\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar socket = __webpack_require__(13);\r\nvar shims = __webpack_require__(58);\r\nvar notify = __webpack_require__(26);\r\nvar codeSync = __webpack_require__(59);\r\nvar BrowserSync = __webpack_require__(69);\r\nvar ghostMode = __webpack_require__(71);\r\nvar emitter = __webpack_require__(7);\r\nvar events = __webpack_require__(12);\r\nvar utils = __webpack_require__(4);\r\nvar shouldReload = false;\r\nvar initialised = false;\r\n/**\r\n * @param options\r\n */\r\nexports.init = function (options) {\r\n if (shouldReload && options.reloadOnRestart) {\r\n utils.reloadBrowser();\r\n }\r\n var BS = window.___browserSync___ || {};\r\n if (!BS.client) {\r\n BS.client = true;\r\n var browserSync = new BrowserSync(options);\r\n // Always init on page load\r\n ghostMode.init(browserSync);\r\n codeSync.init(browserSync);\r\n notify.init(browserSync);\r\n if (options.notify) {\r\n notify.flash(\"Connected to BrowserSync\");\r\n }\r\n }\r\n if (!initialised) {\r\n socket.on(\"disconnect\", function () {\r\n if (options.notify) {\r\n notify.flash(\"Disconnected from BrowserSync\");\r\n }\r\n shouldReload = true;\r\n });\r\n initialised = true;\r\n }\r\n};\r\n/**\r\n * Handle individual socket connections\r\n */\r\nsocket.on(\"connection\", exports.init);\r\n/**debug:start**/\r\nif (window.__karma__) {\r\n window.__bs_scroll__ = __webpack_require__(11);\r\n window.__bs_clicks__ = __webpack_require__(27);\r\n window.__bs_location__ = __webpack_require__(32);\r\n window.__bs_inputs__ = __webpack_require__(29);\r\n window.__bs_toggles__ = __webpack_require__(30);\r\n window.__bs_submit__ = __webpack_require__(31);\r\n window.__bs_forms__ = __webpack_require__(28);\r\n window.__bs_utils__ = __webpack_require__(4);\r\n window.__bs_emitter__ = emitter;\r\n window.__bs = BrowserSync;\r\n window.__bs_notify__ = notify;\r\n window.__bs_code_sync__ = codeSync;\r\n window.__bs_ghost_mode__ = ghostMode;\r\n window.__bs_socket__ = socket;\r\n window.__bs_index__ = exports;\r\n}\r\n\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/**\n * Module dependencies.\n */\n\nvar url = __webpack_require__(36);\nvar parser = __webpack_require__(8);\nvar Manager = __webpack_require__(18);\nvar debug = __webpack_require__(1)('socket.io-client');\n\n/**\n * Module exports.\n */\n\nmodule.exports = exports = lookup;\n\n/**\n * Managers cache.\n */\n\nvar cache = exports.managers = {};\n\n/**\n * Looks up an existing `Manager` for multiplexing.\n * If the user summons:\n *\n * `io('http://localhost/a');`\n * `io('http://localhost/b');`\n *\n * We reuse the existing instance based on same scheme/port/host,\n * and we initialize sockets for each namespace.\n *\n * @api public\n */\n\nfunction lookup (uri, opts) {\n if (typeof uri === 'object') {\n opts = uri;\n uri = undefined;\n }\n\n opts = opts || {};\n\n var parsed = url(uri);\n var source = parsed.source;\n var id = parsed.id;\n var path = parsed.path;\n var sameNamespace = cache[id] && path in cache[id].nsps;\n var newConnection = opts.forceNew || opts['force new connection'] ||\n false === opts.multiplex || sameNamespace;\n\n var io;\n\n if (newConnection) {\n debug('ignoring socket cache for %s', source);\n io = Manager(source, opts);\n } else {\n if (!cache[id]) {\n debug('new io instance for %s', source);\n cache[id] = Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.query;\n }\n return io.socket(parsed.path, opts);\n}\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nexports.protocol = parser.protocol;\n\n/**\n * `connect`.\n *\n * @param {String} uri\n * @api public\n */\n\nexports.connect = lookup;\n\n/**\n * Expose constructors for standalone build.\n *\n * @api public\n */\n\nexports.Manager = __webpack_require__(18);\nexports.Socket = __webpack_require__(23);\n\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {\n/**\n * Module dependencies.\n */\n\nvar parseuri = __webpack_require__(14);\nvar debug = __webpack_require__(1)('socket.io-client:url');\n\n/**\n * Module exports.\n */\n\nmodule.exports = url;\n\n/**\n * URL parser.\n *\n * @param {String} url\n * @param {Object} An object meant to mimic window.location.\n * Defaults to window.location.\n * @api public\n */\n\nfunction url (uri, loc) {\n var obj = uri;\n\n // default to window.location\n loc = loc || global.location;\n if (null == uri) uri = loc.protocol + '//' + loc.host;\n\n // relative path support\n if ('string' === typeof uri) {\n if ('/' === uri.charAt(0)) {\n if ('/' === uri.charAt(1)) {\n uri = loc.protocol + uri;\n } else {\n uri = loc.host + uri;\n }\n }\n\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n debug('protocol-less url %s', uri);\n if ('undefined' !== typeof loc) {\n uri = loc.protocol + '//' + uri;\n } else {\n uri = 'https://' + uri;\n }\n }\n\n // parse\n debug('parse %s', uri);\n obj = parseuri(uri);\n }\n\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = '80';\n } else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = '443';\n }\n }\n\n obj.path = obj.path || '/';\n\n var ipv6 = obj.host.indexOf(':') !== -1;\n var host = ipv6 ? '[' + obj.host + ']' : obj.host;\n\n // define unique id\n obj.id = obj.protocol + '://' + host + ':' + obj.port;\n // define href\n obj.href = obj.protocol + '://' + host + (loc && loc.port === obj.port ? '' : (':' + obj.port));\n\n return obj;\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = __webpack_require__(38);\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var split = (typeof namespaces === 'string' ? 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/* 38 */\n/***/ (function(module, exports) {\n\n/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/*global Blob,File*/\n\n/**\n * Module requirements\n */\n\nvar isArray = __webpack_require__(41);\nvar isBuf = __webpack_require__(17);\nvar toString = Object.prototype.toString;\nvar withNativeBlob = typeof global.Blob === 'function' || toString.call(global.Blob) === '[object BlobConstructor]';\nvar withNativeFile = typeof global.File === 'function' || toString.call(global.File) === '[object FileConstructor]';\n\n/**\n * Replaces every Buffer | ArrayBuffer in packet with a numbered placeholder.\n * Anything with blobs or files should be fed through removeBlobs before coming\n * here.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @api public\n */\n\nexports.deconstructPacket = function(packet) {\n var buffers = [];\n var packetData = packet.data;\n var pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return {packet: pack, buffers: buffers};\n};\n\nfunction _deconstructPacket(data, buffers) {\n if (!data) return data;\n\n if (isBuf(data)) {\n var placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n } else if (isArray(data)) {\n var newData = new Array(data.length);\n for (var i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n } else if (typeof data === 'object' && !(data instanceof Date)) {\n var newData = {};\n for (var key in data) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n return newData;\n }\n return data;\n}\n\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @api public\n */\n\nexports.reconstructPacket = function(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n packet.attachments = undefined; // no longer useful\n return packet;\n};\n\nfunction _reconstructPacket(data, buffers) {\n if (!data) return data;\n\n if (data && data._placeholder) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n } else if (isArray(data)) {\n for (var i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n } else if (typeof data === 'object') {\n for (var key in data) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n\n return data;\n}\n\n/**\n * Asynchronously removes Blobs or Files from data via\n * FileReader's readAsArrayBuffer method. Used before encoding\n * data as msgpack. Calls callback with the blobless data.\n *\n * @param {Object} data\n * @param {Function} callback\n * @api private\n */\n\nexports.removeBlobs = function(data, callback) {\n function _removeBlobs(obj, curKey, containingObject) {\n if (!obj) return obj;\n\n // convert any blob\n if ((withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File)) {\n pendingBlobs++;\n\n // async filereader\n var fileReader = new FileReader();\n fileReader.onload = function() { // this.result == arraybuffer\n if (containingObject) {\n containingObject[curKey] = this.result;\n }\n else {\n bloblessData = this.result;\n }\n\n // if nothing pending its callback time\n if(! --pendingBlobs) {\n callback(bloblessData);\n }\n };\n\n fileReader.readAsArrayBuffer(obj); // blob -> arraybuffer\n } else if (isArray(obj)) { // handle array\n for (var i = 0; i < obj.length; i++) {\n _removeBlobs(obj[i], i, obj);\n }\n } else if (typeof obj === 'object' && !isBuf(obj)) { // and object\n for (var key in obj) {\n _removeBlobs(obj[key], key, obj);\n }\n }\n }\n\n var pendingBlobs = 0;\n var bloblessData = data;\n _removeBlobs(bloblessData);\n if (!pendingBlobs) {\n callback(bloblessData);\n }\n};\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\nmodule.exports = __webpack_require__(43);\n\n/**\n * Exports parser\n *\n * @api public\n *\n */\nmodule.exports.parser = __webpack_require__(3);\n\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/**\n * Module dependencies.\n */\n\nvar transports = __webpack_require__(19);\nvar Emitter = __webpack_require__(2);\nvar debug = __webpack_require__(1)('engine.io-client:socket');\nvar index = __webpack_require__(22);\nvar parser = __webpack_require__(3);\nvar parseuri = __webpack_require__(14);\nvar parseqs = __webpack_require__(5);\n\n/**\n * Module exports.\n */\n\nmodule.exports = Socket;\n\n/**\n * Socket constructor.\n *\n * @param {String|Object} uri or options\n * @param {Object} options\n * @api public\n */\n\nfunction Socket (uri, opts) {\n if (!(this instanceof Socket)) return new Socket(uri, opts);\n\n opts = opts || {};\n\n if (uri && 'object' === typeof uri) {\n opts = uri;\n uri = null;\n }\n\n if (uri) {\n uri = parseuri(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === 'https' || uri.protocol === 'wss';\n opts.port = uri.port;\n if (uri.query) opts.query = uri.query;\n } else if (opts.host) {\n opts.hostname = parseuri(opts.host).host;\n }\n\n this.secure = null != opts.secure ? opts.secure\n : (global.location && 'https:' === location.protocol);\n\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? '443' : '80';\n }\n\n this.agent = opts.agent || false;\n this.hostname = opts.hostname ||\n (global.location ? location.hostname : 'localhost');\n this.port = opts.port || (global.location && location.port\n ? location.port\n : (this.secure ? 443 : 80));\n this.query = opts.query || {};\n if ('string' === typeof this.query) this.query = parseqs.decode(this.query);\n this.upgrade = false !== opts.upgrade;\n this.path = (opts.path || '/engine.io').replace(/\\/$/, '') + '/';\n this.forceJSONP = !!opts.forceJSONP;\n this.jsonp = false !== opts.jsonp;\n this.forceBase64 = !!opts.forceBase64;\n this.enablesXDR = !!opts.enablesXDR;\n this.timestampParam = opts.timestampParam || 't';\n this.timestampRequests = opts.timestampRequests;\n this.transports = opts.transports || ['polling', 'websocket'];\n this.transportOptions = opts.transportOptions || {};\n this.readyState = '';\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.policyPort = opts.policyPort || 843;\n this.rememberUpgrade = opts.rememberUpgrade || false;\n this.binaryType = null;\n this.onlyBinaryUpgrades = opts.onlyBinaryUpgrades;\n this.perMessageDeflate = false !== opts.perMessageDeflate ? (opts.perMessageDeflate || {}) : false;\n\n if (true === this.perMessageDeflate) this.perMessageDeflate = {};\n if (this.perMessageDeflate && null == this.perMessageDeflate.threshold) {\n this.perMessageDeflate.threshold = 1024;\n }\n\n // SSL options for Node.js client\n this.pfx = opts.pfx || null;\n this.key = opts.key || null;\n this.passphrase = opts.passphrase || null;\n this.cert = opts.cert || null;\n this.ca = opts.ca || null;\n this.ciphers = opts.ciphers || null;\n this.rejectUnauthorized = opts.rejectUnauthorized === undefined ? true : opts.rejectUnauthorized;\n this.forceNode = !!opts.forceNode;\n\n // other options for Node.js client\n var freeGlobal = typeof global === 'object' && global;\n if (freeGlobal.global === freeGlobal) {\n if (opts.extraHeaders && Object.keys(opts.extraHeaders).length > 0) {\n this.extraHeaders = opts.extraHeaders;\n }\n\n if (opts.localAddress) {\n this.localAddress = opts.localAddress;\n }\n }\n\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n\n // set on heartbeat\n this.pingIntervalTimer = null;\n this.pingTimeoutTimer = null;\n\n this.open();\n}\n\nSocket.priorWebsocketSuccess = false;\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Socket.prototype);\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nSocket.protocol = parser.protocol; // this is an int\n\n/**\n * Expose deps for legacy compatibility\n * and standalone browser access.\n */\n\nSocket.Socket = Socket;\nSocket.Transport = __webpack_require__(10);\nSocket.transports = __webpack_require__(19);\nSocket.parser = __webpack_require__(3);\n\n/**\n * Creates transport of the given type.\n *\n * @param {String} transport name\n * @return {Transport}\n * @api private\n */\n\nSocket.prototype.createTransport = function (name) {\n debug('creating transport \"%s\"', name);\n var query = clone(this.query);\n\n // append engine.io protocol identifier\n query.EIO = parser.protocol;\n\n // transport name\n query.transport = name;\n\n // per-transport options\n var options = this.transportOptions[name] || {};\n\n // session id if we already have one\n if (this.id) query.sid = this.id;\n\n var transport = new transports[name]({\n query: query,\n socket: this,\n agent: options.agent || this.agent,\n hostname: options.hostname || this.hostname,\n port: options.port || this.port,\n secure: options.secure || this.secure,\n path: options.path || this.path,\n forceJSONP: options.forceJSONP || this.forceJSONP,\n jsonp: options.jsonp || this.jsonp,\n forceBase64: options.forceBase64 || this.forceBase64,\n enablesXDR: options.enablesXDR || this.enablesXDR,\n timestampRequests: options.timestampRequests || this.timestampRequests,\n timestampParam: options.timestampParam || this.timestampParam,\n policyPort: options.policyPort || this.policyPort,\n pfx: options.pfx || this.pfx,\n key: options.key || this.key,\n passphrase: options.passphrase || this.passphrase,\n cert: options.cert || this.cert,\n ca: options.ca || this.ca,\n ciphers: options.ciphers || this.ciphers,\n rejectUnauthorized: options.rejectUnauthorized || this.rejectUnauthorized,\n perMessageDeflate: options.perMessageDeflate || this.perMessageDeflate,\n extraHeaders: options.extraHeaders || this.extraHeaders,\n forceNode: options.forceNode || this.forceNode,\n localAddress: options.localAddress || this.localAddress,\n requestTimeout: options.requestTimeout || this.requestTimeout,\n protocols: options.protocols || void (0)\n });\n\n return transport;\n};\n\nfunction clone (obj) {\n var o = {};\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n o[i] = obj[i];\n }\n }\n return o;\n}\n\n/**\n * Initializes transport to use and starts probe.\n *\n * @api private\n */\nSocket.prototype.open = function () {\n var transport;\n if (this.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf('websocket') !== -1) {\n transport = 'websocket';\n } else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n var self = this;\n setTimeout(function () {\n self.emit('error', 'No transports available');\n }, 0);\n return;\n } else {\n transport = this.transports[0];\n }\n this.readyState = 'opening';\n\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n } catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n\n transport.open();\n this.setTransport(transport);\n};\n\n/**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @api private\n */\n\nSocket.prototype.setTransport = function (transport) {\n debug('setting transport %s', transport.name);\n var self = this;\n\n if (this.transport) {\n debug('clearing existing transport %s', this.transport.name);\n this.transport.removeAllListeners();\n }\n\n // set up transport\n this.transport = transport;\n\n // set up transport listeners\n transport\n .on('drain', function () {\n self.onDrain();\n })\n .on('packet', function (packet) {\n self.onPacket(packet);\n })\n .on('error', function (e) {\n self.onError(e);\n })\n .on('close', function () {\n self.onClose('transport close');\n });\n};\n\n/**\n * Probes a transport.\n *\n * @param {String} transport name\n * @api private\n */\n\nSocket.prototype.probe = function (name) {\n debug('probing transport \"%s\"', name);\n var transport = this.createTransport(name, { probe: 1 });\n var failed = false;\n var self = this;\n\n Socket.priorWebsocketSuccess = false;\n\n function onTransportOpen () {\n if (self.onlyBinaryUpgrades) {\n var upgradeLosesBinary = !this.supportsBinary && self.transport.supportsBinary;\n failed = failed || upgradeLosesBinary;\n }\n if (failed) return;\n\n debug('probe transport \"%s\" opened', name);\n transport.send([{ type: 'ping', data: 'probe' }]);\n transport.once('packet', function (msg) {\n if (failed) return;\n if ('pong' === msg.type && 'probe' === msg.data) {\n debug('probe transport \"%s\" pong', name);\n self.upgrading = true;\n self.emit('upgrading', transport);\n if (!transport) return;\n Socket.priorWebsocketSuccess = 'websocket' === transport.name;\n\n debug('pausing current transport \"%s\"', self.transport.name);\n self.transport.pause(function () {\n if (failed) return;\n if ('closed' === self.readyState) return;\n debug('changing transport and sending upgrade packet');\n\n cleanup();\n\n self.setTransport(transport);\n transport.send([{ type: 'upgrade' }]);\n self.emit('upgrade', transport);\n transport = null;\n self.upgrading = false;\n self.flush();\n });\n } else {\n debug('probe transport \"%s\" failed', name);\n var err = new Error('probe error');\n err.transport = transport.name;\n self.emit('upgradeError', err);\n }\n });\n }\n\n function freezeTransport () {\n if (failed) return;\n\n // Any callback called by transport should be ignored since now\n failed = true;\n\n cleanup();\n\n transport.close();\n transport = null;\n }\n\n // Handle any error that happens while probing\n function onerror (err) {\n var error = new Error('probe error: ' + err);\n error.transport = transport.name;\n\n freezeTransport();\n\n debug('probe transport \"%s\" failed because of error: %s', name, err);\n\n self.emit('upgradeError', error);\n }\n\n function onTransportClose () {\n onerror('transport closed');\n }\n\n // When the socket is closed while we're probing\n function onclose () {\n onerror('socket closed');\n }\n\n // When the socket is upgraded while we're probing\n function onupgrade (to) {\n if (transport && to.name !== transport.name) {\n debug('\"%s\" works - aborting \"%s\"', to.name, transport.name);\n freezeTransport();\n }\n }\n\n // Remove all listeners on the transport and on self\n function cleanup () {\n transport.removeListener('open', onTransportOpen);\n transport.removeListener('error', onerror);\n transport.removeListener('close', onTransportClose);\n self.removeListener('close', onclose);\n self.removeListener('upgrading', onupgrade);\n }\n\n transport.once('open', onTransportOpen);\n transport.once('error', onerror);\n transport.once('close', onTransportClose);\n\n this.once('close', onclose);\n this.once('upgrading', onupgrade);\n\n transport.open();\n};\n\n/**\n * Called when connection is deemed open.\n *\n * @api public\n */\n\nSocket.prototype.onOpen = function () {\n debug('socket open');\n this.readyState = 'open';\n Socket.priorWebsocketSuccess = 'websocket' === this.transport.name;\n this.emit('open');\n this.flush();\n\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if ('open' === this.readyState && this.upgrade && this.transport.pause) {\n debug('starting upgrade probes');\n for (var i = 0, l = this.upgrades.length; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n};\n\n/**\n * Handles a packet.\n *\n * @api private\n */\n\nSocket.prototype.onPacket = function (packet) {\n if ('opening' === this.readyState || 'open' === this.readyState ||\n 'closing' === this.readyState) {\n debug('socket receive: type \"%s\", data \"%s\"', packet.type, packet.data);\n\n this.emit('packet', packet);\n\n // Socket is live - any packet counts\n this.emit('heartbeat');\n\n switch (packet.type) {\n case 'open':\n this.onHandshake(JSON.parse(packet.data));\n break;\n\n case 'pong':\n this.setPing();\n this.emit('pong');\n break;\n\n case 'error':\n var err = new Error('server error');\n err.code = packet.data;\n this.onError(err);\n break;\n\n case 'message':\n this.emit('data', packet.data);\n this.emit('message', packet.data);\n break;\n }\n } else {\n debug('packet received with socket readyState \"%s\"', this.readyState);\n }\n};\n\n/**\n * Called upon handshake completion.\n *\n * @param {Object} handshake obj\n * @api private\n */\n\nSocket.prototype.onHandshake = function (data) {\n this.emit('handshake', data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.onOpen();\n // In case open handler closes socket\n if ('closed' === this.readyState) return;\n this.setPing();\n\n // Prolong liveness of socket on heartbeat\n this.removeListener('heartbeat', this.onHeartbeat);\n this.on('heartbeat', this.onHeartbeat);\n};\n\n/**\n * Resets ping timeout.\n *\n * @api private\n */\n\nSocket.prototype.onHeartbeat = function (timeout) {\n clearTimeout(this.pingTimeoutTimer);\n var self = this;\n self.pingTimeoutTimer = setTimeout(function () {\n if ('closed' === self.readyState) return;\n self.onClose('ping timeout');\n }, timeout || (self.pingInterval + self.pingTimeout));\n};\n\n/**\n * Pings server every `this.pingInterval` and expects response\n * within `this.pingTimeout` or closes connection.\n *\n * @api private\n */\n\nSocket.prototype.setPing = function () {\n var self = this;\n clearTimeout(self.pingIntervalTimer);\n self.pingIntervalTimer = setTimeout(function () {\n debug('writing ping packet - expecting pong within %sms', self.pingTimeout);\n self.ping();\n self.onHeartbeat(self.pingTimeout);\n }, self.pingInterval);\n};\n\n/**\n* Sends a ping packet.\n*\n* @api private\n*/\n\nSocket.prototype.ping = function () {\n var self = this;\n this.sendPacket('ping', function () {\n self.emit('ping');\n });\n};\n\n/**\n * Called on `drain` event\n *\n * @api private\n */\n\nSocket.prototype.onDrain = function () {\n this.writeBuffer.splice(0, this.prevBufferLen);\n\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n\n if (0 === this.writeBuffer.length) {\n this.emit('drain');\n } else {\n this.flush();\n }\n};\n\n/**\n * Flush write buffers.\n *\n * @api private\n */\n\nSocket.prototype.flush = function () {\n if ('closed' !== this.readyState && this.transport.writable &&\n !this.upgrading && this.writeBuffer.length) {\n debug('flushing %d packets in socket', this.writeBuffer.length);\n this.transport.send(this.writeBuffer);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = this.writeBuffer.length;\n this.emit('flush');\n }\n};\n\n/**\n * Sends a message.\n *\n * @param {String} message.\n * @param {Function} callback function.\n * @param {Object} options.\n * @return {Socket} for chaining.\n * @api public\n */\n\nSocket.prototype.write =\nSocket.prototype.send = function (msg, options, fn) {\n this.sendPacket('message', msg, options, fn);\n return this;\n};\n\n/**\n * Sends a packet.\n *\n * @param {String} packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} callback function.\n * @api private\n */\n\nSocket.prototype.sendPacket = function (type, data, options, fn) {\n if ('function' === typeof data) {\n fn = data;\n data = undefined;\n }\n\n if ('function' === typeof options) {\n fn = options;\n options = null;\n }\n\n if ('closing' === this.readyState || 'closed' === this.readyState) {\n return;\n }\n\n options = options || {};\n options.compress = false !== options.compress;\n\n var packet = {\n type: type,\n data: data,\n options: options\n };\n this.emit('packetCreate', packet);\n this.writeBuffer.push(packet);\n if (fn) this.once('flush', fn);\n this.flush();\n};\n\n/**\n * Closes the connection.\n *\n * @api private\n */\n\nSocket.prototype.close = function () {\n if ('opening' === this.readyState || 'open' === this.readyState) {\n this.readyState = 'closing';\n\n var self = this;\n\n if (this.writeBuffer.length) {\n this.once('drain', function () {\n if (this.upgrading) {\n waitForUpgrade();\n } else {\n close();\n }\n });\n } else if (this.upgrading) {\n waitForUpgrade();\n } else {\n close();\n }\n }\n\n function close () {\n self.onClose('forced close');\n debug('socket closing - telling transport to close');\n self.transport.close();\n }\n\n function cleanupAndClose () {\n self.removeListener('upgrade', cleanupAndClose);\n self.removeListener('upgradeError', cleanupAndClose);\n close();\n }\n\n function waitForUpgrade () {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n self.once('upgrade', cleanupAndClose);\n self.once('upgradeError', cleanupAndClose);\n }\n\n return this;\n};\n\n/**\n * Called upon transport error\n *\n * @api private\n */\n\nSocket.prototype.onError = function (err) {\n debug('socket error %j', err);\n Socket.priorWebsocketSuccess = false;\n this.emit('error', err);\n this.onClose('transport error', err);\n};\n\n/**\n * Called upon transport close.\n *\n * @api private\n */\n\nSocket.prototype.onClose = function (reason, desc) {\n if ('opening' === this.readyState || 'open' === this.readyState || 'closing' === this.readyState) {\n debug('socket close with reason: \"%s\"', reason);\n var self = this;\n\n // clear timers\n clearTimeout(this.pingIntervalTimer);\n clearTimeout(this.pingTimeoutTimer);\n\n // stop event from firing again for transport\n this.transport.removeAllListeners('close');\n\n // ensure transport won't stay open\n this.transport.close();\n\n // ignore further transport communication\n this.transport.removeAllListeners();\n\n // set ready state\n this.readyState = 'closed';\n\n // clear session id\n this.id = null;\n\n // emit close event\n this.emit('close', reason, desc);\n\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n self.writeBuffer = [];\n self.prevBufferLen = 0;\n }\n};\n\n/**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} server upgrades\n * @api private\n *\n */\n\nSocket.prototype.filterUpgrades = function (upgrades) {\n var filteredUpgrades = [];\n for (var i = 0, j = upgrades.length; i < j; i++) {\n if (~index(this.transports, upgrades[i])) filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n};\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports) {\n\n\n/**\n * Module exports.\n *\n * Logic borrowed from Modernizr:\n *\n * - https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cors.js\n */\n\ntry {\n module.exports = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n} catch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n module.exports = false;\n}\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/**\n * Module requirements.\n */\n\nvar XMLHttpRequest = __webpack_require__(9);\nvar Polling = __webpack_require__(20);\nvar Emitter = __webpack_require__(2);\nvar inherit = __webpack_require__(6);\nvar debug = __webpack_require__(1)('engine.io-client:polling-xhr');\n\n/**\n * Module exports.\n */\n\nmodule.exports = XHR;\nmodule.exports.Request = Request;\n\n/**\n * Empty function\n */\n\nfunction empty () {}\n\n/**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction XHR (opts) {\n Polling.call(this, opts);\n this.requestTimeout = opts.requestTimeout;\n this.extraHeaders = opts.extraHeaders;\n\n if (global.location) {\n var isSSL = 'https:' === location.protocol;\n var port = location.port;\n\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? 443 : 80;\n }\n\n this.xd = opts.hostname !== global.location.hostname ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n}\n\n/**\n * Inherits from Polling.\n */\n\ninherit(XHR, Polling);\n\n/**\n * XHR supports binary\n */\n\nXHR.prototype.supportsBinary = true;\n\n/**\n * Creates a request.\n *\n * @param {String} method\n * @api private\n */\n\nXHR.prototype.request = function (opts) {\n opts = opts || {};\n opts.uri = this.uri();\n opts.xd = this.xd;\n opts.xs = this.xs;\n opts.agent = this.agent || false;\n opts.supportsBinary = this.supportsBinary;\n opts.enablesXDR = this.enablesXDR;\n\n // SSL options for Node.js client\n opts.pfx = this.pfx;\n opts.key = this.key;\n opts.passphrase = this.passphrase;\n opts.cert = this.cert;\n opts.ca = this.ca;\n opts.ciphers = this.ciphers;\n opts.rejectUnauthorized = this.rejectUnauthorized;\n opts.requestTimeout = this.requestTimeout;\n\n // other options for Node.js client\n opts.extraHeaders = this.extraHeaders;\n\n return new Request(opts);\n};\n\n/**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @api private\n */\n\nXHR.prototype.doWrite = function (data, fn) {\n var isBinary = typeof data !== 'string' && data !== undefined;\n var req = this.request({ method: 'POST', data: data, isBinary: isBinary });\n var self = this;\n req.on('success', fn);\n req.on('error', function (err) {\n self.onError('xhr post error', err);\n });\n this.sendXhr = req;\n};\n\n/**\n * Starts a poll cycle.\n *\n * @api private\n */\n\nXHR.prototype.doPoll = function () {\n debug('xhr poll');\n var req = this.request();\n var self = this;\n req.on('data', function (data) {\n self.onData(data);\n });\n req.on('error', function (err) {\n self.onError('xhr poll error', err);\n });\n this.pollXhr = req;\n};\n\n/**\n * Request constructor\n *\n * @param {Object} options\n * @api public\n */\n\nfunction Request (opts) {\n this.method = opts.method || 'GET';\n this.uri = opts.uri;\n this.xd = !!opts.xd;\n this.xs = !!opts.xs;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.agent = opts.agent;\n this.isBinary = opts.isBinary;\n this.supportsBinary = opts.supportsBinary;\n this.enablesXDR = opts.enablesXDR;\n this.requestTimeout = opts.requestTimeout;\n\n // SSL options for Node.js client\n this.pfx = opts.pfx;\n this.key = opts.key;\n this.passphrase = opts.passphrase;\n this.cert = opts.cert;\n this.ca = opts.ca;\n this.ciphers = opts.ciphers;\n this.rejectUnauthorized = opts.rejectUnauthorized;\n\n // other options for Node.js client\n this.extraHeaders = opts.extraHeaders;\n\n this.create();\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Request.prototype);\n\n/**\n * Creates the XHR object and sends the request.\n *\n * @api private\n */\n\nRequest.prototype.create = function () {\n var opts = { agent: this.agent, xdomain: this.xd, xscheme: this.xs, enablesXDR: this.enablesXDR };\n\n // SSL options for Node.js client\n opts.pfx = this.pfx;\n opts.key = this.key;\n opts.passphrase = this.passphrase;\n opts.cert = this.cert;\n opts.ca = this.ca;\n opts.ciphers = this.ciphers;\n opts.rejectUnauthorized = this.rejectUnauthorized;\n\n var xhr = this.xhr = new XMLHttpRequest(opts);\n var self = this;\n\n try {\n debug('xhr open %s: %s', this.method, this.uri);\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (var i in this.extraHeaders) {\n if (this.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.extraHeaders[i]);\n }\n }\n }\n } catch (e) {}\n\n if ('POST' === this.method) {\n try {\n if (this.isBinary) {\n xhr.setRequestHeader('Content-type', 'application/octet-stream');\n } else {\n xhr.setRequestHeader('Content-type', 'text/plain;charset=UTF-8');\n }\n } catch (e) {}\n }\n\n try {\n xhr.setRequestHeader('Accept', '*/*');\n } catch (e) {}\n\n // ie6 check\n if ('withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n if (this.requestTimeout) {\n xhr.timeout = this.requestTimeout;\n }\n\n if (this.hasXDR()) {\n xhr.onload = function () {\n self.onLoad();\n };\n xhr.onerror = function () {\n self.onError(xhr.responseText);\n };\n } else {\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 2) {\n var contentType;\n try {\n contentType = xhr.getResponseHeader('Content-Type');\n } catch (e) {}\n if (contentType === 'application/octet-stream') {\n xhr.responseType = 'arraybuffer';\n }\n }\n if (4 !== xhr.readyState) return;\n if (200 === xhr.status || 1223 === xhr.status) {\n self.onLoad();\n } else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n setTimeout(function () {\n self.onError(xhr.status);\n }, 0);\n }\n };\n }\n\n debug('xhr data %s', this.data);\n xhr.send(this.data);\n } catch (e) {\n // Need to defer since .create() is called directly fhrom the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n setTimeout(function () {\n self.onError(e);\n }, 0);\n return;\n }\n\n if (global.document) {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n};\n\n/**\n * Called upon successful response.\n *\n * @api private\n */\n\nRequest.prototype.onSuccess = function () {\n this.emit('success');\n this.cleanup();\n};\n\n/**\n * Called if we have data.\n *\n * @api private\n */\n\nRequest.prototype.onData = function (data) {\n this.emit('data', data);\n this.onSuccess();\n};\n\n/**\n * Called upon error.\n *\n * @api private\n */\n\nRequest.prototype.onError = function (err) {\n this.emit('error', err);\n this.cleanup(true);\n};\n\n/**\n * Cleans up house.\n *\n * @api private\n */\n\nRequest.prototype.cleanup = function (fromError) {\n if ('undefined' === typeof this.xhr || null === this.xhr) {\n return;\n }\n // xmlhttprequest\n if (this.hasXDR()) {\n this.xhr.onload = this.xhr.onerror = empty;\n } else {\n this.xhr.onreadystatechange = empty;\n }\n\n if (fromError) {\n try {\n this.xhr.abort();\n } catch (e) {}\n }\n\n if (global.document) {\n delete Request.requests[this.index];\n }\n\n this.xhr = null;\n};\n\n/**\n * Called upon load.\n *\n * @api private\n */\n\nRequest.prototype.onLoad = function () {\n var data;\n try {\n var contentType;\n try {\n contentType = this.xhr.getResponseHeader('Content-Type');\n } catch (e) {}\n if (contentType === 'application/octet-stream') {\n data = this.xhr.response || this.xhr.responseText;\n } else {\n data = this.xhr.responseText;\n }\n } catch (e) {\n this.onError(e);\n }\n if (null != data) {\n this.onData(data);\n }\n};\n\n/**\n * Check if it has XDomainRequest.\n *\n * @api private\n */\n\nRequest.prototype.hasXDR = function () {\n return 'undefined' !== typeof global.XDomainRequest && !this.xs && this.enablesXDR;\n};\n\n/**\n * Aborts the request.\n *\n * @api public\n */\n\nRequest.prototype.abort = function () {\n this.cleanup();\n};\n\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\n\nRequest.requestsCount = 0;\nRequest.requests = {};\n\nif (global.document) {\n if (global.attachEvent) {\n global.attachEvent('onunload', unloadHandler);\n } else if (global.addEventListener) {\n global.addEventListener('beforeunload', unloadHandler, false);\n }\n}\n\nfunction unloadHandler () {\n for (var i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports) {\n\n\n/**\n * Gets the keys for an object.\n *\n * @return {Array} keys\n * @api private\n */\n\nmodule.exports = Object.keys || function keys (obj){\n var arr = [];\n var has = Object.prototype.hasOwnProperty;\n\n for (var i in obj) {\n if (has.call(obj, i)) {\n arr.push(i);\n }\n }\n return arr;\n};\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports) {\n\n/**\n * An abstraction for slicing an arraybuffer even when\n * ArrayBuffer.prototype.slice is not supported\n *\n * @api public\n */\n\nmodule.exports = function(arraybuffer, start, end) {\n var bytes = arraybuffer.byteLength;\n start = start || 0;\n end = end || bytes;\n\n if (arraybuffer.slice) { return arraybuffer.slice(start, end); }\n\n if (start < 0) { start += bytes; }\n if (end < 0) { end += bytes; }\n if (end > bytes) { end = bytes; }\n\n if (start >= bytes || start >= end || bytes === 0) {\n return new ArrayBuffer(0);\n }\n\n var abv = new Uint8Array(arraybuffer);\n var result = new Uint8Array(end - start);\n for (var i = start, ii = 0; i < end; i++, ii++) {\n result[ii] = abv[i];\n }\n return result.buffer;\n};\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports) {\n\nmodule.exports = after\n\nfunction after(count, callback, err_cb) {\n var bail = false\n err_cb = err_cb || noop\n proxy.count = count\n\n return (count === 0) ? callback() : proxy\n\n function proxy(err, result) {\n if (proxy.count <= 0) {\n throw new Error('after called too many times')\n }\n --proxy.count\n\n // after first error, rest are passed to err_cb\n if (err) {\n bail = true\n callback(err)\n // future error callbacks will go to error handler\n callback = err_cb\n } else if (proxy.count === 0 && !bail) {\n callback(null, result)\n }\n }\n}\n\nfunction noop() {}\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module, global) {var __WEBPACK_AMD_DEFINE_RESULT__;/*! https://mths.be/utf8js v2.1.2 by @mathias */\n;(function(root) {\n\n\t// Detect free variables `exports`\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code,\n\t// and use it as `root`\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar stringFromCharCode = String.fromCharCode;\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2decode(string) {\n\t\tvar output = [];\n\t\tvar counter = 0;\n\t\tvar length = string.length;\n\t\tvar value;\n\t\tvar extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2encode(array) {\n\t\tvar length = array.length;\n\t\tvar index = -1;\n\t\tvar value;\n\t\tvar output = '';\n\t\twhile (++index < length) {\n\t\t\tvalue = array[index];\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t}\n\t\treturn output;\n\t}\n\n\tfunction checkScalarValue(codePoint, strict) {\n\t\tif (codePoint >= 0xD800 && codePoint <= 0xDFFF) {\n\t\t\tif (strict) {\n\t\t\t\tthrow Error(\n\t\t\t\t\t'Lone surrogate U+' + codePoint.toString(16).toUpperCase() +\n\t\t\t\t\t' is not a scalar value'\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction createByte(codePoint, shift) {\n\t\treturn stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80);\n\t}\n\n\tfunction encodeCodePoint(codePoint, strict) {\n\t\tif ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence\n\t\t\treturn stringFromCharCode(codePoint);\n\t\t}\n\t\tvar symbol = '';\n\t\tif ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0);\n\t\t}\n\t\telse if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence\n\t\t\tif (!checkScalarValue(codePoint, strict)) {\n\t\t\t\tcodePoint = 0xFFFD;\n\t\t\t}\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\telse if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0);\n\t\t\tsymbol += createByte(codePoint, 12);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\tsymbol += stringFromCharCode((codePoint & 0x3F) | 0x80);\n\t\treturn symbol;\n\t}\n\n\tfunction utf8encode(string, opts) {\n\t\topts = opts || {};\n\t\tvar strict = false !== opts.strict;\n\n\t\tvar codePoints = ucs2decode(string);\n\t\tvar length = codePoints.length;\n\t\tvar index = -1;\n\t\tvar codePoint;\n\t\tvar byteString = '';\n\t\twhile (++index < length) {\n\t\t\tcodePoint = codePoints[index];\n\t\t\tbyteString += encodeCodePoint(codePoint, strict);\n\t\t}\n\t\treturn byteString;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction readContinuationByte() {\n\t\tif (byteIndex >= byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tvar continuationByte = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\tif ((continuationByte & 0xC0) == 0x80) {\n\t\t\treturn continuationByte & 0x3F;\n\t\t}\n\n\t\t// If we end up here, its not a continuation byte\n\t\tthrow Error('Invalid continuation byte');\n\t}\n\n\tfunction decodeSymbol(strict) {\n\t\tvar byte1;\n\t\tvar byte2;\n\t\tvar byte3;\n\t\tvar byte4;\n\t\tvar codePoint;\n\n\t\tif (byteIndex > byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tif (byteIndex == byteCount) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Read first byte\n\t\tbyte1 = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\t// 1-byte sequence (no continuation bytes)\n\t\tif ((byte1 & 0x80) == 0) {\n\t\t\treturn byte1;\n\t\t}\n\n\t\t// 2-byte sequence\n\t\tif ((byte1 & 0xE0) == 0xC0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x1F) << 6) | byte2;\n\t\t\tif (codePoint >= 0x80) {\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 3-byte sequence (may include unpaired surrogates)\n\t\tif ((byte1 & 0xF0) == 0xE0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3;\n\t\t\tif (codePoint >= 0x0800) {\n\t\t\t\treturn checkScalarValue(codePoint, strict) ? codePoint : 0xFFFD;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 4-byte sequence\n\t\tif ((byte1 & 0xF8) == 0xF0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tbyte4 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0C) |\n\t\t\t\t(byte3 << 0x06) | byte4;\n\t\t\tif (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\n\t\t\t\treturn codePoint;\n\t\t\t}\n\t\t}\n\n\t\tthrow Error('Invalid UTF-8 detected');\n\t}\n\n\tvar byteArray;\n\tvar byteCount;\n\tvar byteIndex;\n\tfunction utf8decode(byteString, opts) {\n\t\topts = opts || {};\n\t\tvar strict = false !== opts.strict;\n\n\t\tbyteArray = ucs2decode(byteString);\n\t\tbyteCount = byteArray.length;\n\t\tbyteIndex = 0;\n\t\tvar codePoints = [];\n\t\tvar tmp;\n\t\twhile ((tmp = decodeSymbol(strict)) !== false) {\n\t\t\tcodePoints.push(tmp);\n\t\t}\n\t\treturn ucs2encode(codePoints);\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar utf8 = {\n\t\t'version': '2.1.2',\n\t\t'encode': utf8encode,\n\t\t'decode': utf8decode\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttrue\n\t) {\n\t\t!(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {\n\t\t\treturn utf8;\n\t\t}).call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = utf8;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tvar object = {};\n\t\t\tvar hasOwnProperty = object.hasOwnProperty;\n\t\t\tfor (var key in utf8) {\n\t\t\t\thasOwnProperty.call(utf8, key) && (freeExports[key] = utf8[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.utf8 = utf8;\n\t}\n\n}(this));\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(50)(module), __webpack_require__(0)))\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports) {\n\nmodule.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports) {\n\n/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n(function(){\n \"use strict\";\n\n var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\n // Use a lookup table to find the index.\n var lookup = new Uint8Array(256);\n for (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n\n exports.encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer),\n i, len = bytes.length, base64 = \"\";\n\n for (i = 0; i < len; i+=3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if ((len % 3) === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n\n return base64;\n };\n\n exports.decode = function(base64) {\n var bufferLength = base64.length * 0.75,\n len = base64.length, i, p = 0,\n encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === \"=\") {\n bufferLength--;\n if (base64[base64.length - 2] === \"=\") {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i+=4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i+1)];\n encoded3 = lookup[base64.charCodeAt(i+2)];\n encoded4 = lookup[base64.charCodeAt(i+3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n };\n})();\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/**\n * Create a blob builder even when vendor prefixes exist\n */\n\nvar BlobBuilder = global.BlobBuilder\n || global.WebKitBlobBuilder\n || global.MSBlobBuilder\n || global.MozBlobBuilder;\n\n/**\n * Check if Blob constructor is supported\n */\n\nvar blobSupported = (function() {\n try {\n var a = new Blob(['hi']);\n return a.size === 2;\n } catch(e) {\n return false;\n }\n})();\n\n/**\n * Check if Blob constructor supports ArrayBufferViews\n * Fails in Safari 6, so we need to map to ArrayBuffers there.\n */\n\nvar blobSupportsArrayBufferView = blobSupported && (function() {\n try {\n var b = new Blob([new Uint8Array([1,2])]);\n return b.size === 2;\n } catch(e) {\n return false;\n }\n})();\n\n/**\n * Check if BlobBuilder is supported\n */\n\nvar blobBuilderSupported = BlobBuilder\n && BlobBuilder.prototype.append\n && BlobBuilder.prototype.getBlob;\n\n/**\n * Helper function that maps ArrayBufferViews to ArrayBuffers\n * Used by BlobBuilder constructor and old browsers that didn't\n * support it in the Blob constructor.\n */\n\nfunction mapArrayBufferViews(ary) {\n for (var i = 0; i < ary.length; i++) {\n var chunk = ary[i];\n if (chunk.buffer instanceof ArrayBuffer) {\n var buf = chunk.buffer;\n\n // if this is a subarray, make a copy so we only\n // include the subarray region from the underlying buffer\n if (chunk.byteLength !== buf.byteLength) {\n var copy = new Uint8Array(chunk.byteLength);\n copy.set(new Uint8Array(buf, chunk.byteOffset, chunk.byteLength));\n buf = copy.buffer;\n }\n\n ary[i] = buf;\n }\n }\n}\n\nfunction BlobBuilderConstructor(ary, options) {\n options = options || {};\n\n var bb = new BlobBuilder();\n mapArrayBufferViews(ary);\n\n for (var i = 0; i < ary.length; i++) {\n bb.append(ary[i]);\n }\n\n return (options.type) ? bb.getBlob(options.type) : bb.getBlob();\n};\n\nfunction BlobConstructor(ary, options) {\n mapArrayBufferViews(ary);\n return new Blob(ary, options || {});\n};\n\nmodule.exports = (function() {\n if (blobSupported) {\n return blobSupportsArrayBufferView ? global.Blob : BlobConstructor;\n } else if (blobBuilderSupported) {\n return BlobBuilderConstructor;\n } else {\n return undefined;\n }\n})();\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {\n/**\n * Module requirements.\n */\n\nvar Polling = __webpack_require__(20);\nvar inherit = __webpack_require__(6);\n\n/**\n * Module exports.\n */\n\nmodule.exports = JSONPPolling;\n\n/**\n * Cached regular expressions.\n */\n\nvar rNewline = /\\n/g;\nvar rEscapedNewline = /\\\\n/g;\n\n/**\n * Global JSONP callbacks.\n */\n\nvar callbacks;\n\n/**\n * Noop.\n */\n\nfunction empty () { }\n\n/**\n * JSONP Polling constructor.\n *\n * @param {Object} opts.\n * @api public\n */\n\nfunction JSONPPolling (opts) {\n Polling.call(this, opts);\n\n this.query = this.query || {};\n\n // define global callbacks array if not present\n // we do this here (lazily) to avoid unneeded global pollution\n if (!callbacks) {\n // we need to consider multiple engines in the same page\n if (!global.___eio) global.___eio = [];\n callbacks = global.___eio;\n }\n\n // callback identifier\n this.index = callbacks.length;\n\n // add callback to jsonp global\n var self = this;\n callbacks.push(function (msg) {\n self.onData(msg);\n });\n\n // append to query string\n this.query.j = this.index;\n\n // prevent spurious errors from being emitted when the window is unloaded\n if (global.document && global.addEventListener) {\n global.addEventListener('beforeunload', function () {\n if (self.script) self.script.onerror = empty;\n }, false);\n }\n}\n\n/**\n * Inherits from Polling.\n */\n\ninherit(JSONPPolling, Polling);\n\n/*\n * JSONP only supports binary as base64 encoded strings\n */\n\nJSONPPolling.prototype.supportsBinary = false;\n\n/**\n * Closes the socket.\n *\n * @api private\n */\n\nJSONPPolling.prototype.doClose = function () {\n if (this.script) {\n this.script.parentNode.removeChild(this.script);\n this.script = null;\n }\n\n if (this.form) {\n this.form.parentNode.removeChild(this.form);\n this.form = null;\n this.iframe = null;\n }\n\n Polling.prototype.doClose.call(this);\n};\n\n/**\n * Starts a poll cycle.\n *\n * @api private\n */\n\nJSONPPolling.prototype.doPoll = function () {\n var self = this;\n var script = document.createElement('script');\n\n if (this.script) {\n this.script.parentNode.removeChild(this.script);\n this.script = null;\n }\n\n script.async = true;\n script.src = this.uri();\n script.onerror = function (e) {\n self.onError('jsonp poll error', e);\n };\n\n var insertAt = document.getElementsByTagName('script')[0];\n if (insertAt) {\n insertAt.parentNode.insertBefore(script, insertAt);\n } else {\n (document.head || document.body).appendChild(script);\n }\n this.script = script;\n\n var isUAgecko = 'undefined' !== typeof navigator && /gecko/i.test(navigator.userAgent);\n\n if (isUAgecko) {\n setTimeout(function () {\n var iframe = document.createElement('iframe');\n document.body.appendChild(iframe);\n document.body.removeChild(iframe);\n }, 100);\n }\n};\n\n/**\n * Writes with a hidden iframe.\n *\n * @param {String} data to send\n * @param {Function} called upon flush.\n * @api private\n */\n\nJSONPPolling.prototype.doWrite = function (data, fn) {\n var self = this;\n\n if (!this.form) {\n var form = document.createElement('form');\n var area = document.createElement('textarea');\n var id = this.iframeId = 'eio_iframe_' + this.index;\n var iframe;\n\n form.className = 'socketio';\n form.style.position = 'absolute';\n form.style.top = '-1000px';\n form.style.left = '-1000px';\n form.target = id;\n form.method = 'POST';\n form.setAttribute('accept-charset', 'utf-8');\n area.name = 'd';\n form.appendChild(area);\n document.body.appendChild(form);\n\n this.form = form;\n this.area = area;\n }\n\n this.form.action = this.uri();\n\n function complete () {\n initIframe();\n fn();\n }\n\n function initIframe () {\n if (self.iframe) {\n try {\n self.form.removeChild(self.iframe);\n } catch (e) {\n self.onError('jsonp polling iframe removal error', e);\n }\n }\n\n try {\n // ie6 dynamic iframes with target=\"\" support (thanks Chris Lambacher)\n var html = '<iframe src=\"javascript:0\" name=\"' + self.iframeId + '\">';\n iframe = document.createElement(html);\n } catch (e) {\n iframe = document.createElement('iframe');\n iframe.name = self.iframeId;\n iframe.src = 'javascript:0';\n }\n\n iframe.id = self.iframeId;\n\n self.form.appendChild(iframe);\n self.iframe = iframe;\n }\n\n initIframe();\n\n // escape \\n to prevent it from being converted into \\r\\n by some UAs\n // double escaping is required for escaped new lines because unescaping of new lines can be done safely on server-side\n data = data.replace(rEscapedNewline, '\\\\\\n');\n this.area.value = data.replace(rNewline, '\\\\n');\n\n try {\n this.form.submit();\n } catch (e) {}\n\n if (this.iframe.attachEvent) {\n this.iframe.onreadystatechange = function () {\n if (self.iframe.readyState === 'complete') {\n complete();\n }\n };\n } else {\n this.iframe.onload = complete;\n }\n};\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/**\n * Module dependencies.\n */\n\nvar Transport = __webpack_require__(10);\nvar parser = __webpack_require__(3);\nvar parseqs = __webpack_require__(5);\nvar inherit = __webpack_require__(6);\nvar yeast = __webpack_require__(21);\nvar debug = __webpack_require__(1)('engine.io-client:websocket');\nvar BrowserWebSocket = global.WebSocket || global.MozWebSocket;\nvar NodeWebSocket;\nif (typeof window === 'undefined') {\n try {\n NodeWebSocket = __webpack_require__(55);\n } catch (e) { }\n}\n\n/**\n * Get either the `WebSocket` or `MozWebSocket` globals\n * in the browser or try to resolve WebSocket-compatible\n * interface exposed by `ws` for Node-like environment.\n */\n\nvar WebSocket = BrowserWebSocket;\nif (!WebSocket && typeof window === 'undefined') {\n WebSocket = NodeWebSocket;\n}\n\n/**\n * Module exports.\n */\n\nmodule.exports = WS;\n\n/**\n * WebSocket transport constructor.\n *\n * @api {Object} connection options\n * @api public\n */\n\nfunction WS (opts) {\n var forceBase64 = (opts && opts.forceBase64);\n if (forceBase64) {\n this.supportsBinary = false;\n }\n this.perMessageDeflate = opts.perMessageDeflate;\n this.usingBrowserWebSocket = BrowserWebSocket && !opts.forceNode;\n this.protocols = opts.protocols;\n if (!this.usingBrowserWebSocket) {\n WebSocket = NodeWebSocket;\n }\n Transport.call(this, opts);\n}\n\n/**\n * Inherits from Transport.\n */\n\ninherit(WS, Transport);\n\n/**\n * Transport name.\n *\n * @api public\n */\n\nWS.prototype.name = 'websocket';\n\n/*\n * WebSockets support binary\n */\n\nWS.prototype.supportsBinary = true;\n\n/**\n * Opens socket.\n *\n * @api private\n */\n\nWS.prototype.doOpen = function () {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n\n var uri = this.uri();\n var protocols = this.protocols;\n var opts = {\n agent: this.agent,\n perMessageDeflate: this.perMessageDeflate\n };\n\n // SSL options for Node.js client\n opts.pfx = this.pfx;\n opts.key = this.key;\n opts.passphrase = this.passphrase;\n opts.cert = this.cert;\n opts.ca = this.ca;\n opts.ciphers = this.ciphers;\n opts.rejectUnauthorized = this.rejectUnauthorized;\n if (this.extraHeaders) {\n opts.headers = this.extraHeaders;\n }\n if (this.localAddress) {\n opts.localAddress = this.localAddress;\n }\n\n try {\n this.ws = this.usingBrowserWebSocket ? (protocols ? new WebSocket(uri, protocols) : new WebSocket(uri)) : new WebSocket(uri, protocols, opts);\n } catch (err) {\n return this.emit('error', err);\n }\n\n if (this.ws.binaryType === undefined) {\n this.supportsBinary = false;\n }\n\n if (this.ws.supports && this.ws.supports.binary) {\n this.supportsBinary = true;\n this.ws.binaryType = 'nodebuffer';\n } else {\n this.ws.binaryType = 'arraybuffer';\n }\n\n this.addEventListeners();\n};\n\n/**\n * Adds event listeners to the socket\n *\n * @api private\n */\n\nWS.prototype.addEventListeners = function () {\n var self = this;\n\n this.ws.onopen = function () {\n self.onOpen();\n };\n this.ws.onclose = function () {\n self.onClose();\n };\n this.ws.onmessage = function (ev) {\n self.onData(ev.data);\n };\n this.ws.onerror = function (e) {\n self.onError('websocket error', e);\n };\n};\n\n/**\n * Writes data to socket.\n *\n * @param {Array} array of packets.\n * @api private\n */\n\nWS.prototype.write = function (packets) {\n var self = this;\n this.writable = false;\n\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n var total = packets.length;\n for (var i = 0, l = total; i < l; i++) {\n (function (packet) {\n parser.encodePacket(packet, self.supportsBinary, function (data) {\n if (!self.usingBrowserWebSocket) {\n // always create a new object (GH-437)\n var opts = {};\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n\n if (self.perMessageDeflate) {\n var len = 'string' === typeof data ? global.Buffer.byteLength(data) : data.length;\n if (len < self.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (self.usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n self.ws.send(data);\n } else {\n self.ws.send(data, opts);\n }\n } catch (e) {\n debug('websocket closed before onclose event');\n }\n\n --total || done();\n });\n })(packets[i]);\n }\n\n function done () {\n self.emit('flush');\n\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n setTimeout(function () {\n self.writable = true;\n self.emit('drain');\n }, 0);\n }\n};\n\n/**\n * Called upon close\n *\n * @api private\n */\n\nWS.prototype.onClose = function () {\n Transport.prototype.onClose.call(this);\n};\n\n/**\n * Closes socket.\n *\n * @api private\n */\n\nWS.prototype.doClose = function () {\n if (typeof this.ws !== 'undefined') {\n this.ws.close();\n }\n};\n\n/**\n * Generates uri for connection.\n *\n * @api private\n */\n\nWS.prototype.uri = function () {\n var query = this.query || {};\n var schema = this.secure ? 'wss' : 'ws';\n var port = '';\n\n // avoid port if default for schema\n if (this.port && (('wss' === schema && Number(this.port) !== 443) ||\n ('ws' === schema && Number(this.port) !== 80))) {\n port = ':' + this.port;\n }\n\n // append timestamp to URI\n if (this.timestampRequests) {\n query[this.timestampParam] = yeast();\n }\n\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n\n query = parseqs.encode(query);\n\n // prepend ? to query\n if (query.length) {\n query = '?' + query;\n }\n\n var ipv6 = this.hostname.indexOf(':') !== -1;\n return schema + '://' + (ipv6 ? '[' + this.hostname + ']' : this.hostname) + port + this.path + query;\n};\n\n/**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @api public\n */\n\nWS.prototype.check = function () {\n return !!WebSocket && !('__initialize' in WebSocket && this.name === WS.prototype.name);\n};\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports) {\n\n/* (ignored) */\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports) {\n\nmodule.exports = toArray\n\nfunction toArray(list, index) {\n var array = []\n\n index = index || 0\n\n for (var i = index || 0; i < list.length; i++) {\n array[i - index] = list[i]\n }\n\n return array\n}\n\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports) {\n\n\n/**\n * Expose `Backoff`.\n */\n\nmodule.exports = Backoff;\n\n/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\n\nBackoff.prototype.duration = function(){\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\n\nBackoff.prototype.reset = function(){\n this.attempts = 0;\n};\n\n/**\n * Set the minimum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMin = function(min){\n this.ms = min;\n};\n\n/**\n * Set the maximum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMax = function(max){\n this.max = max;\n};\n\n/**\n * Set the jitter\n *\n * @api public\n */\n\nBackoff.prototype.setJitter = function(jitter){\n this.jitter = jitter;\n};\n\n\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports) {\n\nif (!(\"indexOf\" in Array.prototype)) {\r\n Array.prototype.indexOf = function (find, i) {\r\n if (i === undefined) {\r\n i = 0;\r\n }\r\n if (i < 0) {\r\n i += this.length;\r\n }\r\n if (i < 0) {\r\n i = 0;\r\n }\r\n for (var n = this.length; i < n; i += 1) {\r\n if (i in this && this[i] === find) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n };\r\n}\r\n// Production steps of ECMA-262, Edition 5, 15.4.4.19\r\n// Reference: http://es5.github.io/#x15.4.4.19\r\nif (!Array.prototype.map) {\r\n Array.prototype.map = function (callback, thisArg) {\r\n var T, A, k;\r\n if (this == null) {\r\n throw new TypeError(\" this is null or not defined\");\r\n }\r\n // 1. Let O be the result of calling ToObject passing the |this|\r\n // value as the argument.\r\n var O = Object(this);\r\n // 2. Let lenValue be the result of calling the Get internal\r\n // method of O with the argument \"length\".\r\n // 3. Let len be ToUint32(lenValue).\r\n var len = O.length >>> 0;\r\n // 4. If IsCallable(callback) is false, throw a TypeError exception.\r\n // See: http://es5.github.com/#x9.11\r\n if (typeof callback !== \"function\") {\r\n throw new TypeError(callback + \" is not a function\");\r\n }\r\n // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.\r\n if (arguments.length > 1) {\r\n T = thisArg;\r\n }\r\n // 6. Let A be a new array created as if by the expression new Array(len)\r\n // where Array is the standard built-in constructor with that name and\r\n // len is the value of len.\r\n A = new Array(len);\r\n // 7. Let k be 0\r\n k = 0;\r\n // 8. Repeat, while k < len\r\n while (k < len) {\r\n var kValue, mappedValue;\r\n // a. Let Pk be ToString(k).\r\n // This is implicit for LHS operands of the in operator\r\n // b. Let kPresent be the result of calling the HasProperty internal\r\n // method of O with argument Pk.\r\n // This step can be combined with c\r\n // c. If kPresent is true, then\r\n if (k in O) {\r\n // i. Let kValue be the result of calling the Get internal\r\n // method of O with argument Pk.\r\n kValue = O[k];\r\n // ii. Let mappedValue be the result of calling the Call internal\r\n // method of callback with T as the this value and argument\r\n // list containing kValue, k, and O.\r\n mappedValue = callback.call(T, kValue, k, O);\r\n // iii. Call the DefineOwnProperty internal method of A with arguments\r\n // Pk, Property Descriptor\r\n // { Value: mappedValue,\r\n // Writable: true,\r\n // Enumerable: true,\r\n // Configurable: true },\r\n // and false.\r\n // In browsers that support Object.defineProperty, use the following:\r\n // Object.defineProperty(A, k, {\r\n // value: mappedValue,\r\n // writable: true,\r\n // enumerable: true,\r\n // configurable: true\r\n // });\r\n // For best browser support, use the following:\r\n A[k] = mappedValue;\r\n }\r\n // d. Increase k by 1.\r\n k++;\r\n }\r\n // 9. return A\r\n return A;\r\n };\r\n}\r\nif (!Array.prototype.filter) {\r\n Array.prototype.filter = function (fun /*, thisArg*/) {\r\n \"use strict\";\r\n if (this === void 0 || this === null) {\r\n throw new TypeError();\r\n }\r\n var t = Object(this);\r\n var len = t.length >>> 0;\r\n if (typeof fun !== \"function\") {\r\n throw new TypeError();\r\n }\r\n var res = [];\r\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\r\n for (var i = 0; i < len; i++) {\r\n if (i in t) {\r\n var val = t[i];\r\n // NOTE: Technically this should Object.defineProperty at\r\n // the next index, as push can be affected by\r\n // properties on Object.prototype and Array.prototype.\r\n // But that method's new, and collisions should be\r\n // rare, so use the more-compatible alternative.\r\n if (fun.call(thisArg, val, i, t)) {\r\n res.push(val);\r\n }\r\n }\r\n }\r\n return res;\r\n };\r\n}\r\n\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Reloader_1 = __webpack_require__(60);\r\nvar Timer_1 = __webpack_require__(62);\r\nvar events = __webpack_require__(12);\r\nvar utils = __webpack_require__(4);\r\nvar emitter = __webpack_require__(7);\r\nvar sync = exports;\r\nvar nanlogger = __webpack_require__(63);\r\nvar log = nanlogger(\"Browsersync\", { colors: { magenta: \"#0F2634\" } });\r\nvar reloader = new Reloader_1.Reloader(window, log, Timer_1.Timer);\r\nvar options = {\r\n tagNames: {\r\n css: \"link\",\r\n jpg: \"img\",\r\n jpeg: \"img\",\r\n png: \"img\",\r\n svg: \"img\",\r\n gif: \"img\",\r\n js: \"script\"\r\n },\r\n attrs: {\r\n link: \"href\",\r\n img: \"src\",\r\n script: \"src\"\r\n },\r\n blacklist: [\r\n // never allow .map files through\r\n function (incoming) {\r\n return incoming.ext === \"map\";\r\n }\r\n ]\r\n};\r\nvar OPT_PATH = \"codeSync\";\r\nvar current = function () {\r\n return window.location.pathname;\r\n};\r\n/**\r\n * @param {BrowserSync} bs\r\n */\r\nsync.init = function (bs) {\r\n if (bs.options.tagNames) {\r\n options.tagNames = bs.options.tagNames;\r\n }\r\n if (bs.options.scrollRestoreTechnique === \"window.name\") {\r\n sync.saveScrollInName(emitter);\r\n }\r\n else {\r\n sync.saveScrollInCookie(utils.getWindow(), utils.getDocument());\r\n }\r\n bs.socket.on(\"file:reload\", sync.reload(bs));\r\n bs.socket.on(\"browser:reload\", function () {\r\n if (bs.canSync({ url: current() }, OPT_PATH)) {\r\n sync.reloadBrowser(true, bs);\r\n }\r\n });\r\n};\r\n/**\r\n * Use window.name to store/restore scroll position\r\n */\r\nsync.saveScrollInName = function () {\r\n var PRE = \"<<BS_START>>\";\r\n var SUF = \"<<BS_END>>\";\r\n var regex = new RegExp(PRE + \"(.+?)\" + SUF);\r\n var $window = utils.getWindow();\r\n var saved = {};\r\n /**\r\n * Listen for the browser:hardReload event.\r\n * When it runs, save the current scroll position\r\n * in window.name\r\n */\r\n emitter.on(\"browser:hardReload\", function (data) {\r\n var newname = [\r\n $window.name,\r\n PRE,\r\n JSON.stringify({\r\n bs: {\r\n hardReload: true,\r\n scroll: data.scrollPosition\r\n }\r\n }),\r\n SUF\r\n ].join(\"\");\r\n $window.name = newname;\r\n });\r\n /**\r\n * On page load, check window.name for an existing\r\n * BS json blob & parse it.\r\n */\r\n try {\r\n var json = $window.name.match(regex);\r\n if (json) {\r\n saved = JSON.parse(json[1]);\r\n }\r\n }\r\n catch (e) {\r\n saved = {};\r\n }\r\n /**\r\n * If the JSON was parsed correctly, try to\r\n * find a scroll property and restore it.\r\n */\r\n if (saved.bs && saved.bs.hardReload && saved.bs.scroll) {\r\n utils.setScroll(saved.bs.scroll);\r\n }\r\n /**\r\n * Remove any existing BS json from window.name\r\n * to ensure we don't interfere with any other\r\n * libs who may be using it.\r\n */\r\n $window.name = $window.name.replace(regex, \"\");\r\n};\r\n/**\r\n * Use a cookie-drop to save scroll position of\r\n * @param $window\r\n * @param $document\r\n */\r\nsync.saveScrollInCookie = function ($window, $document) {\r\n if (!utils.isOldIe()) {\r\n return;\r\n }\r\n if ($document.readyState === \"complete\") {\r\n utils.restoreScrollPosition();\r\n }\r\n else {\r\n events.manager.addEvent($document, \"readystatechange\", function () {\r\n if ($document.readyState === \"complete\") {\r\n utils.restoreScrollPosition();\r\n }\r\n });\r\n }\r\n emitter.on(\"browser:hardReload\", utils.saveScrollPosition);\r\n};\r\n/**\r\n * @param {BrowserSync} bs\r\n * @returns {*}\r\n */\r\nsync.reload = function (bs) {\r\n /**\r\n * @param data - from socket\r\n */\r\n return function (data) {\r\n if (!bs.canSync({ url: current() }, OPT_PATH)) {\r\n return;\r\n }\r\n if (data.url || !bs.options.injectChanges) {\r\n sync.reloadBrowser(true);\r\n }\r\n if (data.basename && data.ext) {\r\n if (sync.isBlacklisted(data)) {\r\n return;\r\n }\r\n reloader.reload(data, __assign({}, options, { liveCSS: true, liveImg: true }));\r\n }\r\n };\r\n};\r\n/**\r\n * @param incoming\r\n * @returns {boolean}\r\n */\r\nsync.isBlacklisted = function (incoming) {\r\n return options.blacklist.some(function (fn) {\r\n return fn(incoming);\r\n });\r\n};\r\n/**\r\n * @param confirm\r\n */\r\nsync.reloadBrowser = function (confirm) {\r\n emitter.emit(\"browser:hardReload\", {\r\n scrollPosition: utils.getBrowserScrollPosition()\r\n });\r\n if (confirm) {\r\n utils.reloadBrowser();\r\n }\r\n};\r\n\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/**\r\n *\r\n * With thanks to https://github.com/livereload/livereload-js\r\n * :) :) :)\r\n *\r\n */\r\nvar utils_1 = __webpack_require__(61);\r\nvar hiddenElem;\r\nvar IMAGE_STYLES = [\r\n { selector: 'background', styleNames: ['backgroundImage'] },\r\n { selector: 'border', styleNames: ['borderImage', 'webkitBorderImage', 'MozBorderImage'] }\r\n];\r\nvar Reloader = /** @class */ (function () {\r\n function Reloader(window, logger, Timer) {\r\n this.window = window;\r\n this.logger = logger;\r\n this.Timer = Timer;\r\n this.window = window;\r\n this.Timer = Timer;\r\n this.document = this.window.document;\r\n this.importCacheWaitPeriod = 200;\r\n this.plugins = [];\r\n }\r\n Reloader.prototype.addPlugin = function (plugin) {\r\n return this.plugins.push(plugin);\r\n };\r\n Reloader.prototype.analyze = function (callback) {\r\n return null;\r\n // return results;\r\n };\r\n Reloader.prototype.reload = function (data, options, cb) {\r\n this.options = options; // avoid passing it through all the funcs\r\n var path = data.path;\r\n if (this.options.stylesheetReloadTimeout == null) {\r\n this.options.stylesheetReloadTimeout = 15000;\r\n }\r\n this.plugins.forEach(function (plugin) {\r\n if (plugin.reload && plugin.reload(path, options)) {\r\n return;\r\n }\r\n });\r\n if (options.liveCSS) {\r\n if (path.match(/\\.css$/i)) {\r\n this.logger.trace(\"path.match(/\\\\.css$/i)\", true);\r\n if (this.reloadStylesheet(path)) {\r\n return;\r\n }\r\n }\r\n }\r\n if (options.liveImg) {\r\n if (path.match(/\\.(jpe?g|png|gif)$/i)) {\r\n this.logger.trace(\"/\\\\.(jpe?g|png|gif)$/i\", true);\r\n this.reloadImages(path);\r\n return;\r\n }\r\n }\r\n this.logger.trace('Falling back to legacy method of replacing assets');\r\n /**\r\n * LEGACY\r\n */\r\n var domData = Reloader.getElems(data.ext, options);\r\n var elems = Reloader.getMatches(domData.elems, data.basename, domData.attr);\r\n for (var i = 0, n = elems.length; i < n; i += 1) {\r\n this.swapFile(elems[i], domData, options);\r\n }\r\n (cb || function () { })(elems, domData);\r\n };\r\n Reloader.getElems = function (fileExtension, options) {\r\n var tagName = options.tagNames[fileExtension];\r\n var attr = options.attrs[tagName];\r\n return {\r\n attr: attr,\r\n tagName: tagName,\r\n elems: document.getElementsByTagName(tagName)\r\n };\r\n };\r\n Reloader.getMatches = function (elems, url, attr) {\r\n if (url[0] === \"*\") {\r\n return elems;\r\n }\r\n var matches = [];\r\n var urlMatcher = new RegExp(\"(^|/)\" + url);\r\n for (var i = 0, len = elems.length; i < len; i += 1) {\r\n if (urlMatcher.test(elems[i][attr])) {\r\n matches.push(elems[i]);\r\n }\r\n }\r\n return matches;\r\n };\r\n ;\r\n Reloader.prototype.swapFile = function (elem, domData, options) {\r\n var attr = domData.attr;\r\n var currentValue = elem[attr];\r\n var timeStamp = new Date().getTime();\r\n var key = \"browsersync-legacy\";\r\n var suffix = key + \"=\" + timeStamp;\r\n var anchor = utils_1.getLocation(currentValue);\r\n var search = utils_1.updateSearch(anchor.search, key, suffix);\r\n switch (domData.tagName) {\r\n case 'link': {\r\n this.logger.trace(\"replacing LINK \" + attr);\r\n this.reloadStylesheet(currentValue);\r\n break;\r\n }\r\n case 'img': {\r\n this.reloadImages(currentValue);\r\n break;\r\n }\r\n default: {\r\n if (options.timestamps === false) {\r\n elem[attr] = anchor.href;\r\n }\r\n else {\r\n elem[attr] = anchor.href.split(\"?\")[0] + search;\r\n }\r\n this.logger.info(\"reloading \" + elem[attr]);\r\n setTimeout(function () {\r\n if (!hiddenElem) {\r\n hiddenElem = document.createElement(\"DIV\");\r\n document.body.appendChild(hiddenElem);\r\n }\r\n else {\r\n hiddenElem.style.display = \"none\";\r\n hiddenElem.style.display = \"block\";\r\n }\r\n }, 200);\r\n }\r\n }\r\n return {\r\n elem: elem,\r\n timeStamp: timeStamp\r\n };\r\n };\r\n ;\r\n Reloader.prototype.reloadPage = function () {\r\n return this.window.document.location.reload();\r\n };\r\n Reloader.prototype.reloadImages = function (path) {\r\n var _this = this;\r\n var expando = this.generateUniqueString();\r\n [].slice.call(this.document.images).forEach(function (img) {\r\n if (utils_1.pathsMatch(path, utils_1.pathFromUrl(img.src))) {\r\n img.src = _this.generateCacheBustUrl(img.src, expando);\r\n }\r\n });\r\n if (this.document.querySelectorAll) {\r\n IMAGE_STYLES.forEach(function (_a) {\r\n var selector = _a.selector, styleNames = _a.styleNames;\r\n [].slice.call(_this.document.querySelectorAll(\"[style*=\" + selector + \"]\")).forEach(function (img) {\r\n _this.reloadStyleImages(img.style, styleNames, path, expando);\r\n });\r\n });\r\n }\r\n if (this.document.styleSheets) {\r\n return [].slice.call(this.document.styleSheets)\r\n .map(function (styleSheet) {\r\n return _this.reloadStylesheetImages(styleSheet, path, expando);\r\n });\r\n }\r\n };\r\n Reloader.prototype.reloadStylesheetImages = function (styleSheet, path, expando) {\r\n var _this = this;\r\n var rules;\r\n try {\r\n rules = styleSheet != null ? styleSheet.cssRules : undefined;\r\n }\r\n catch (e) { }\r\n //\r\n if (!rules) {\r\n return;\r\n }\r\n [].slice.call(rules).forEach(function (rule) {\r\n switch (rule.type) {\r\n case CSSRule.IMPORT_RULE:\r\n _this.reloadStylesheetImages(rule.styleSheet, path, expando);\r\n break;\r\n case CSSRule.STYLE_RULE:\r\n [].slice.call(IMAGE_STYLES).forEach(function (_a) {\r\n var styleNames = _a.styleNames;\r\n _this.reloadStyleImages(rule.style, styleNames, path, expando);\r\n });\r\n break;\r\n case CSSRule.MEDIA_RULE:\r\n _this.reloadStylesheetImages(rule, path, expando);\r\n break;\r\n }\r\n });\r\n };\r\n Reloader.prototype.reloadStyleImages = function (style, styleNames, path, expando) {\r\n var _this = this;\r\n [].slice.call(styleNames).forEach(function (styleName) {\r\n var value = style[styleName];\r\n if (typeof value === 'string') {\r\n var newValue = value.replace(new RegExp(\"\\\\burl\\\\s*\\\\(([^)]*)\\\\)\"), function (match, src) {\r\n if (utils_1.pathsMatch(path, utils_1.pathFromUrl(src))) {\r\n return \"url(\" + _this.generateCacheBustUrl(src, expando) + \")\";\r\n }\r\n else {\r\n return match;\r\n }\r\n });\r\n if (newValue !== value) {\r\n style[styleName] = newValue;\r\n }\r\n }\r\n });\r\n };\r\n Reloader.prototype.reloadStylesheet = function (path) {\r\n var _this = this;\r\n // has to be a real array, because DOMNodeList will be modified\r\n var link;\r\n var links = ((function () {\r\n var result = [];\r\n [].slice.call(_this.document.getElementsByTagName('link')).forEach(function (link) {\r\n if (link.rel.match(/^stylesheet$/i) && !link.__LiveReload_pendingRemoval) {\r\n result.push(link);\r\n }\r\n });\r\n return result;\r\n })());\r\n // find all imported stylesheets\r\n var imported = [];\r\n for (var _i = 0, _a = Array.from(this.document.getElementsByTagName('style')); _i < _a.length; _i++) {\r\n var style = _a[_i];\r\n if (style.sheet) {\r\n this.collectImportedStylesheets(style, style.sheet, imported);\r\n }\r\n }\r\n for (var _b = 0, _c = Array.from(links); _b < _c.length; _b++) {\r\n link = _c[_b];\r\n this.collectImportedStylesheets(link, link.sheet, imported);\r\n }\r\n // handle prefixfree\r\n if (this.window.StyleFix && this.document.querySelectorAll) {\r\n [].slice.call(this.document.querySelectorAll('style[data-href]')).forEach(function (style) {\r\n links.push(style);\r\n });\r\n }\r\n this.logger.debug(\"found \" + links.length + \" LINKed stylesheets, \" + imported.length + \" @imported stylesheets\");\r\n var match = utils_1.pickBestMatch(path, links.concat(imported), function (l) { return utils_1.pathFromUrl(_this.linkHref(l)); });\r\n if (match) {\r\n if (match.object && match.object.rule) {\r\n this.logger.info(\"reloading imported stylesheet: \" + match.object.href);\r\n this.reattachImportedRule(match.object);\r\n }\r\n else {\r\n this.logger.info(\"reloading stylesheet: \" + this.linkHref(match.object));\r\n this.reattachStylesheetLink(match.object);\r\n }\r\n }\r\n else {\r\n this.logger.info(\"reloading all stylesheets because path '\" + path + \"' did not match any specific one\");\r\n links.forEach(function (link) { return _this.reattachStylesheetLink(link); });\r\n }\r\n return true;\r\n };\r\n Reloader.prototype.collectImportedStylesheets = function (link, styleSheet, result) {\r\n // in WebKit, styleSheet.cssRules is null for inaccessible stylesheets;\r\n // Firefox/Opera may throw exceptions\r\n var rules;\r\n try {\r\n rules = styleSheet != null ? styleSheet.cssRules : undefined;\r\n }\r\n catch (e) { }\r\n //\r\n if (rules && rules.length) {\r\n for (var index = 0; index < rules.length; index++) {\r\n var rule = rules[index];\r\n switch (rule.type) {\r\n case CSSRule.CHARSET_RULE:\r\n break;\r\n case CSSRule.IMPORT_RULE:\r\n result.push({ link: link, rule: rule, index: index, href: rule.href });\r\n this.collectImportedStylesheets(link, rule.styleSheet, result);\r\n break;\r\n default:\r\n break; // import rules can only be preceded by charset rules\r\n }\r\n }\r\n }\r\n };\r\n Reloader.prototype.waitUntilCssLoads = function (clone, func) {\r\n var _this = this;\r\n var callbackExecuted = false;\r\n var executeCallback = function () {\r\n if (callbackExecuted) {\r\n return;\r\n }\r\n callbackExecuted = true;\r\n return func();\r\n };\r\n // supported by Chrome 19+, Safari 5.2+, Firefox 9+, Opera 9+, IE6+\r\n // http://www.zachleat.com/web/load-css-dynamically/\r\n // http://pieisgood.org/test/script-link-events/\r\n clone.onload = function () {\r\n _this.logger.debug(\"the new stylesheet has finished loading\");\r\n _this.knownToSupportCssOnLoad = true;\r\n return executeCallback();\r\n };\r\n if (!this.knownToSupportCssOnLoad) {\r\n // polling\r\n var poll_1;\r\n (poll_1 = function () {\r\n if (clone.sheet) {\r\n _this.logger.debug(\"polling until the new CSS finishes loading...\");\r\n return executeCallback();\r\n }\r\n else {\r\n return _this.Timer.start(50, poll_1);\r\n }\r\n })();\r\n }\r\n // fail safe\r\n return this.Timer.start(this.options.stylesheetReloadTimeout, executeCallback);\r\n };\r\n Reloader.prototype.linkHref = function (link) {\r\n // prefixfree uses data-href when it turns LINK into STYLE\r\n return link.href || link.getAttribute('data-href');\r\n };\r\n Reloader.prototype.reattachStylesheetLink = function (link) {\r\n var _this = this;\r\n // ignore LINKs that will be removed by LR soon\r\n var clone;\r\n if (link.__LiveReload_pendingRemoval) {\r\n return;\r\n }\r\n link.__LiveReload_pendingRemoval = true;\r\n if (link.tagName === 'STYLE') {\r\n // prefixfree\r\n clone = this.document.createElement('link');\r\n clone.rel = 'stylesheet';\r\n clone.media = link.media;\r\n clone.disabled = link.disabled;\r\n }\r\n else {\r\n clone = link.cloneNode(false);\r\n }\r\n clone.href = this.generateCacheBustUrl(this.linkHref(link));\r\n // insert the new LINK before the old one\r\n var parent = link.parentNode;\r\n if (parent.lastChild === link) {\r\n parent.appendChild(clone);\r\n }\r\n else {\r\n parent.insertBefore(clone, link.nextSibling);\r\n }\r\n return this.waitUntilCssLoads(clone, function () {\r\n var additionalWaitingTime;\r\n if (/AppleWebKit/.test(navigator.userAgent)) {\r\n additionalWaitingTime = 5;\r\n }\r\n else {\r\n additionalWaitingTime = 200;\r\n }\r\n return _this.Timer.start(additionalWaitingTime, function () {\r\n if (!link.parentNode) {\r\n return;\r\n }\r\n link.parentNode.removeChild(link);\r\n clone.onreadystatechange = null;\r\n return (_this.window.StyleFix != null ? _this.window.StyleFix.link(clone) : undefined);\r\n });\r\n }); // prefixfree\r\n };\r\n Reloader.prototype.reattachImportedRule = function (_a) {\r\n var _this = this;\r\n var rule = _a.rule, index = _a.index, link = _a.link;\r\n var parent = rule.parentStyleSheet;\r\n var href = this.generateCacheBustUrl(rule.href);\r\n var media = rule.media.length ? [].join.call(rule.media, ', ') : '';\r\n var newRule = \"@import url(\\\"\" + href + \"\\\") \" + media + \";\";\r\n // used to detect if reattachImportedRule has been called again on the same rule\r\n rule.__LiveReload_newHref = href;\r\n // WORKAROUND FOR WEBKIT BUG: WebKit resets all styles if we add @import'ed\r\n // stylesheet that hasn't been cached yet. Workaround is to pre-cache the\r\n // stylesheet by temporarily adding it as a LINK tag.\r\n var tempLink = this.document.createElement(\"link\");\r\n tempLink.rel = 'stylesheet';\r\n tempLink.href = href;\r\n tempLink.__LiveReload_pendingRemoval = true; // exclude from path matching\r\n if (link.parentNode) {\r\n link.parentNode.insertBefore(tempLink, link);\r\n }\r\n // wait for it to load\r\n return this.Timer.start(this.importCacheWaitPeriod, function () {\r\n if (tempLink.parentNode) {\r\n tempLink.parentNode.removeChild(tempLink);\r\n }\r\n // if another reattachImportedRule call is in progress, abandon this one\r\n if (rule.__LiveReload_newHref !== href) {\r\n return;\r\n }\r\n parent.insertRule(newRule, index);\r\n parent.deleteRule(index + 1);\r\n // save the new rule, so that we can detect another reattachImportedRule call\r\n rule = parent.cssRules[index];\r\n rule.__LiveReload_newHref = href;\r\n // repeat again for good measure\r\n return _this.Timer.start(_this.importCacheWaitPeriod, function () {\r\n // if another reattachImportedRule call is in progress, abandon this one\r\n if (rule.__LiveReload_newHref !== href) {\r\n return;\r\n }\r\n parent.insertRule(newRule, index);\r\n return parent.deleteRule(index + 1);\r\n });\r\n });\r\n };\r\n Reloader.prototype.generateUniqueString = function () {\r\n return \"browsersync=\" + Date.now();\r\n };\r\n Reloader.prototype.generateCacheBustUrl = function (url, expando) {\r\n if (expando === void 0) { expando = this.generateUniqueString(); }\r\n var hash, oldParams;\r\n (_a = utils_1.splitUrl(url), url = _a.url, hash = _a.hash, oldParams = _a.params);\r\n if (this.options.overrideURL) {\r\n if (url.indexOf(this.options.serverURL) < 0) {\r\n var originalUrl = url;\r\n url = this.options.serverURL + this.options.overrideURL + \"?url=\" + encodeURIComponent(url);\r\n this.logger.debug(\"overriding source URL \" + originalUrl + \" with \" + url);\r\n }\r\n }\r\n var params = oldParams.replace(/(\\?|&)browsersync=(\\d+)/, function (match, sep) { return \"\" + sep + expando; });\r\n if (params === oldParams) {\r\n if (oldParams.length === 0) {\r\n params = \"?\" + expando;\r\n }\r\n else {\r\n params = oldParams + \"&\" + expando;\r\n }\r\n }\r\n return url + params + hash;\r\n var _a;\r\n };\r\n return Reloader;\r\n}());\r\nexports.Reloader = Reloader;\r\n\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction each(incoming) {\r\n return [].slice.call(incoming || []);\r\n}\r\nexports.each = each;\r\nexports.splitUrl = function (url) {\r\n var hash, index, params;\r\n if ((index = url.indexOf(\"#\")) >= 0) {\r\n hash = url.slice(index);\r\n url = url.slice(0, index);\r\n }\r\n else {\r\n hash = \"\";\r\n }\r\n if ((index = url.indexOf(\"?\")) >= 0) {\r\n params = url.slice(index);\r\n url = url.slice(0, index);\r\n }\r\n else {\r\n params = \"\";\r\n }\r\n return { url: url, params: params, hash: hash };\r\n};\r\nexports.pathFromUrl = function (url) {\r\n var path;\r\n (url = exports.splitUrl(url).url);\r\n if (url.indexOf(\"file://\") === 0) {\r\n path = url.replace(new RegExp(\"^file://(localhost)?\"), \"\");\r\n }\r\n else {\r\n // http : // hostname :8080 /\r\n path = url.replace(new RegExp(\"^([^:]+:)?//([^:/]+)(:\\\\d*)?/\"), \"/\");\r\n }\r\n // decodeURI has special handling of stuff like semicolons, so use decodeURIComponent\r\n return decodeURIComponent(path);\r\n};\r\nexports.pickBestMatch = function (path, objects, pathFunc) {\r\n var score;\r\n var bestMatch = { score: 0, object: null };\r\n objects.forEach(function (object) {\r\n score = exports.numberOfMatchingSegments(path, pathFunc(object));\r\n if (score > bestMatch.score) {\r\n bestMatch = { object: object, score: score };\r\n }\r\n });\r\n if (bestMatch.score > 0) {\r\n return bestMatch;\r\n }\r\n else {\r\n return null;\r\n }\r\n};\r\nexports.numberOfMatchingSegments = function (path1, path2) {\r\n // get rid of leading slashes and normalize to lower case\r\n path1 = path1.replace(/^\\/+/, \"\").toLowerCase();\r\n path2 = path2.replace(/^\\/+/, \"\").toLowerCase();\r\n if (path1 === path2) {\r\n return 10000;\r\n }\r\n var comps1 = path1.split(\"/\").reverse();\r\n var comps2 = path2.split(\"/\").reverse();\r\n var len = Math.min(comps1.length, comps2.length);\r\n var eqCount = 0;\r\n while (eqCount < len && comps1[eqCount] === comps2[eqCount]) {\r\n ++eqCount;\r\n }\r\n return eqCount;\r\n};\r\nexports.pathsMatch = function (path1, path2) {\r\n return exports.numberOfMatchingSegments(path1, path2) > 0;\r\n};\r\nfunction getLocation(url) {\r\n var location = document.createElement(\"a\");\r\n location.href = url;\r\n if (location.host === \"\") {\r\n location.href = location.href;\r\n }\r\n return location;\r\n}\r\nexports.getLocation = getLocation;\r\n/**\r\n * @param {string} search\r\n * @param {string} key\r\n * @param {string} suffix\r\n */\r\nfunction updateSearch(search, key, suffix) {\r\n if (search === \"\") {\r\n return \"?\" + suffix;\r\n }\r\n return (\"?\" +\r\n search\r\n .slice(1)\r\n .split(\"&\")\r\n .map(function (item) {\r\n return item.split(\"=\");\r\n })\r\n .filter(function (tuple) {\r\n return tuple[0] !== key;\r\n })\r\n .map(function (item) {\r\n return [item[0], item[1]].join(\"=\");\r\n })\r\n .concat(suffix)\r\n .join(\"&\"));\r\n}\r\nexports.updateSearch = updateSearch;\r\n\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/*\r\n * decaffeinate suggestions:\r\n * DS102: Remove unnecessary code created because of implicit returns\r\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\r\n */\r\nvar Timer = /** @class */ (function () {\r\n function Timer(func) {\r\n var _this = this;\r\n this.func = func;\r\n this.running = false;\r\n this.id = null;\r\n this._handler = function () {\r\n _this.running = false;\r\n _this.id = null;\r\n return _this.func();\r\n };\r\n }\r\n Timer.prototype.start = function (timeout) {\r\n if (this.running) {\r\n clearTimeout(this.id);\r\n }\r\n this.id = setTimeout(this._handler, timeout);\r\n return this.running = true;\r\n };\r\n Timer.prototype.stop = function () {\r\n if (this.running) {\r\n clearTimeout(this.id);\r\n this.running = false;\r\n return this.id = null;\r\n }\r\n };\r\n Timer.start = function (timeout, func) {\r\n setTimeout(func, timeout);\r\n };\r\n return Timer;\r\n}());\r\nexports.Timer = Timer;\r\n\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar assert = __webpack_require__(64)\nvar xtend = __webpack_require__(68)\n\nvar emojis = {\n trace: '🔍',\n debug: '🐛',\n info: '✨',\n warn: '⚠️',\n error: '🚨',\n fatal: '💀'\n}\n\nvar levels = {\n trace: 10,\n debug: 20,\n info: 30,\n warn: 40,\n error: 50,\n fatal: 60\n}\n\nvar defaultColors = {\n foreground: '#d3c0c8',\n background: '#2d2d2d',\n black: '#2d2d2d',\n red: '#f2777a',\n green: '#99cc99',\n yellow: '#ffcc66',\n blue: '#6699cc',\n magenta: '#cc99cc',\n cyan: '#66cccc',\n white: '#d3d0c8',\n brightBlack: '#747369'\n}\n\nmodule.exports = Nanologger\n\nfunction Nanologger (name, opts) {\n opts = opts || {}\n if (!(this instanceof Nanologger)) return new Nanologger(name, opts)\n\n assert.equal(typeof opts, 'object', 'nanologger: opts should be type object')\n\n this._name = name || ''\n this._colors = xtend(defaultColors, opts.colors || {})\n\n try {\n this.logLevel = window.localStorage.getItem('logLevel') || 'info'\n } catch (e) {\n this.logLevel = 'info'\n }\n\n this._logLevel = levels[this.logLevel]\n}\n\nNanologger.prototype.trace = function () {\n var args = [ 'trace' ]\n for (var i = 0, len = arguments.length; i < len; i++) args.push(arguments[i])\n this._print.apply(this, args)\n}\n\nNanologger.prototype.debug = function () {\n var args = [ 'debug' ]\n for (var i = 0, len = arguments.length; i < len; i++) args.push(arguments[i])\n this._print.apply(this, args)\n}\n\nNanologger.prototype.info = function () {\n var args = [ 'info' ]\n for (var i = 0, len = arguments.length; i < len; i++) args.push(arguments[i])\n this._print.apply(this, args)\n}\n\nNanologger.prototype.warn = function () {\n var args = [ 'warn' ]\n for (var i = 0, len = arguments.length; i < len; i++) args.push(arguments[i])\n this._print.apply(this, args)\n}\n\nNanologger.prototype.error = function () {\n var args = [ 'error' ]\n for (var i = 0, len = arguments.length; i < len; i++) args.push(arguments[i])\n this._print.apply(this, args)\n}\n\nNanologger.prototype.fatal = function () {\n var args = [ 'fatal' ]\n for (var i = 0, len = arguments.length; i < len; i++) args.push(arguments[i])\n this._print.apply(this, args)\n}\n\nNanologger.prototype._print = function (level) {\n if (levels[level] < this._logLevel) return\n\n var time = getTimeStamp()\n var emoji = emojis[level]\n var name = this._name || 'unknown'\n\n var msgColor = (level === 'error' || level.fatal)\n ? this._colors.red\n : level === 'warn'\n ? this._colors.yellow\n : this._colors.green\n\n var objs = []\n var args = [ null ]\n var msg = '%c%s ' + emoji + ' %c%s'\n\n args.push(color(this._colors.brightBlack), time)\n args.push(color(this._colors.magenta), name)\n\n for (var i = 1, len = arguments.length; i < len; i++) {\n var arg = arguments[i]\n if (typeof arg === 'string') {\n if (i === 1) {\n // first string argument is in color\n msg += ' %c%s'\n args.push(color(msgColor))\n args.push(arg)\n } else if (/ms$/.test(arg)) {\n // arguments finishing with 'ms', grey out\n msg += ' %c%s'\n args.push(color(this._colors.brightBlack))\n args.push(arg)\n } else {\n // normal colors\n msg += ' %c%s'\n args.push(color(this._colors.white))\n args.push(arg)\n }\n } else if (typeof arg === 'number') {\n msg += ' %c%d'\n args.push(color(this._colors.magenta))\n args.push(arg)\n } else {\n objs.push(arg)\n }\n }\n\n args[0] = msg\n objs.forEach(function (obj) {\n args.push(obj)\n })\n\n // In IE/Edge console functions don't inherit from Function.prototype\n // so this is necessary to get all the args applied.\n Function.prototype.apply.apply(console.log, [console, args])\n}\n\nfunction color (color) {\n return 'color: ' + color + ';'\n}\n\nfunction getTimeStamp () {\n var date = new Date()\n var hours = pad(date.getHours().toString())\n var minutes = pad(date.getMinutes().toString())\n var seconds = pad(date.getSeconds().toString())\n return hours + ':' + minutes + ':' + seconds\n}\n\nfunction pad (str) {\n return str.length !== 2 ? 0 + str : str\n}\n\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\n// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n}\nfunction isBuffer(b) {\n if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {\n return global.Buffer.isBuffer(b);\n }\n return !!(b != null && b._isBuffer);\n}\n\n// based on node assert, original notice:\n\n// http://wiki.commonjs.org/wiki/Unit_Testing/1.0\n//\n// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!\n//\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar util = __webpack_require__(65);\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar pSlice = Array.prototype.slice;\nvar functionsHaveNames = (function () {\n return function foo() {}.name === 'foo';\n}());\nfunction pToString (obj) {\n return Object.prototype.toString.call(obj);\n}\nfunction isView(arrbuf) {\n if (isBuffer(arrbuf)) {\n return false;\n }\n if (typeof global.ArrayBuffer !== 'function') {\n return false;\n }\n if (typeof ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(arrbuf);\n }\n if (!arrbuf) {\n return false;\n }\n if (arrbuf instanceof DataView) {\n return true;\n }\n if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {\n return true;\n }\n return false;\n}\n// 1. The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\n\n// 2. The AssertionError is defined in assert.\n// new assert.AssertionError({ message: message,\n// actual: actual,\n// expected: expected })\n\nvar regex = /\\s*function\\s+([^\\(\\s]*)\\s*/;\n// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js\nfunction getName(func) {\n if (!util.isFunction(func)) {\n return;\n }\n if (functionsHaveNames) {\n return func.name;\n }\n var str = func.toString();\n var match = str.match(regex);\n return match && match[1];\n}\nassert.AssertionError = function AssertionError(options) {\n this.name = 'AssertionError';\n this.actual = options.actual;\n this.expected = options.expected;\n this.operator = options.operator;\n if (options.message) {\n this.message = options.message;\n this.generatedMessage = false;\n } else {\n this.message = getMessage(this);\n this.generatedMessage = true;\n }\n var stackStartFunction = options.stackStartFunction || fail;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, stackStartFunction);\n } else {\n // non v8 browsers so we can have a stacktrace\n var err = new Error();\n if (err.stack) {\n var out = err.stack;\n\n // try to strip useless frames\n var fn_name = getName(stackStartFunction);\n var idx = out.indexOf('\\n' + fn_name);\n if (idx >= 0) {\n // once we have located the function frame\n // we need to strip out everything before it (and its line)\n var next_line = out.indexOf('\\n', idx + 1);\n out = out.substring(next_line + 1);\n }\n\n this.stack = out;\n }\n }\n};\n\n// assert.AssertionError instanceof Error\nutil.inherits(assert.AssertionError, Error);\n\nfunction truncate(s, n) {\n if (typeof s === 'string') {\n return s.length < n ? s : s.slice(0, n);\n } else {\n return s;\n }\n}\nfunction inspect(something) {\n if (functionsHaveNames || !util.isFunction(something)) {\n return util.inspect(something);\n }\n var rawname = getName(something);\n var name = rawname ? ': ' + rawname : '';\n return '[Function' + name + ']';\n}\nfunction getMessage(self) {\n return truncate(inspect(self.actual), 128) + ' ' +\n self.operator + ' ' +\n truncate(inspect(self.expected), 128);\n}\n\n// At present only the three keys mentioned above are used and\n// understood by the spec. Implementations or sub modules can pass\n// other keys to the AssertionError's constructor - they will be\n// ignored.\n\n// 3. All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction fail(actual, expected, message, operator, stackStartFunction) {\n throw new assert.AssertionError({\n message: message,\n actual: actual,\n expected: expected,\n operator: operator,\n stackStartFunction: stackStartFunction\n });\n}\n\n// EXTENSION! allows for well behaved errors defined elsewhere.\nassert.fail = fail;\n\n// 4. Pure assertion tests whether a value is truthy, as determined\n// by !!guard.\n// assert.ok(guard, message_opt);\n// This statement is equivalent to assert.equal(true, !!guard,\n// message_opt);. To test strictly for the value true, use\n// assert.strictEqual(true, guard, message_opt);.\n\nfunction ok(value, message) {\n if (!value) fail(value, true, message, '==', assert.ok);\n}\nassert.ok = ok;\n\n// 5. The equality assertion tests shallow, coercive equality with\n// ==.\n// assert.equal(actual, expected, message_opt);\n\nassert.equal = function equal(actual, expected, message) {\n if (actual != expected) fail(actual, expected, message, '==', assert.equal);\n};\n\n// 6. The non-equality assertion tests for whether two objects are not equal\n// with != assert.notEqual(actual, expected, message_opt);\n\nassert.notEqual = function notEqual(actual, expected, message) {\n if (actual == expected) {\n fail(actual, expected, message, '!=', assert.notEqual);\n }\n};\n\n// 7. The equivalence assertion tests a deep equality relation.\n// assert.deepEqual(actual, expected, message_opt);\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'deepEqual', assert.deepEqual);\n }\n};\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);\n }\n};\n\nfunction _deepEqual(actual, expected, strict, memos) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n } else if (isBuffer(actual) && isBuffer(expected)) {\n return compare(actual, expected) === 0;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (util.isDate(actual) && util.isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (util.isRegExp(actual) && util.isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if ((actual === null || typeof actual !== 'object') &&\n (expected === null || typeof expected !== 'object')) {\n return strict ? actual === expected : actual == expected;\n\n // If both values are instances of typed arrays, wrap their underlying\n // ArrayBuffers in a Buffer each to increase performance\n // This optimization requires the arrays to have the same type as checked by\n // Object.prototype.toString (aka pToString). Never perform binary\n // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their\n // bit patterns are not identical.\n } else if (isView(actual) && isView(expected) &&\n pToString(actual) === pToString(expected) &&\n !(actual instanceof Float32Array ||\n actual instanceof Float64Array)) {\n return compare(new Uint8Array(actual.buffer),\n new Uint8Array(expected.buffer)) === 0;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else if (isBuffer(actual) !== isBuffer(expected)) {\n return false;\n } else {\n memos = memos || {actual: [], expected: []};\n\n var actualIndex = memos.actual.indexOf(actual);\n if (actualIndex !== -1) {\n if (actualIndex === memos.expected.indexOf(expected)) {\n return true;\n }\n }\n\n memos.actual.push(actual);\n memos.expected.push(expected);\n\n return objEquiv(actual, expected, strict, memos);\n }\n}\n\nfunction isArguments(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n}\n\nfunction objEquiv(a, b, strict, actualVisitedObjects) {\n if (a === null || a === undefined || b === null || b === undefined)\n return false;\n // if one is a primitive, the other must be same\n if (util.isPrimitive(a) || util.isPrimitive(b))\n return a === b;\n if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))\n return false;\n var aIsArgs = isArguments(a);\n var bIsArgs = isArguments(b);\n if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))\n return false;\n if (aIsArgs) {\n a = pSlice.call(a);\n b = pSlice.call(b);\n return _deepEqual(a, b, strict);\n }\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n var key, i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))\n return false;\n }\n return true;\n}\n\n// 8. The non-equivalence assertion tests for any deep inequality.\n// assert.notDeepEqual(actual, expected, message_opt);\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);\n }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);\n }\n}\n\n\n// 9. The strict equality assertion tests strict equality, as determined by ===.\n// assert.strictEqual(actual, expected, message_opt);\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (actual !== expected) {\n fail(actual, expected, message, '===', assert.strictEqual);\n }\n};\n\n// 10. The strict non-equality assertion tests for strict inequality, as\n// determined by !==. assert.notStrictEqual(actual, expected, message_opt);\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (actual === expected) {\n fail(actual, expected, message, '!==', assert.notStrictEqual);\n }\n};\n\nfunction expectedException(actual, expected) {\n if (!actual || !expected) {\n return false;\n }\n\n if (Object.prototype.toString.call(expected) == '[object RegExp]') {\n return expected.test(actual);\n }\n\n try {\n if (actual instanceof expected) {\n return true;\n }\n } catch (e) {\n // Ignore. The instanceof check doesn't work for arrow functions.\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction _tryBlock(block) {\n var error;\n try {\n block();\n } catch (e) {\n error = e;\n }\n return error;\n}\n\nfunction _throws(shouldThrow, block, expected, message) {\n var actual;\n\n if (typeof block !== 'function') {\n throw new TypeError('\"block\" argument must be a function');\n }\n\n if (typeof expected === 'string') {\n message = expected;\n expected = null;\n }\n\n actual = _tryBlock(block);\n\n message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +\n (message ? ' ' + message : '.');\n\n if (shouldThrow && !actual) {\n fail(actual, expected, 'Missing expected exception' + message);\n }\n\n var userProvidedMessage = typeof message === 'string';\n var isUnwantedException = !shouldThrow && util.isError(actual);\n var isUnexpectedException = !shouldThrow && actual && !expected;\n\n if ((isUnwantedException &&\n userProvidedMessage &&\n expectedException(actual, expected)) ||\n isUnexpectedException) {\n fail(actual, expected, 'Got unwanted exception' + message);\n }\n\n if ((shouldThrow && actual && expected &&\n !expectedException(actual, expected)) || (!shouldThrow && actual)) {\n throw actual;\n }\n}\n\n// 11. Expected to throw an error:\n// assert.throws(block, Error_opt, message_opt);\n\nassert.throws = function(block, /*optional*/error, /*optional*/message) {\n _throws(true, block, error, message);\n};\n\n// EXTENSION! This is annoying to write outside this module.\nassert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {\n _throws(false, block, error, message);\n};\n\nassert.ifError = function(err) { if (err) throw err; };\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n if (hasOwn.call(obj, key)) keys.push(key);\n }\n return keys;\n};\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global, process) {// 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\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = __webpack_require__(66);\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = __webpack_require__(67);\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0), __webpack_require__(15)))\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports) {\n\nmodule.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports) {\n\nif (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports) {\n\nmodule.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar socket = __webpack_require__(13);\r\nvar emitter = __webpack_require__(7);\r\nvar notify = __webpack_require__(26);\r\nvar tab = __webpack_require__(70);\r\nvar utils = __webpack_require__(4);\r\n/**\r\n * @constructor\r\n */\r\nvar BrowserSync = function (options) {\r\n this.options = options;\r\n this.socket = socket;\r\n this.emitter = emitter;\r\n this.utils = utils;\r\n this.tabHidden = false;\r\n var bs = this;\r\n /**\r\n * Options set\r\n */\r\n socket.on(\"options:set\", function (data) {\r\n emitter.emit(\"notify\", \"Setting options...\");\r\n bs.options = data.options;\r\n });\r\n emitter.on(\"tab:hidden\", function () {\r\n bs.tabHidden = true;\r\n });\r\n emitter.on(\"tab:visible\", function () {\r\n bs.tabHidden = false;\r\n });\r\n};\r\n/**\r\n * Helper to check if syncing is allowed\r\n * @param data\r\n * @param optPath\r\n * @returns {boolean}\r\n */\r\nBrowserSync.prototype.canSync = function (data, optPath) {\r\n data = data || {};\r\n if (data.override) {\r\n return true;\r\n }\r\n var canSync = true;\r\n if (optPath) {\r\n canSync = this.getOption(optPath);\r\n }\r\n return canSync && data.url === window.location.pathname;\r\n};\r\n/**\r\n * Helper to check if syncing is allowed\r\n * @returns {boolean}\r\n */\r\nBrowserSync.prototype.getOption = function (path) {\r\n if (path && path.match(/\\./)) {\r\n return getByPath(this.options, path);\r\n }\r\n else {\r\n var opt = this.options[path];\r\n if (isUndefined(opt)) {\r\n return false;\r\n }\r\n else {\r\n return opt;\r\n }\r\n }\r\n};\r\n/**\r\n * @type {Function}\r\n */\r\nmodule.exports = BrowserSync;\r\n/**\r\n * @param {String} val\r\n * @returns {boolean}\r\n */\r\nfunction isUndefined(val) {\r\n return \"undefined\" === typeof val;\r\n}\r\n/**\r\n * @param obj\r\n * @param path\r\n */\r\nfunction getByPath(obj, path) {\r\n for (var i = 0, tempPath = path.split(\".\"), len = tempPath.length; i < len; i++) {\r\n if (!obj || typeof obj !== \"object\") {\r\n return false;\r\n }\r\n obj = obj[tempPath[i]];\r\n }\r\n if (typeof obj === \"undefined\") {\r\n return false;\r\n }\r\n return obj;\r\n}\r\n\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar utils = __webpack_require__(4);\r\nvar emitter = __webpack_require__(7);\r\nvar $document = utils.getDocument();\r\n// Set the name of the hidden property and the change event for visibility\r\nvar hidden, visibilityChange;\r\nif (typeof $document.hidden !== \"undefined\") {\r\n // Opera 12.10 and Firefox 18 and later support\r\n hidden = \"hidden\";\r\n visibilityChange = \"visibilitychange\";\r\n}\r\nelse if (typeof $document.mozHidden !== \"undefined\") {\r\n hidden = \"mozHidden\";\r\n visibilityChange = \"mozvisibilitychange\";\r\n}\r\nelse if (typeof $document.msHidden !== \"undefined\") {\r\n hidden = \"msHidden\";\r\n visibilityChange = \"msvisibilitychange\";\r\n}\r\nelse if (typeof $document.webkitHidden !== \"undefined\") {\r\n hidden = \"webkitHidden\";\r\n visibilityChange = \"webkitvisibilitychange\";\r\n}\r\n// If the page is hidden, pause the video;\r\n// if the page is shown, play the video\r\nfunction handleVisibilityChange() {\r\n if ($document[hidden]) {\r\n emitter.emit(\"tab:hidden\");\r\n }\r\n else {\r\n emitter.emit(\"tab:visible\");\r\n }\r\n}\r\nif (typeof $document.addEventListener === \"undefined\" ||\r\n typeof $document[hidden] === \"undefined\") {\r\n //console.log('not supported');\r\n}\r\nelse {\r\n $document.addEventListener(visibilityChange, handleVisibilityChange, false);\r\n}\r\n\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar eventManager = __webpack_require__(12).manager;\r\nexports.plugins = {\r\n scroll: __webpack_require__(11),\r\n clicks: __webpack_require__(27),\r\n forms: __webpack_require__(28),\r\n location: __webpack_require__(32)\r\n};\r\n/**\r\n * Load plugins for enabled options\r\n * @param bs\r\n */\r\nexports.init = function (bs) {\r\n for (var name in exports.plugins) {\r\n if (bs.options.ghostMode[name]) {\r\n exports.plugins[name].init(bs, eventManager);\r\n }\r\n }\r\n};\r\n\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// index.min.js"," \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 \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\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.l = 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// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 33);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap c999e2f6d9a134306bac","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 0\n// module chunks = 0","/**\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 // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/debug/src/browser.js\n// module id = 1\n// module chunks = 0","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n var args = [].slice.call(arguments, 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/component-emitter/index.js\n// module id = 2\n// module chunks = 0","/**\n * Module dependencies.\n */\n\nvar keys = require('./keys');\nvar hasBinary = require('has-binary2');\nvar sliceBuffer = require('arraybuffer.slice');\nvar after = require('after');\nvar utf8 = require('./utf8');\n\nvar base64encoder;\nif (global && global.ArrayBuffer) {\n base64encoder = require('base64-arraybuffer');\n}\n\n/**\n * Check if we are running an android browser. That requires us to use\n * ArrayBuffer with polling transports...\n *\n * http://ghinda.net/jpeg-blob-ajax-android/\n */\n\nvar isAndroid = typeof navigator !== 'undefined' && /Android/i.test(navigator.userAgent);\n\n/**\n * Check if we are running in PhantomJS.\n * Uploading a Blob with PhantomJS does not work correctly, as reported here:\n * https://github.com/ariya/phantomjs/issues/11395\n * @type boolean\n */\nvar isPhantomJS = typeof navigator !== 'undefined' && /PhantomJS/i.test(navigator.userAgent);\n\n/**\n * When true, avoids using Blobs to encode payloads.\n * @type boolean\n */\nvar dontSendBlobs = isAndroid || isPhantomJS;\n\n/**\n * Current protocol version.\n */\n\nexports.protocol = 3;\n\n/**\n * Packet types.\n */\n\nvar packets = exports.packets = {\n open: 0 // non-ws\n , close: 1 // non-ws\n , ping: 2\n , pong: 3\n , message: 4\n , upgrade: 5\n , noop: 6\n};\n\nvar packetslist = keys(packets);\n\n/**\n * Premade error packet.\n */\n\nvar err = { type: 'error', data: 'parser error' };\n\n/**\n * Create a blob api even for blob builder when vendor prefixes exist\n */\n\nvar Blob = require('blob');\n\n/**\n * Encodes a packet.\n *\n * <packet type id> [ <data> ]\n *\n * Example:\n *\n * 5hello world\n * 3\n * 4\n *\n * Binary is encoded in an identical principle\n *\n * @api private\n */\n\nexports.encodePacket = function (packet, supportsBinary, utf8encode, callback) {\n if (typeof supportsBinary === 'function') {\n callback = supportsBinary;\n supportsBinary = false;\n }\n\n if (typeof utf8encode === 'function') {\n callback = utf8encode;\n utf8encode = null;\n }\n\n var data = (packet.data === undefined)\n ? undefined\n : packet.data.buffer || packet.data;\n\n if (global.ArrayBuffer && data instanceof ArrayBuffer) {\n return encodeArrayBuffer(packet, supportsBinary, callback);\n } else if (Blob && data instanceof global.Blob) {\n return encodeBlob(packet, supportsBinary, callback);\n }\n\n // might be an object with { base64: true, data: dataAsBase64String }\n if (data && data.base64) {\n return encodeBase64Object(packet, callback);\n }\n\n // Sending data as a utf-8 string\n var encoded = packets[packet.type];\n\n // data fragment is optional\n if (undefined !== packet.data) {\n encoded += utf8encode ? utf8.encode(String(packet.data), { strict: false }) : String(packet.data);\n }\n\n return callback('' + encoded);\n\n};\n\nfunction encodeBase64Object(packet, callback) {\n // packet data is an object { base64: true, data: dataAsBase64String }\n var message = 'b' + exports.packets[packet.type] + packet.data.data;\n return callback(message);\n}\n\n/**\n * Encode packet helpers for binary types\n */\n\nfunction encodeArrayBuffer(packet, supportsBinary, callback) {\n if (!supportsBinary) {\n return exports.encodeBase64Packet(packet, callback);\n }\n\n var data = packet.data;\n var contentArray = new Uint8Array(data);\n var resultBuffer = new Uint8Array(1 + data.byteLength);\n\n resultBuffer[0] = packets[packet.type];\n for (var i = 0; i < contentArray.length; i++) {\n resultBuffer[i+1] = contentArray[i];\n }\n\n return callback(resultBuffer.buffer);\n}\n\nfunction encodeBlobAsArrayBuffer(packet, supportsBinary, callback) {\n if (!supportsBinary) {\n return exports.encodeBase64Packet(packet, callback);\n }\n\n var fr = new FileReader();\n fr.onload = function() {\n packet.data = fr.result;\n exports.encodePacket(packet, supportsBinary, true, callback);\n };\n return fr.readAsArrayBuffer(packet.data);\n}\n\nfunction encodeBlob(packet, supportsBinary, callback) {\n if (!supportsBinary) {\n return exports.encodeBase64Packet(packet, callback);\n }\n\n if (dontSendBlobs) {\n return encodeBlobAsArrayBuffer(packet, supportsBinary, callback);\n }\n\n var length = new Uint8Array(1);\n length[0] = packets[packet.type];\n var blob = new Blob([length.buffer, packet.data]);\n\n return callback(blob);\n}\n\n/**\n * Encodes a packet with binary data in a base64 string\n *\n * @param {Object} packet, has `type` and `data`\n * @return {String} base64 encoded message\n */\n\nexports.encodeBase64Packet = function(packet, callback) {\n var message = 'b' + exports.packets[packet.type];\n if (Blob && packet.data instanceof global.Blob) {\n var fr = new FileReader();\n fr.onload = function() {\n var b64 = fr.result.split(',')[1];\n callback(message + b64);\n };\n return fr.readAsDataURL(packet.data);\n }\n\n var b64data;\n try {\n b64data = String.fromCharCode.apply(null, new Uint8Array(packet.data));\n } catch (e) {\n // iPhone Safari doesn't let you apply with typed arrays\n var typed = new Uint8Array(packet.data);\n var basic = new Array(typed.length);\n for (var i = 0; i < typed.length; i++) {\n basic[i] = typed[i];\n }\n b64data = String.fromCharCode.apply(null, basic);\n }\n message += global.btoa(b64data);\n return callback(message);\n};\n\n/**\n * Decodes a packet. Changes format to Blob if requested.\n *\n * @return {Object} with `type` and `data` (if any)\n * @api private\n */\n\nexports.decodePacket = function (data, binaryType, utf8decode) {\n if (data === undefined) {\n return err;\n }\n // String data\n if (typeof data === 'string') {\n if (data.charAt(0) === 'b') {\n return exports.decodeBase64Packet(data.substr(1), binaryType);\n }\n\n if (utf8decode) {\n data = tryDecode(data);\n if (data === false) {\n return err;\n }\n }\n var type = data.charAt(0);\n\n if (Number(type) != type || !packetslist[type]) {\n return err;\n }\n\n if (data.length > 1) {\n return { type: packetslist[type], data: data.substring(1) };\n } else {\n return { type: packetslist[type] };\n }\n }\n\n var asArray = new Uint8Array(data);\n var type = asArray[0];\n var rest = sliceBuffer(data, 1);\n if (Blob && binaryType === 'blob') {\n rest = new Blob([rest]);\n }\n return { type: packetslist[type], data: rest };\n};\n\nfunction tryDecode(data) {\n try {\n data = utf8.decode(data, { strict: false });\n } catch (e) {\n return false;\n }\n return data;\n}\n\n/**\n * Decodes a packet encoded in a base64 string\n *\n * @param {String} base64 encoded message\n * @return {Object} with `type` and `data` (if any)\n */\n\nexports.decodeBase64Packet = function(msg, binaryType) {\n var type = packetslist[msg.charAt(0)];\n if (!base64encoder) {\n return { type: type, data: { base64: true, data: msg.substr(1) } };\n }\n\n var data = base64encoder.decode(msg.substr(1));\n\n if (binaryType === 'blob' && Blob) {\n data = new Blob([data]);\n }\n\n return { type: type, data: data };\n};\n\n/**\n * Encodes multiple messages (payload).\n *\n * <length>:data\n *\n * Example:\n *\n * 11:hello world2:hi\n *\n * If any contents are binary, they will be encoded as base64 strings. Base64\n * encoded strings are marked with a b before the length specifier\n *\n * @param {Array} packets\n * @api private\n */\n\nexports.encodePayload = function (packets, supportsBinary, callback) {\n if (typeof supportsBinary === 'function') {\n callback = supportsBinary;\n supportsBinary = null;\n }\n\n var isBinary = hasBinary(packets);\n\n if (supportsBinary && isBinary) {\n if (Blob && !dontSendBlobs) {\n return exports.encodePayloadAsBlob(packets, callback);\n }\n\n return exports.encodePayloadAsArrayBuffer(packets, callback);\n }\n\n if (!packets.length) {\n return callback('0:');\n }\n\n function setLengthHeader(message) {\n return message.length + ':' + message;\n }\n\n function encodeOne(packet, doneCallback) {\n exports.encodePacket(packet, !isBinary ? false : supportsBinary, false, function(message) {\n doneCallback(null, setLengthHeader(message));\n });\n }\n\n map(packets, encodeOne, function(err, results) {\n return callback(results.join(''));\n });\n};\n\n/**\n * Async array map using after\n */\n\nfunction map(ary, each, done) {\n var result = new Array(ary.length);\n var next = after(ary.length, done);\n\n var eachWithIndex = function(i, el, cb) {\n each(el, function(error, msg) {\n result[i] = msg;\n cb(error, result);\n });\n };\n\n for (var i = 0; i < ary.length; i++) {\n eachWithIndex(i, ary[i], next);\n }\n}\n\n/*\n * Decodes data when a payload is maybe expected. Possible binary contents are\n * decoded from their base64 representation\n *\n * @param {String} data, callback method\n * @api public\n */\n\nexports.decodePayload = function (data, binaryType, callback) {\n if (typeof data !== 'string') {\n return exports.decodePayloadAsBinary(data, binaryType, callback);\n }\n\n if (typeof binaryType === 'function') {\n callback = binaryType;\n binaryType = null;\n }\n\n var packet;\n if (data === '') {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n var length = '', n, msg;\n\n for (var i = 0, l = data.length; i < l; i++) {\n var chr = data.charAt(i);\n\n if (chr !== ':') {\n length += chr;\n continue;\n }\n\n if (length === '' || (length != (n = Number(length)))) {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n msg = data.substr(i + 1, n);\n\n if (length != msg.length) {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n if (msg.length) {\n packet = exports.decodePacket(msg, binaryType, false);\n\n if (err.type === packet.type && err.data === packet.data) {\n // parser error in individual packet - ignoring payload\n return callback(err, 0, 1);\n }\n\n var ret = callback(packet, i + n, l);\n if (false === ret) return;\n }\n\n // advance cursor\n i += n;\n length = '';\n }\n\n if (length !== '') {\n // parser error - ignoring payload\n return callback(err, 0, 1);\n }\n\n};\n\n/**\n * Encodes multiple messages (payload) as binary.\n *\n * <1 = binary, 0 = string><number from 0-9><number from 0-9>[...]<number\n * 255><data>\n *\n * Example:\n * 1 3 255 1 2 3, if the binary contents are interpreted as 8 bit integers\n *\n * @param {Array} packets\n * @return {ArrayBuffer} encoded payload\n * @api private\n */\n\nexports.encodePayloadAsArrayBuffer = function(packets, callback) {\n if (!packets.length) {\n return callback(new ArrayBuffer(0));\n }\n\n function encodeOne(packet, doneCallback) {\n exports.encodePacket(packet, true, true, function(data) {\n return doneCallback(null, data);\n });\n }\n\n map(packets, encodeOne, function(err, encodedPackets) {\n var totalLength = encodedPackets.reduce(function(acc, p) {\n var len;\n if (typeof p === 'string'){\n len = p.length;\n } else {\n len = p.byteLength;\n }\n return acc + len.toString().length + len + 2; // string/binary identifier + separator = 2\n }, 0);\n\n var resultArray = new Uint8Array(totalLength);\n\n var bufferIndex = 0;\n encodedPackets.forEach(function(p) {\n var isString = typeof p === 'string';\n var ab = p;\n if (isString) {\n var view = new Uint8Array(p.length);\n for (var i = 0; i < p.length; i++) {\n view[i] = p.charCodeAt(i);\n }\n ab = view.buffer;\n }\n\n if (isString) { // not true binary\n resultArray[bufferIndex++] = 0;\n } else { // true binary\n resultArray[bufferIndex++] = 1;\n }\n\n var lenStr = ab.byteLength.toString();\n for (var i = 0; i < lenStr.length; i++) {\n resultArray[bufferIndex++] = parseInt(lenStr[i]);\n }\n resultArray[bufferIndex++] = 255;\n\n var view = new Uint8Array(ab);\n for (var i = 0; i < view.length; i++) {\n resultArray[bufferIndex++] = view[i];\n }\n });\n\n return callback(resultArray.buffer);\n });\n};\n\n/**\n * Encode as Blob\n */\n\nexports.encodePayloadAsBlob = function(packets, callback) {\n function encodeOne(packet, doneCallback) {\n exports.encodePacket(packet, true, true, function(encoded) {\n var binaryIdentifier = new Uint8Array(1);\n binaryIdentifier[0] = 1;\n if (typeof encoded === 'string') {\n var view = new Uint8Array(encoded.length);\n for (var i = 0; i < encoded.length; i++) {\n view[i] = encoded.charCodeAt(i);\n }\n encoded = view.buffer;\n binaryIdentifier[0] = 0;\n }\n\n var len = (encoded instanceof ArrayBuffer)\n ? encoded.byteLength\n : encoded.size;\n\n var lenStr = len.toString();\n var lengthAry = new Uint8Array(lenStr.length + 1);\n for (var i = 0; i < lenStr.length; i++) {\n lengthAry[i] = parseInt(lenStr[i]);\n }\n lengthAry[lenStr.length] = 255;\n\n if (Blob) {\n var blob = new Blob([binaryIdentifier.buffer, lengthAry.buffer, encoded]);\n doneCallback(null, blob);\n }\n });\n }\n\n map(packets, encodeOne, function(err, results) {\n return callback(new Blob(results));\n });\n};\n\n/*\n * Decodes data when a payload is maybe expected. Strings are decoded by\n * interpreting each byte as a key code for entries marked to start with 0. See\n * description of encodePayloadAsBinary\n *\n * @param {ArrayBuffer} data, callback method\n * @api public\n */\n\nexports.decodePayloadAsBinary = function (data, binaryType, callback) {\n if (typeof binaryType === 'function') {\n callback = binaryType;\n binaryType = null;\n }\n\n var bufferTail = data;\n var buffers = [];\n\n while (bufferTail.byteLength > 0) {\n var tailArray = new Uint8Array(bufferTail);\n var isString = tailArray[0] === 0;\n var msgLength = '';\n\n for (var i = 1; ; i++) {\n if (tailArray[i] === 255) break;\n\n // 310 = char length of Number.MAX_VALUE\n if (msgLength.length > 310) {\n return callback(err, 0, 1);\n }\n\n msgLength += tailArray[i];\n }\n\n bufferTail = sliceBuffer(bufferTail, 2 + msgLength.length);\n msgLength = parseInt(msgLength);\n\n var msg = sliceBuffer(bufferTail, 0, msgLength);\n if (isString) {\n try {\n msg = String.fromCharCode.apply(null, new Uint8Array(msg));\n } catch (e) {\n // iPhone Safari doesn't let you apply to typed arrays\n var typed = new Uint8Array(msg);\n msg = '';\n for (var i = 0; i < typed.length; i++) {\n msg += String.fromCharCode(typed[i]);\n }\n }\n }\n\n buffers.push(msg);\n bufferTail = sliceBuffer(bufferTail, msgLength);\n }\n\n var total = buffers.length;\n buffers.forEach(function(buffer, i) {\n callback(exports.decodePacket(buffer, binaryType, true), i, total);\n });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/engine.io-parser/lib/browser.js\n// module id = 3\n// module chunks = 0","\"use strict\";\n\nvar utils = exports;\n\n/**\n * @returns {window}\n */\nutils.getWindow = function() {\n return window;\n};\n\n/**\n * @returns {HTMLDocument}\n */\nutils.getDocument = function() {\n return document;\n};\n\n/**\n * @returns {HTMLElement}\n */\nutils.getBody = function() {\n return document.getElementsByTagName(\"body\")[0];\n};\n\n/**\n * Get the current x/y position crossbow\n * @returns {{x: *, y: *}}\n */\nutils.getBrowserScrollPosition = function() {\n var $window = exports.getWindow();\n var $document = exports.getDocument();\n var scrollX;\n var scrollY;\n var dElement = $document.documentElement;\n var dBody = $document.body;\n\n if ($window.pageYOffset !== undefined) {\n scrollX = $window.pageXOffset;\n scrollY = $window.pageYOffset;\n } else {\n scrollX = dElement.scrollLeft || dBody.scrollLeft || 0;\n scrollY = dElement.scrollTop || dBody.scrollTop || 0;\n }\n\n return {\n x: scrollX,\n y: scrollY\n };\n};\n\n/**\n * @returns {{x: number, y: number}}\n */\nutils.getScrollSpace = function() {\n var $document = exports.getDocument();\n var dElement = $document.documentElement;\n var dBody = $document.body;\n return {\n x: dBody.scrollHeight - dElement.clientWidth,\n y: dBody.scrollHeight - dElement.clientHeight\n };\n};\n\n/**\n * Saves scroll position into cookies\n */\nutils.saveScrollPosition = function() {\n var pos = utils.getBrowserScrollPosition();\n pos = [pos.x, pos.y];\n utils.getDocument.cookie = \"bs_scroll_pos=\" + pos.join(\",\");\n};\n\n/**\n * Restores scroll position from cookies\n */\nutils.restoreScrollPosition = function() {\n var pos = utils\n .getDocument()\n .cookie.replace(\n /(?:(?:^|.*;\\s*)bs_scroll_pos\\s*\\=\\s*([^;]*).*$)|^.*$/,\n \"$1\"\n )\n .split(\",\");\n utils.getWindow().scrollTo(pos[0], pos[1]);\n};\n\n/**\n * @param tagName\n * @param elem\n * @returns {*|number}\n */\nutils.getElementIndex = function(tagName, elem) {\n var allElems = utils.getDocument().getElementsByTagName(tagName);\n return Array.prototype.indexOf.call(allElems, elem);\n};\n\n/**\n * Force Change event on radio & checkboxes (IE)\n */\nutils.forceChange = function(elem) {\n elem.blur();\n elem.focus();\n};\n\n/**\n * @param elem\n * @returns {{tagName: (elem.tagName|*), index: *}}\n */\nutils.getElementData = function(elem) {\n var tagName = elem.tagName;\n var index = utils.getElementIndex(tagName, elem);\n return {\n tagName: tagName,\n index: index\n };\n};\n\n/**\n * @param {string} tagName\n * @param {number} index\n */\nutils.getSingleElement = function(tagName, index) {\n var elems = utils.getDocument().getElementsByTagName(tagName);\n return elems[index];\n};\n\n/**\n * Get the body element\n */\nutils.getBody = function() {\n return utils.getDocument().getElementsByTagName(\"body\")[0];\n};\n\n/**\n * @param {{x: number, y: number}} pos\n */\nutils.setScroll = function(pos) {\n utils.getWindow().scrollTo(pos.x, pos.y);\n};\n\n/**\n * Hard reload\n */\nutils.reloadBrowser = function() {\n utils.getWindow().location.reload(true);\n};\n\n/**\n * Foreach polyfill\n * @param coll\n * @param fn\n */\nutils.forEach = function(coll, fn) {\n for (var i = 0, n = coll.length; i < n; i += 1) {\n fn(coll[i], i, coll);\n }\n};\n\n/**\n * Are we dealing with old IE?\n * @returns {boolean}\n */\nutils.isOldIe = function() {\n return typeof utils.getWindow().attachEvent !== \"undefined\";\n};\n\n/**\n * Split the URL information\n * @returns {object}\n */\nutils.getLocation = function(url) {\n var location = utils.getDocument().createElement(\"a\");\n location.href = url;\n\n if (location.host === \"\") {\n location.href = location.href;\n }\n\n return location;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/browser.utils.js","/**\r\n * Compiles a querystring\r\n * Returns string representation of the object\r\n *\r\n * @param {Object}\r\n * @api private\r\n */\r\n\r\nexports.encode = function (obj) {\r\n var str = '';\r\n\r\n for (var i in obj) {\r\n if (obj.hasOwnProperty(i)) {\r\n if (str.length) str += '&';\r\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\r\n }\r\n }\r\n\r\n return str;\r\n};\r\n\r\n/**\r\n * Parses a simple querystring into an object\r\n *\r\n * @param {String} qs\r\n * @api private\r\n */\r\n\r\nexports.decode = function(qs){\r\n var qry = {};\r\n var pairs = qs.split('&');\r\n for (var i = 0, l = pairs.length; i < l; i++) {\r\n var pair = pairs[i].split('=');\r\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\r\n }\r\n return qry;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/parseqs/index.js\n// module id = 5\n// module chunks = 0","\nmodule.exports = function(a, b){\n var fn = function(){};\n fn.prototype = b.prototype;\n a.prototype = new fn;\n a.prototype.constructor = a;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/component-inherit/index.js\n// module id = 6\n// module chunks = 0","\"use strict\";\n\nexports.events = {};\n\n/**\n * @param name\n * @param data\n */\nexports.emit = function(name, data) {\n var event = exports.events[name];\n var listeners;\n if (event && event.listeners) {\n listeners = event.listeners;\n for (var i = 0, n = listeners.length; i < n; i += 1) {\n listeners[i](data);\n }\n }\n};\n\n/**\n * @param name\n * @param func\n */\nexports.on = function(name, func) {\n var events = exports.events;\n if (!events[name]) {\n events[name] = {\n listeners: [func]\n };\n } else {\n events[name].listeners.push(func);\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/emitter.js","\n/**\n * Module dependencies.\n */\n\nvar debug = require('debug')('socket.io-parser');\nvar Emitter = require('component-emitter');\nvar hasBin = require('has-binary2');\nvar binary = require('./binary');\nvar isBuf = require('./is-buffer');\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nexports.protocol = 4;\n\n/**\n * Packet types.\n *\n * @api public\n */\n\nexports.types = [\n 'CONNECT',\n 'DISCONNECT',\n 'EVENT',\n 'ACK',\n 'ERROR',\n 'BINARY_EVENT',\n 'BINARY_ACK'\n];\n\n/**\n * Packet type `connect`.\n *\n * @api public\n */\n\nexports.CONNECT = 0;\n\n/**\n * Packet type `disconnect`.\n *\n * @api public\n */\n\nexports.DISCONNECT = 1;\n\n/**\n * Packet type `event`.\n *\n * @api public\n */\n\nexports.EVENT = 2;\n\n/**\n * Packet type `ack`.\n *\n * @api public\n */\n\nexports.ACK = 3;\n\n/**\n * Packet type `error`.\n *\n * @api public\n */\n\nexports.ERROR = 4;\n\n/**\n * Packet type 'binary event'\n *\n * @api public\n */\n\nexports.BINARY_EVENT = 5;\n\n/**\n * Packet type `binary ack`. For acks with binary arguments.\n *\n * @api public\n */\n\nexports.BINARY_ACK = 6;\n\n/**\n * Encoder constructor.\n *\n * @api public\n */\n\nexports.Encoder = Encoder;\n\n/**\n * Decoder constructor.\n *\n * @api public\n */\n\nexports.Decoder = Decoder;\n\n/**\n * A socket.io Encoder instance\n *\n * @api public\n */\n\nfunction Encoder() {}\n\n/**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n * @param {Function} callback - function to handle encodings (likely engine.write)\n * @return Calls callback with Array of encodings\n * @api public\n */\n\nEncoder.prototype.encode = function(obj, callback){\n if ((obj.type === exports.EVENT || obj.type === exports.ACK) && hasBin(obj.data)) {\n obj.type = obj.type === exports.EVENT ? exports.BINARY_EVENT : exports.BINARY_ACK;\n }\n\n debug('encoding packet %j', obj);\n\n if (exports.BINARY_EVENT === obj.type || exports.BINARY_ACK === obj.type) {\n encodeAsBinary(obj, callback);\n }\n else {\n var encoding = encodeAsString(obj);\n callback([encoding]);\n }\n};\n\n/**\n * Encode packet as string.\n *\n * @param {Object} packet\n * @return {String} encoded\n * @api private\n */\n\nfunction encodeAsString(obj) {\n\n // first is type\n var str = '' + obj.type;\n\n // attachments if we have them\n if (exports.BINARY_EVENT === obj.type || exports.BINARY_ACK === obj.type) {\n str += obj.attachments + '-';\n }\n\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && '/' !== obj.nsp) {\n str += obj.nsp + ',';\n }\n\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data);\n }\n\n debug('encoded %j as %s', obj, str);\n return str;\n}\n\n/**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n *\n * @param {Object} packet\n * @return {Buffer} encoded\n * @api private\n */\n\nfunction encodeAsBinary(obj, callback) {\n\n function writeEncoding(bloblessData) {\n var deconstruction = binary.deconstructPacket(bloblessData);\n var pack = encodeAsString(deconstruction.packet);\n var buffers = deconstruction.buffers;\n\n buffers.unshift(pack); // add packet info to beginning of data list\n callback(buffers); // write all the buffers\n }\n\n binary.removeBlobs(obj, writeEncoding);\n}\n\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n * @api public\n */\n\nfunction Decoder() {\n this.reconstructor = null;\n}\n\n/**\n * Mix in `Emitter` with Decoder.\n */\n\nEmitter(Decoder.prototype);\n\n/**\n * Decodes an ecoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n * @return {Object} packet\n * @api public\n */\n\nDecoder.prototype.add = function(obj) {\n var packet;\n if (typeof obj === 'string') {\n packet = decodeString(obj);\n if (exports.BINARY_EVENT === packet.type || exports.BINARY_ACK === packet.type) { // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n\n // no attachments, labeled binary but no binary data to follow\n if (this.reconstructor.reconPack.attachments === 0) {\n this.emit('decoded', packet);\n }\n } else { // non-binary full packet\n this.emit('decoded', packet);\n }\n }\n else if (isBuf(obj) || obj.base64) { // raw binary data\n if (!this.reconstructor) {\n throw new Error('got binary data when not reconstructing a packet');\n } else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) { // received final buffer\n this.reconstructor = null;\n this.emit('decoded', packet);\n }\n }\n }\n else {\n throw new Error('Unknown type: ' + obj);\n }\n};\n\n/**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n * @api private\n */\n\nfunction decodeString(str) {\n var i = 0;\n // look up type\n var p = {\n type: Number(str.charAt(0))\n };\n\n if (null == exports.types[p.type]) return error();\n\n // look up attachments if type binary\n if (exports.BINARY_EVENT === p.type || exports.BINARY_ACK === p.type) {\n var buf = '';\n while (str.charAt(++i) !== '-') {\n buf += str.charAt(i);\n if (i == str.length) break;\n }\n if (buf != Number(buf) || str.charAt(i) !== '-') {\n throw new Error('Illegal attachments');\n }\n p.attachments = Number(buf);\n }\n\n // look up namespace (if any)\n if ('/' === str.charAt(i + 1)) {\n p.nsp = '';\n while (++i) {\n var c = str.charAt(i);\n if (',' === c) break;\n p.nsp += c;\n if (i === str.length) break;\n }\n } else {\n p.nsp = '/';\n }\n\n // look up id\n var next = str.charAt(i + 1);\n if ('' !== next && Number(next) == next) {\n p.id = '';\n while (++i) {\n var c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n p.id += str.charAt(i);\n if (i === str.length) break;\n }\n p.id = Number(p.id);\n }\n\n // look up json data\n if (str.charAt(++i)) {\n p = tryParse(p, str.substr(i));\n }\n\n debug('decoded %s as %j', str, p);\n return p;\n}\n\nfunction tryParse(p, str) {\n try {\n p.data = JSON.parse(str);\n } catch(e){\n return error();\n }\n return p; \n}\n\n/**\n * Deallocates a parser's resources\n *\n * @api public\n */\n\nDecoder.prototype.destroy = function() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n }\n};\n\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n * @api private\n */\n\nfunction BinaryReconstructor(packet) {\n this.reconPack = packet;\n this.buffers = [];\n}\n\n/**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n * @api private\n */\n\nBinaryReconstructor.prototype.takeBinaryData = function(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) { // done with buffer list\n var packet = binary.reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n};\n\n/**\n * Cleans up binary packet reconstruction variables.\n *\n * @api private\n */\n\nBinaryReconstructor.prototype.finishedReconstruction = function() {\n this.reconPack = null;\n this.buffers = [];\n};\n\nfunction error() {\n return {\n type: exports.ERROR,\n data: 'parser error'\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/socket.io-parser/index.js\n// module id = 8\n// module chunks = 0","// browser shim for xmlhttprequest module\n\nvar hasCORS = require('has-cors');\n\nmodule.exports = function (opts) {\n var xdomain = opts.xdomain;\n\n // scheme must be same when usign XDomainRequest\n // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx\n var xscheme = opts.xscheme;\n\n // XDomainRequest has a flow of not sending cookie, therefore it should be disabled as a default.\n // https://github.com/Automattic/engine.io-client/pull/217\n var enablesXDR = opts.enablesXDR;\n\n // XMLHttpRequest can be disabled on IE\n try {\n if ('undefined' !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n } catch (e) { }\n\n // Use XDomainRequest for IE8 if enablesXDR is true\n // because loading bar keeps flashing when using jsonp-polling\n // https://github.com/yujiosaka/socke.io-ie8-loading-example\n try {\n if ('undefined' !== typeof XDomainRequest && !xscheme && enablesXDR) {\n return new XDomainRequest();\n }\n } catch (e) { }\n\n if (!xdomain) {\n try {\n return new global[['Active'].concat('Object').join('X')]('Microsoft.XMLHTTP');\n } catch (e) { }\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/engine.io-client/lib/xmlhttprequest.js\n// module id = 9\n// module chunks = 0","/**\n * Module dependencies.\n */\n\nvar parser = require('engine.io-parser');\nvar Emitter = require('component-emitter');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Transport;\n\n/**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\n */\n\nfunction Transport (opts) {\n this.path = opts.path;\n this.hostname = opts.hostname;\n this.port = opts.port;\n this.secure = opts.secure;\n this.query = opts.query;\n this.timestampParam = opts.timestampParam;\n this.timestampRequests = opts.timestampRequests;\n this.readyState = '';\n this.agent = opts.agent || false;\n this.socket = opts.socket;\n this.enablesXDR = opts.enablesXDR;\n\n // SSL options for Node.js client\n this.pfx = opts.pfx;\n this.key = opts.key;\n this.passphrase = opts.passphrase;\n this.cert = opts.cert;\n this.ca = opts.ca;\n this.ciphers = opts.ciphers;\n this.rejectUnauthorized = opts.rejectUnauthorized;\n this.forceNode = opts.forceNode;\n\n // other options for Node.js client\n this.extraHeaders = opts.extraHeaders;\n this.localAddress = opts.localAddress;\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Transport.prototype);\n\n/**\n * Emits an error.\n *\n * @param {String} str\n * @return {Transport} for chaining\n * @api public\n */\n\nTransport.prototype.onError = function (msg, desc) {\n var err = new Error(msg);\n err.type = 'TransportError';\n err.description = desc;\n this.emit('error', err);\n return this;\n};\n\n/**\n * Opens the transport.\n *\n * @api public\n */\n\nTransport.prototype.open = function () {\n if ('closed' === this.readyState || '' === this.readyState) {\n this.readyState = 'opening';\n this.doOpen();\n }\n\n return this;\n};\n\n/**\n * Closes the transport.\n *\n * @api private\n */\n\nTransport.prototype.close = function () {\n if ('opening' === this.readyState || 'open' === this.readyState) {\n this.doClose();\n this.onClose();\n }\n\n return this;\n};\n\n/**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api private\n */\n\nTransport.prototype.send = function (packets) {\n if ('open' === this.readyState) {\n this.write(packets);\n } else {\n throw new Error('Transport not open');\n }\n};\n\n/**\n * Called upon open\n *\n * @api private\n */\n\nTransport.prototype.onOpen = function () {\n this.readyState = 'open';\n this.writable = true;\n this.emit('open');\n};\n\n/**\n * Called with data.\n *\n * @param {String} data\n * @api private\n */\n\nTransport.prototype.onData = function (data) {\n var packet = parser.decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n};\n\n/**\n * Called with a decoded packet.\n */\n\nTransport.prototype.onPacket = function (packet) {\n this.emit('packet', packet);\n};\n\n/**\n * Called upon close.\n *\n * @api private\n */\n\nTransport.prototype.onClose = function () {\n this.readyState = 'closed';\n this.emit('close');\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/engine.io-client/lib/transport.js\n// module id = 10\n// module chunks = 0","\"use strict\";\n\n/**\n * This is the plugin for syncing scroll between devices\n * @type {string}\n */\nvar WINDOW_EVENT_NAME = \"scroll\";\nvar ELEMENT_EVENT_NAME = \"scroll:element\";\nvar OPT_PATH = \"ghostMode.scroll\";\nvar utils;\n\nexports.canEmitEvents = true;\n\n/**\n * @param {BrowserSync} bs\n * @param eventManager\n */\nexports.init = function(bs, eventManager) {\n utils = bs.utils;\n var opts = bs.options;\n\n /**\n * Window Scroll events\n */\n eventManager.addEvent(window, WINDOW_EVENT_NAME, exports.browserEvent(bs));\n bs.socket.on(WINDOW_EVENT_NAME, exports.socketEvent(bs));\n\n /**\n * element Scroll Events\n */\n var cache = {};\n addElementScrollEvents(\"scrollElements\", false);\n addElementScrollEvents(\"scrollElementMapping\", true);\n bs.socket.on(ELEMENT_EVENT_NAME, exports.socketEventForElement(bs, cache));\n\n function addElementScrollEvents(key, map) {\n if (\n !opts[key] ||\n !opts[key].length ||\n !(\"querySelectorAll\" in document)\n ) {\n return;\n }\n utils.forEach(opts[key], function(selector) {\n var elems = document.querySelectorAll(selector) || [];\n utils.forEach(elems, function(elem) {\n var data = utils.getElementData(elem);\n data.cacheSelector = data.tagName + \":\" + data.index;\n data.map = map;\n cache[data.cacheSelector] = elem;\n eventManager.addEvent(\n elem,\n WINDOW_EVENT_NAME,\n exports.browserEventForElement(bs, elem, data)\n );\n });\n });\n }\n};\n\n/**\n * @param {BrowserSync} bs\n */\nexports.socketEvent = function(bs) {\n return function(data) {\n if (!bs.canSync(data, OPT_PATH)) {\n return false;\n }\n\n var scrollSpace = utils.getScrollSpace();\n\n exports.canEmitEvents = false;\n\n if (bs.options && bs.options.scrollProportionally) {\n return window.scrollTo(\n 0,\n scrollSpace.y * data.position.proportional\n ); // % of y axis of scroll to px\n } else {\n return window.scrollTo(0, data.position.raw.y);\n }\n };\n};\n\n/**\n * @param bs\n */\nexports.socketEventForElement = function(bs, cache) {\n return function(data) {\n if (!bs.canSync(data, OPT_PATH)) {\n return false;\n }\n\n exports.canEmitEvents = false;\n\n function scrollOne(selector, pos) {\n if (cache[selector]) {\n cache[selector].scrollTop = pos;\n }\n }\n\n if (data.map) {\n return Object.keys(cache).forEach(function(key) {\n scrollOne(key, data.position);\n });\n }\n\n scrollOne(data.elem.cacheSelector, data.position);\n };\n};\n\n/**\n * @param bs\n */\nexports.browserEventForElement = function(bs, elem, data) {\n return function() {\n var canSync = exports.canEmitEvents;\n if (canSync) {\n bs.socket.emit(ELEMENT_EVENT_NAME, {\n position: elem.scrollTop,\n elem: data,\n map: data.map\n });\n }\n exports.canEmitEvents = true;\n };\n};\n\nexports.browserEvent = function(bs) {\n return function() {\n var canSync = exports.canEmitEvents;\n\n if (canSync) {\n bs.socket.emit(WINDOW_EVENT_NAME, {\n position: exports.getScrollPosition()\n });\n }\n\n exports.canEmitEvents = true;\n };\n};\n\n/**\n * @returns {{raw: number, proportional: number}}\n */\nexports.getScrollPosition = function() {\n var pos = utils.getBrowserScrollPosition();\n return {\n raw: pos, // Get px of x and y axis of scroll\n proportional: exports.getScrollTopPercentage(pos) // Get % of y axis of scroll\n };\n};\n\n/**\n * @param {{x: number, y: number}} scrollSpace\n * @param scrollPosition\n * @returns {{x: number, y: number}}\n */\nexports.getScrollPercentage = function(scrollSpace, scrollPosition) {\n var x = scrollPosition.x / scrollSpace.x;\n var y = scrollPosition.y / scrollSpace.y;\n\n return {\n x: x || 0,\n y: y\n };\n};\n\n/**\n * Get just the percentage of Y axis of scroll\n * @returns {number}\n */\nexports.getScrollTopPercentage = function(pos) {\n var scrollSpace = utils.getScrollSpace();\n var percentage = exports.getScrollPercentage(scrollSpace, pos);\n return percentage.y;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/ghostmode.scroll.js","exports._ElementCache = function() {\n var cache = {},\n guidCounter = 1,\n expando = \"data\" + new Date().getTime();\n\n this.getData = function(elem) {\n var guid = elem[expando];\n if (!guid) {\n guid = elem[expando] = guidCounter++;\n cache[guid] = {};\n }\n return cache[guid];\n };\n\n this.removeData = function(elem) {\n var guid = elem[expando];\n if (!guid) return;\n delete cache[guid];\n try {\n delete elem[expando];\n } catch (e) {\n if (elem.removeAttribute) {\n elem.removeAttribute(expando);\n }\n }\n };\n};\n\n/**\n * Fix an event\n * @param event\n * @returns {*}\n */\nexports._fixEvent = function(event) {\n function returnTrue() {\n return true;\n }\n\n function returnFalse() {\n return false;\n }\n\n if (!event || !event.stopPropagation) {\n var old = event || window.event;\n\n // Clone the old object so that we can modify the values\n event = {};\n\n for (var prop in old) {\n event[prop] = old[prop];\n }\n\n // The event occurred on this element\n if (!event.target) {\n event.target = event.srcElement || document;\n }\n\n // Handle which other element the event is related to\n event.relatedTarget =\n event.fromElement === event.target\n ? event.toElement\n : event.fromElement;\n\n // Stop the default browser action\n event.preventDefault = function() {\n event.returnValue = false;\n event.isDefaultPrevented = returnTrue;\n };\n\n event.isDefaultPrevented = returnFalse;\n\n // Stop the event from bubbling\n event.stopPropagation = function() {\n event.cancelBubble = true;\n event.isPropagationStopped = returnTrue;\n };\n\n event.isPropagationStopped = returnFalse;\n\n // Stop the event from bubbling and executing other handlers\n event.stopImmediatePropagation = function() {\n this.isImmediatePropagationStopped = returnTrue;\n this.stopPropagation();\n };\n\n event.isImmediatePropagationStopped = returnFalse;\n\n // Handle mouse position\n if (event.clientX != null) {\n var doc = document.documentElement,\n body = document.body;\n\n event.pageX =\n event.clientX +\n ((doc && doc.scrollLeft) || (body && body.scrollLeft) || 0) -\n ((doc && doc.clientLeft) || (body && body.clientLeft) || 0);\n event.pageY =\n event.clientY +\n ((doc && doc.scrollTop) || (body && body.scrollTop) || 0) -\n ((doc && doc.clientTop) || (body && body.clientTop) || 0);\n }\n\n // Handle key presses\n event.which = event.charCode || event.keyCode;\n\n // Fix button for mouse clicks:\n // 0 == left; 1 == middle; 2 == right\n if (event.button != null) {\n event.button =\n event.button & 1\n ? 0\n : event.button & 4 ? 1 : event.button & 2 ? 2 : 0;\n }\n }\n\n return event;\n};\n\n/**\n * @constructor\n */\nexports._EventManager = function(cache) {\n var nextGuid = 1;\n\n this.addEvent = function(elem, type, fn) {\n var data = cache.getData(elem);\n\n if (!data.handlers) data.handlers = {};\n\n if (!data.handlers[type]) data.handlers[type] = [];\n\n if (!fn.guid) fn.guid = nextGuid++;\n\n data.handlers[type].push(fn);\n\n if (!data.dispatcher) {\n data.disabled = false;\n data.dispatcher = function(event) {\n if (data.disabled) return;\n event = exports._fixEvent(event);\n\n var handlers = data.handlers[event.type];\n if (handlers) {\n for (var n = 0; n < handlers.length; n++) {\n handlers[n].call(elem, event);\n }\n }\n };\n }\n\n if (data.handlers[type].length == 1) {\n if (document.addEventListener) {\n elem.addEventListener(type, data.dispatcher, false);\n } else if (document.attachEvent) {\n elem.attachEvent(\"on\" + type, data.dispatcher);\n }\n }\n };\n\n function tidyUp(elem, type) {\n function isEmpty(object) {\n for (var prop in object) {\n return false;\n }\n return true;\n }\n\n var data = cache.getData(elem);\n\n if (data.handlers[type].length === 0) {\n delete data.handlers[type];\n\n if (document.removeEventListener) {\n elem.removeEventListener(type, data.dispatcher, false);\n } else if (document.detachEvent) {\n elem.detachEvent(\"on\" + type, data.dispatcher);\n }\n }\n\n if (isEmpty(data.handlers)) {\n delete data.handlers;\n delete data.dispatcher;\n }\n\n if (isEmpty(data)) {\n cache.removeData(elem);\n }\n }\n\n this.removeEvent = function(elem, type, fn) {\n var data = cache.getData(elem);\n\n if (!data.handlers) return;\n\n var removeType = function(t) {\n data.handlers[t] = [];\n tidyUp(elem, t);\n };\n\n if (!type) {\n for (var t in data.handlers) removeType(t);\n return;\n }\n\n var handlers = data.handlers[type];\n if (!handlers) return;\n\n if (!fn) {\n removeType(type);\n return;\n }\n\n if (fn.guid) {\n for (var n = 0; n < handlers.length; n++) {\n if (handlers[n].guid === fn.guid) {\n handlers.splice(n--, 1);\n }\n }\n }\n tidyUp(elem, type);\n };\n\n this.proxy = function(context, fn) {\n if (!fn.guid) {\n fn.guid = nextGuid++;\n }\n var ret = function() {\n return fn.apply(context, arguments);\n };\n ret.guid = fn.guid;\n return ret;\n };\n};\n\n/**\n * Trigger a click on an element\n * @param elem\n */\nexports.triggerClick = function(elem) {\n var evObj;\n\n if (document.createEvent) {\n window.setTimeout(function() {\n evObj = document.createEvent(\"MouseEvents\");\n evObj.initEvent(\"click\", true, true);\n elem.dispatchEvent(evObj);\n }, 0);\n } else {\n window.setTimeout(function() {\n if (document.createEventObject) {\n evObj = document.createEventObject();\n evObj.cancelBubble = true;\n elem.fireEvent(\"on\" + \"click\", evObj);\n }\n }, 0);\n }\n};\n\nvar cache = new exports._ElementCache();\nvar eventManager = new exports._EventManager(cache);\n\neventManager.triggerClick = exports.triggerClick;\n\nexports.manager = eventManager;\n\n\n\n// WEBPACK FOOTER //\n// ./lib/events.js","var socket = require(\"socket.io-client\");\n\n/**\n * @type {{emit: emit, on: on}}\n */\nvar socketConfig = window.___browserSync___.socketConfig;\nvar socketUrl = window.___browserSync___.socketUrl;\nvar io = socket(socketUrl, socketConfig);\n\n/**\n * *****BACK-COMPAT*******\n * Scripts that come after Browsersync may rely on the previous window.___browserSync___.socket\n */\nwindow.___browserSync___.socket = io;\n\n/**\n * @returns {string}\n */\nexports.getPath = function() {\n return window.location.pathname;\n};\n/**\n * Alias for socket.emit\n * @param name\n * @param data\n */\nexports.emit = function(name, data) {\n if (io && io.emit) {\n // send relative path of where the event is sent\n data.url = exports.getPath();\n io.emit(name, data);\n }\n};\n\n/**\n * Alias for socket.on\n * @param name\n * @param func\n */\nexports.on = function(name, func) {\n io.on(name, func);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/socket.js","/**\r\n * Parses an URI\r\n *\r\n * @author Steven Levithan <stevenlevithan.com> (MIT license)\r\n * @api private\r\n */\r\n\r\nvar re = /^(?:(?![^:@]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\r\n\r\nvar parts = [\r\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\r\n];\r\n\r\nmodule.exports = function parseuri(str) {\r\n var src = str,\r\n b = str.indexOf('['),\r\n e = str.indexOf(']');\r\n\r\n if (b != -1 && e != -1) {\r\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\r\n }\r\n\r\n var m = re.exec(str || ''),\r\n uri = {},\r\n i = 14;\r\n\r\n while (i--) {\r\n uri[parts[i]] = m[i] || '';\r\n }\r\n\r\n if (b != -1 && e != -1) {\r\n uri.source = src;\r\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\r\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\r\n uri.ipv6uri = true;\r\n }\r\n\r\n return uri;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/parseuri/index.js\n// module id = 14\n// module chunks = 0","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/process/browser.js\n// module id = 15\n// module chunks = 0","/* global Blob File */\n\n/*\n * Module requirements.\n */\n\nvar isArray = require('isarray');\n\nvar toString = Object.prototype.toString;\nvar withNativeBlob = typeof global.Blob === 'function' || toString.call(global.Blob) === '[object BlobConstructor]';\nvar withNativeFile = typeof global.File === 'function' || toString.call(global.File) === '[object FileConstructor]';\n\n/**\n * Module exports.\n */\n\nmodule.exports = hasBinary;\n\n/**\n * Checks for binary data.\n *\n * Supports Buffer, ArrayBuffer, Blob and File.\n *\n * @param {Object} anything\n * @api public\n */\n\nfunction hasBinary (obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n if (isArray(obj)) {\n for (var i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n\n if ((typeof global.Buffer === 'function' && global.Buffer.isBuffer && global.Buffer.isBuffer(obj)) ||\n (typeof global.ArrayBuffer === 'function' && obj instanceof ArrayBuffer) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File)\n ) {\n return true;\n }\n\n // see: https://github.com/Automattic/has-binary/pull/4\n if (obj.toJSON && typeof obj.toJSON === 'function' && arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n\n return false;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/has-binary2/index.js\n// module id = 16\n// module chunks = 0","\nmodule.exports = isBuf;\n\n/**\n * Returns true if obj is a buffer or an arraybuffer.\n *\n * @api private\n */\n\nfunction isBuf(obj) {\n return (global.Buffer && global.Buffer.isBuffer(obj)) ||\n (global.ArrayBuffer && obj instanceof ArrayBuffer);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/socket.io-parser/is-buffer.js\n// module id = 17\n// module chunks = 0","\n/**\n * Module dependencies.\n */\n\nvar eio = require('engine.io-client');\nvar Socket = require('./socket');\nvar Emitter = require('component-emitter');\nvar parser = require('socket.io-parser');\nvar on = require('./on');\nvar bind = require('component-bind');\nvar debug = require('debug')('socket.io-client:manager');\nvar indexOf = require('indexof');\nvar Backoff = require('backo2');\n\n/**\n * IE6+ hasOwnProperty\n */\n\nvar has = Object.prototype.hasOwnProperty;\n\n/**\n * Module exports\n */\n\nmodule.exports = Manager;\n\n/**\n * `Manager` constructor.\n *\n * @param {String} engine instance or engine uri/opts\n * @param {Object} options\n * @api public\n */\n\nfunction Manager (uri, opts) {\n if (!(this instanceof Manager)) return new Manager(uri, opts);\n if (uri && ('object' === typeof uri)) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n\n opts.path = opts.path || '/socket.io';\n this.nsps = {};\n this.subs = [];\n this.opts = opts;\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor(opts.randomizationFactor || 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor()\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this.readyState = 'closed';\n this.uri = uri;\n this.connecting = [];\n this.lastPing = null;\n this.encoding = false;\n this.packetBuffer = [];\n var _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this.autoConnect = opts.autoConnect !== false;\n if (this.autoConnect) this.open();\n}\n\n/**\n * Propagate given event to sockets and emit on `this`\n *\n * @api private\n */\n\nManager.prototype.emitAll = function () {\n this.emit.apply(this, arguments);\n for (var nsp in this.nsps) {\n if (has.call(this.nsps, nsp)) {\n this.nsps[nsp].emit.apply(this.nsps[nsp], arguments);\n }\n }\n};\n\n/**\n * Update `socket.id` of all sockets\n *\n * @api private\n */\n\nManager.prototype.updateSocketIds = function () {\n for (var nsp in this.nsps) {\n if (has.call(this.nsps, nsp)) {\n this.nsps[nsp].id = this.generateId(nsp);\n }\n }\n};\n\n/**\n * generate `socket.id` for the given `nsp`\n *\n * @param {String} nsp\n * @return {String}\n * @api private\n */\n\nManager.prototype.generateId = function (nsp) {\n return (nsp === '/' ? '' : (nsp + '#')) + this.engine.id;\n};\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Manager.prototype);\n\n/**\n * Sets the `reconnection` config.\n *\n * @param {Boolean} true/false if it should automatically reconnect\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnection = function (v) {\n if (!arguments.length) return this._reconnection;\n this._reconnection = !!v;\n return this;\n};\n\n/**\n * Sets the reconnection attempts config.\n *\n * @param {Number} max reconnection attempts before giving up\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionAttempts = function (v) {\n if (!arguments.length) return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n};\n\n/**\n * Sets the delay between reconnections.\n *\n * @param {Number} delay\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionDelay = function (v) {\n if (!arguments.length) return this._reconnectionDelay;\n this._reconnectionDelay = v;\n this.backoff && this.backoff.setMin(v);\n return this;\n};\n\nManager.prototype.randomizationFactor = function (v) {\n if (!arguments.length) return this._randomizationFactor;\n this._randomizationFactor = v;\n this.backoff && this.backoff.setJitter(v);\n return this;\n};\n\n/**\n * Sets the maximum delay between reconnections.\n *\n * @param {Number} delay\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.reconnectionDelayMax = function (v) {\n if (!arguments.length) return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n this.backoff && this.backoff.setMax(v);\n return this;\n};\n\n/**\n * Sets the connection timeout. `false` to disable\n *\n * @return {Manager} self or value\n * @api public\n */\n\nManager.prototype.timeout = function (v) {\n if (!arguments.length) return this._timeout;\n this._timeout = v;\n return this;\n};\n\n/**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @api private\n */\n\nManager.prototype.maybeReconnectOnOpen = function () {\n // Only try to reconnect if it's the first time we're connecting\n if (!this.reconnecting && this._reconnection && this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n};\n\n/**\n * Sets the current transport `socket`.\n *\n * @param {Function} optional, callback\n * @return {Manager} self\n * @api public\n */\n\nManager.prototype.open =\nManager.prototype.connect = function (fn, opts) {\n debug('readyState %s', this.readyState);\n if (~this.readyState.indexOf('open')) return this;\n\n debug('opening %s', this.uri);\n this.engine = eio(this.uri, this.opts);\n var socket = this.engine;\n var self = this;\n this.readyState = 'opening';\n this.skipReconnect = false;\n\n // emit `open`\n var openSub = on(socket, 'open', function () {\n self.onopen();\n fn && fn();\n });\n\n // emit `connect_error`\n var errorSub = on(socket, 'error', function (data) {\n debug('connect_error');\n self.cleanup();\n self.readyState = 'closed';\n self.emitAll('connect_error', data);\n if (fn) {\n var err = new Error('Connection error');\n err.data = data;\n fn(err);\n } else {\n // Only do this if there is no fn to handle the error\n self.maybeReconnectOnOpen();\n }\n });\n\n // emit `connect_timeout`\n if (false !== this._timeout) {\n var timeout = this._timeout;\n debug('connect attempt will timeout after %d', timeout);\n\n // set timer\n var timer = setTimeout(function () {\n debug('connect attempt timed out after %d', timeout);\n openSub.destroy();\n socket.close();\n socket.emit('error', 'timeout');\n self.emitAll('connect_timeout', timeout);\n }, timeout);\n\n this.subs.push({\n destroy: function () {\n clearTimeout(timer);\n }\n });\n }\n\n this.subs.push(openSub);\n this.subs.push(errorSub);\n\n return this;\n};\n\n/**\n * Called upon transport open.\n *\n * @api private\n */\n\nManager.prototype.onopen = function () {\n debug('open');\n\n // clear old subs\n this.cleanup();\n\n // mark as open\n this.readyState = 'open';\n this.emit('open');\n\n // add new subs\n var socket = this.engine;\n this.subs.push(on(socket, 'data', bind(this, 'ondata')));\n this.subs.push(on(socket, 'ping', bind(this, 'onping')));\n this.subs.push(on(socket, 'pong', bind(this, 'onpong')));\n this.subs.push(on(socket, 'error', bind(this, 'onerror')));\n this.subs.push(on(socket, 'close', bind(this, 'onclose')));\n this.subs.push(on(this.decoder, 'decoded', bind(this, 'ondecoded')));\n};\n\n/**\n * Called upon a ping.\n *\n * @api private\n */\n\nManager.prototype.onping = function () {\n this.lastPing = new Date();\n this.emitAll('ping');\n};\n\n/**\n * Called upon a packet.\n *\n * @api private\n */\n\nManager.prototype.onpong = function () {\n this.emitAll('pong', new Date() - this.lastPing);\n};\n\n/**\n * Called with data.\n *\n * @api private\n */\n\nManager.prototype.ondata = function (data) {\n this.decoder.add(data);\n};\n\n/**\n * Called when parser fully decodes a packet.\n *\n * @api private\n */\n\nManager.prototype.ondecoded = function (packet) {\n this.emit('packet', packet);\n};\n\n/**\n * Called upon socket error.\n *\n * @api private\n */\n\nManager.prototype.onerror = function (err) {\n debug('error', err);\n this.emitAll('error', err);\n};\n\n/**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @api public\n */\n\nManager.prototype.socket = function (nsp, opts) {\n var socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n var self = this;\n socket.on('connecting', onConnecting);\n socket.on('connect', function () {\n socket.id = self.generateId(nsp);\n });\n\n if (this.autoConnect) {\n // manually call here since connecting event is fired before listening\n onConnecting();\n }\n }\n\n function onConnecting () {\n if (!~indexOf(self.connecting, socket)) {\n self.connecting.push(socket);\n }\n }\n\n return socket;\n};\n\n/**\n * Called upon a socket close.\n *\n * @param {Socket} socket\n */\n\nManager.prototype.destroy = function (socket) {\n var index = indexOf(this.connecting, socket);\n if (~index) this.connecting.splice(index, 1);\n if (this.connecting.length) return;\n\n this.close();\n};\n\n/**\n * Writes a packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nManager.prototype.packet = function (packet) {\n debug('writing packet %j', packet);\n var self = this;\n if (packet.query && packet.type === 0) packet.nsp += '?' + packet.query;\n\n if (!self.encoding) {\n // encode, then write to engine with result\n self.encoding = true;\n this.encoder.encode(packet, function (encodedPackets) {\n for (var i = 0; i < encodedPackets.length; i++) {\n self.engine.write(encodedPackets[i], packet.options);\n }\n self.encoding = false;\n self.processPacketQueue();\n });\n } else { // add packet to the queue\n self.packetBuffer.push(packet);\n }\n};\n\n/**\n * If packet buffer is non-empty, begins encoding the\n * next packet in line.\n *\n * @api private\n */\n\nManager.prototype.processPacketQueue = function () {\n if (this.packetBuffer.length > 0 && !this.encoding) {\n var pack = this.packetBuffer.shift();\n this.packet(pack);\n }\n};\n\n/**\n * Clean up transport subscriptions and packet buffer.\n *\n * @api private\n */\n\nManager.prototype.cleanup = function () {\n debug('cleanup');\n\n var subsLength = this.subs.length;\n for (var i = 0; i < subsLength; i++) {\n var sub = this.subs.shift();\n sub.destroy();\n }\n\n this.packetBuffer = [];\n this.encoding = false;\n this.lastPing = null;\n\n this.decoder.destroy();\n};\n\n/**\n * Close the current socket.\n *\n * @api private\n */\n\nManager.prototype.close =\nManager.prototype.disconnect = function () {\n debug('disconnect');\n this.skipReconnect = true;\n this.reconnecting = false;\n if ('opening' === this.readyState) {\n // `onclose` will not fire because\n // an open event never happened\n this.cleanup();\n }\n this.backoff.reset();\n this.readyState = 'closed';\n if (this.engine) this.engine.close();\n};\n\n/**\n * Called upon engine close.\n *\n * @api private\n */\n\nManager.prototype.onclose = function (reason) {\n debug('onclose');\n\n this.cleanup();\n this.backoff.reset();\n this.readyState = 'closed';\n this.emit('close', reason);\n\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n};\n\n/**\n * Attempt a reconnection.\n *\n * @api private\n */\n\nManager.prototype.reconnect = function () {\n if (this.reconnecting || this.skipReconnect) return this;\n\n var self = this;\n\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n debug('reconnect failed');\n this.backoff.reset();\n this.emitAll('reconnect_failed');\n this.reconnecting = false;\n } else {\n var delay = this.backoff.duration();\n debug('will wait %dms before reconnect attempt', delay);\n\n this.reconnecting = true;\n var timer = setTimeout(function () {\n if (self.skipReconnect) return;\n\n debug('attempting reconnect');\n self.emitAll('reconnect_attempt', self.backoff.attempts);\n self.emitAll('reconnecting', self.backoff.attempts);\n\n // check again for the case socket closed in above events\n if (self.skipReconnect) return;\n\n self.open(function (err) {\n if (err) {\n debug('reconnect attempt error');\n self.reconnecting = false;\n self.reconnect();\n self.emitAll('reconnect_error', err.data);\n } else {\n debug('reconnect success');\n self.onreconnect();\n }\n });\n }, delay);\n\n this.subs.push({\n destroy: function () {\n clearTimeout(timer);\n }\n });\n }\n};\n\n/**\n * Called upon successful reconnect.\n *\n * @api private\n */\n\nManager.prototype.onreconnect = function () {\n var attempt = this.backoff.attempts;\n this.reconnecting = false;\n this.backoff.reset();\n this.updateSocketIds();\n this.emitAll('reconnect', attempt);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/socket.io-client/lib/manager.js\n// module id = 18\n// module chunks = 0","/**\n * Module dependencies\n */\n\nvar XMLHttpRequest = require('xmlhttprequest-ssl');\nvar XHR = require('./polling-xhr');\nvar JSONP = require('./polling-jsonp');\nvar websocket = require('./websocket');\n\n/**\n * Export transports.\n */\n\nexports.polling = polling;\nexports.websocket = websocket;\n\n/**\n * Polling transport polymorphic constructor.\n * Decides on xhr vs jsonp based on feature detection.\n *\n * @api private\n */\n\nfunction polling (opts) {\n var xhr;\n var xd = false;\n var xs = false;\n var jsonp = false !== opts.jsonp;\n\n if (global.location) {\n var isSSL = 'https:' === location.protocol;\n var port = location.port;\n\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? 443 : 80;\n }\n\n xd = opts.hostname !== location.hostname || port !== opts.port;\n xs = opts.secure !== isSSL;\n }\n\n opts.xdomain = xd;\n opts.xscheme = xs;\n xhr = new XMLHttpRequest(opts);\n\n if ('open' in xhr && !opts.forceJSONP) {\n return new XHR(opts);\n } else {\n if (!jsonp) throw new Error('JSONP disabled');\n return new JSONP(opts);\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/engine.io-client/lib/transports/index.js\n// module id = 19\n// module chunks = 0","/**\n * Module dependencies.\n */\n\nvar Transport = require('../transport');\nvar parseqs = require('parseqs');\nvar parser = require('engine.io-parser');\nvar inherit = require('component-inherit');\nvar yeast = require('yeast');\nvar debug = require('debug')('engine.io-client:polling');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Polling;\n\n/**\n * Is XHR2 supported?\n */\n\nvar hasXHR2 = (function () {\n var XMLHttpRequest = require('xmlhttprequest-ssl');\n var xhr = new XMLHttpRequest({ xdomain: false });\n return null != xhr.responseType;\n})();\n\n/**\n * Polling interface.\n *\n * @param {Object} opts\n * @api private\n */\n\nfunction Polling (opts) {\n var forceBase64 = (opts && opts.forceBase64);\n if (!hasXHR2 || forceBase64) {\n this.supportsBinary = false;\n }\n Transport.call(this, opts);\n}\n\n/**\n * Inherits from Transport.\n */\n\ninherit(Polling, Transport);\n\n/**\n * Transport name.\n */\n\nPolling.prototype.name = 'polling';\n\n/**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @api private\n */\n\nPolling.prototype.doOpen = function () {\n this.poll();\n};\n\n/**\n * Pauses polling.\n *\n * @param {Function} callback upon buffers are flushed and transport is paused\n * @api private\n */\n\nPolling.prototype.pause = function (onPause) {\n var self = this;\n\n this.readyState = 'pausing';\n\n function pause () {\n debug('paused');\n self.readyState = 'paused';\n onPause();\n }\n\n if (this.polling || !this.writable) {\n var total = 0;\n\n if (this.polling) {\n debug('we are currently polling - waiting to pause');\n total++;\n this.once('pollComplete', function () {\n debug('pre-pause polling complete');\n --total || pause();\n });\n }\n\n if (!this.writable) {\n debug('we are currently writing - waiting to pause');\n total++;\n this.once('drain', function () {\n debug('pre-pause writing complete');\n --total || pause();\n });\n }\n } else {\n pause();\n }\n};\n\n/**\n * Starts polling cycle.\n *\n * @api public\n */\n\nPolling.prototype.poll = function () {\n debug('polling');\n this.polling = true;\n this.doPoll();\n this.emit('poll');\n};\n\n/**\n * Overloads onData to detect payloads.\n *\n * @api private\n */\n\nPolling.prototype.onData = function (data) {\n var self = this;\n debug('polling got data %s', data);\n var callback = function (packet, index, total) {\n // if its the first message we consider the transport open\n if ('opening' === self.readyState) {\n self.onOpen();\n }\n\n // if its a close packet, we close the ongoing requests\n if ('close' === packet.type) {\n self.onClose();\n return false;\n }\n\n // otherwise bypass onData and handle the message\n self.onPacket(packet);\n };\n\n // decode payload\n parser.decodePayload(data, this.socket.binaryType, callback);\n\n // if an event did not trigger closing\n if ('closed' !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emit('pollComplete');\n\n if ('open' === this.readyState) {\n this.poll();\n } else {\n debug('ignoring poll - transport state \"%s\"', this.readyState);\n }\n }\n};\n\n/**\n * For polling, send a close packet.\n *\n * @api private\n */\n\nPolling.prototype.doClose = function () {\n var self = this;\n\n function close () {\n debug('writing close packet');\n self.write([{ type: 'close' }]);\n }\n\n if ('open' === this.readyState) {\n debug('transport open - closing');\n close();\n } else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n debug('transport not open - deferring close');\n this.once('open', close);\n }\n};\n\n/**\n * Writes a packets payload.\n *\n * @param {Array} data packets\n * @param {Function} drain callback\n * @api private\n */\n\nPolling.prototype.write = function (packets) {\n var self = this;\n this.writable = false;\n var callbackfn = function () {\n self.writable = true;\n self.emit('drain');\n };\n\n parser.encodePayload(packets, this.supportsBinary, function (data) {\n self.doWrite(data, callbackfn);\n });\n};\n\n/**\n * Generates uri for connection.\n *\n * @api private\n */\n\nPolling.prototype.uri = function () {\n var query = this.query || {};\n var schema = this.secure ? 'https' : 'http';\n var port = '';\n\n // cache busting is forced\n if (false !== this.timestampRequests) {\n query[this.timestampParam] = yeast();\n }\n\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n\n query = parseqs.encode(query);\n\n // avoid port if default for schema\n if (this.port && (('https' === schema && Number(this.port) !== 443) ||\n ('http' === schema && Number(this.port) !== 80))) {\n port = ':' + this.port;\n }\n\n // prepend ? to query\n if (query.length) {\n query = '?' + query;\n }\n\n var ipv6 = this.hostname.indexOf(':') !== -1;\n return schema + '://' + (ipv6 ? '[' + this.hostname + ']' : this.hostname) + port + this.path + query;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/engine.io-client/lib/transports/polling.js\n// module id = 20\n// module chunks = 0","'use strict';\n\nvar alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split('')\n , length = 64\n , map = {}\n , seed = 0\n , i = 0\n , prev;\n\n/**\n * Return a string representing the specified number.\n *\n * @param {Number} num The number to convert.\n * @returns {String} The string representation of the number.\n * @api public\n */\nfunction encode(num) {\n var encoded = '';\n\n do {\n encoded = alphabet[num % length] + encoded;\n num = Math.floor(num / length);\n } while (num > 0);\n\n return encoded;\n}\n\n/**\n * Return the integer value specified by the given string.\n *\n * @param {String} str The string to convert.\n * @returns {Number} The integer value represented by the string.\n * @api public\n */\nfunction decode(str) {\n var decoded = 0;\n\n for (i = 0; i < str.length; i++) {\n decoded = decoded * length + map[str.charAt(i)];\n }\n\n return decoded;\n}\n\n/**\n * Yeast: A tiny growing id generator.\n *\n * @returns {String} A unique id.\n * @api public\n */\nfunction yeast() {\n var now = encode(+new Date());\n\n if (now !== prev) return seed = 0, prev = now;\n return now +'.'+ encode(seed++);\n}\n\n//\n// Map each character to its index.\n//\nfor (; i < length; i++) map[alphabet[i]] = i;\n\n//\n// Expose the `yeast`, `encode` and `decode` functions.\n//\nyeast.encode = encode;\nyeast.decode = decode;\nmodule.exports = yeast;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/yeast/index.js\n// module id = 21\n// module chunks = 0","\nvar indexOf = [].indexOf;\n\nmodule.exports = function(arr, obj){\n if (indexOf) return arr.indexOf(obj);\n for (var i = 0; i < arr.length; ++i) {\n if (arr[i] === obj) return i;\n }\n return -1;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/indexof/index.js\n// module id = 22\n// module chunks = 0","\n/**\n * Module dependencies.\n */\n\nvar parser = require('socket.io-parser');\nvar Emitter = require('component-emitter');\nvar toArray = require('to-array');\nvar on = require('./on');\nvar bind = require('component-bind');\nvar debug = require('debug')('socket.io-client:socket');\nvar parseqs = require('parseqs');\n\n/**\n * Module exports.\n */\n\nmodule.exports = exports = Socket;\n\n/**\n * Internal events (blacklisted).\n * These events can't be emitted by the user.\n *\n * @api private\n */\n\nvar events = {\n connect: 1,\n connect_error: 1,\n connect_timeout: 1,\n connecting: 1,\n disconnect: 1,\n error: 1,\n reconnect: 1,\n reconnect_attempt: 1,\n reconnect_failed: 1,\n reconnect_error: 1,\n reconnecting: 1,\n ping: 1,\n pong: 1\n};\n\n/**\n * Shortcut to `Emitter#emit`.\n */\n\nvar emit = Emitter.prototype.emit;\n\n/**\n * `Socket` constructor.\n *\n * @api public\n */\n\nfunction Socket (io, nsp, opts) {\n this.io = io;\n this.nsp = nsp;\n this.json = this; // compat\n this.ids = 0;\n this.acks = {};\n this.receiveBuffer = [];\n this.sendBuffer = [];\n this.connected = false;\n this.disconnected = true;\n if (opts && opts.query) {\n this.query = opts.query;\n }\n if (this.io.autoConnect) this.open();\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Socket.prototype);\n\n/**\n * Subscribe to open, close and packet events\n *\n * @api private\n */\n\nSocket.prototype.subEvents = function () {\n if (this.subs) return;\n\n var io = this.io;\n this.subs = [\n on(io, 'open', bind(this, 'onopen')),\n on(io, 'packet', bind(this, 'onpacket')),\n on(io, 'close', bind(this, 'onclose'))\n ];\n};\n\n/**\n * \"Opens\" the socket.\n *\n * @api public\n */\n\nSocket.prototype.open =\nSocket.prototype.connect = function () {\n if (this.connected) return this;\n\n this.subEvents();\n this.io.open(); // ensure open\n if ('open' === this.io.readyState) this.onopen();\n this.emit('connecting');\n return this;\n};\n\n/**\n * Sends a `message` event.\n *\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.send = function () {\n var args = toArray(arguments);\n args.unshift('message');\n this.emit.apply(this, args);\n return this;\n};\n\n/**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @param {String} event name\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.emit = function (ev) {\n if (events.hasOwnProperty(ev)) {\n emit.apply(this, arguments);\n return this;\n }\n\n var args = toArray(arguments);\n var packet = { type: parser.EVENT, data: args };\n\n packet.options = {};\n packet.options.compress = !this.flags || false !== this.flags.compress;\n\n // event ack callback\n if ('function' === typeof args[args.length - 1]) {\n debug('emitting packet with ack id %d', this.ids);\n this.acks[this.ids] = args.pop();\n packet.id = this.ids++;\n }\n\n if (this.connected) {\n this.packet(packet);\n } else {\n this.sendBuffer.push(packet);\n }\n\n delete this.flags;\n\n return this;\n};\n\n/**\n * Sends a packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.packet = function (packet) {\n packet.nsp = this.nsp;\n this.io.packet(packet);\n};\n\n/**\n * Called upon engine `open`.\n *\n * @api private\n */\n\nSocket.prototype.onopen = function () {\n debug('transport is open - connecting');\n\n // write connect packet if necessary\n if ('/' !== this.nsp) {\n if (this.query) {\n var query = typeof this.query === 'object' ? parseqs.encode(this.query) : this.query;\n debug('sending connect packet with query %s', query);\n this.packet({type: parser.CONNECT, query: query});\n } else {\n this.packet({type: parser.CONNECT});\n }\n }\n};\n\n/**\n * Called upon engine `close`.\n *\n * @param {String} reason\n * @api private\n */\n\nSocket.prototype.onclose = function (reason) {\n debug('close (%s)', reason);\n this.connected = false;\n this.disconnected = true;\n delete this.id;\n this.emit('disconnect', reason);\n};\n\n/**\n * Called with socket packet.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onpacket = function (packet) {\n if (packet.nsp !== this.nsp) return;\n\n switch (packet.type) {\n case parser.CONNECT:\n this.onconnect();\n break;\n\n case parser.EVENT:\n this.onevent(packet);\n break;\n\n case parser.BINARY_EVENT:\n this.onevent(packet);\n break;\n\n case parser.ACK:\n this.onack(packet);\n break;\n\n case parser.BINARY_ACK:\n this.onack(packet);\n break;\n\n case parser.DISCONNECT:\n this.ondisconnect();\n break;\n\n case parser.ERROR:\n this.emit('error', packet.data);\n break;\n }\n};\n\n/**\n * Called upon a server event.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onevent = function (packet) {\n var args = packet.data || [];\n debug('emitting event %j', args);\n\n if (null != packet.id) {\n debug('attaching ack callback to event');\n args.push(this.ack(packet.id));\n }\n\n if (this.connected) {\n emit.apply(this, args);\n } else {\n this.receiveBuffer.push(args);\n }\n};\n\n/**\n * Produces an ack callback to emit with an event.\n *\n * @api private\n */\n\nSocket.prototype.ack = function (id) {\n var self = this;\n var sent = false;\n return function () {\n // prevent double callbacks\n if (sent) return;\n sent = true;\n var args = toArray(arguments);\n debug('sending ack %j', args);\n\n self.packet({\n type: parser.ACK,\n id: id,\n data: args\n });\n };\n};\n\n/**\n * Called upon a server acknowlegement.\n *\n * @param {Object} packet\n * @api private\n */\n\nSocket.prototype.onack = function (packet) {\n var ack = this.acks[packet.id];\n if ('function' === typeof ack) {\n debug('calling ack %s with %j', packet.id, packet.data);\n ack.apply(this, packet.data);\n delete this.acks[packet.id];\n } else {\n debug('bad ack %s', packet.id);\n }\n};\n\n/**\n * Called upon server connect.\n *\n * @api private\n */\n\nSocket.prototype.onconnect = function () {\n this.connected = true;\n this.disconnected = false;\n this.emit('connect');\n this.emitBuffered();\n};\n\n/**\n * Emit buffered events (received and emitted).\n *\n * @api private\n */\n\nSocket.prototype.emitBuffered = function () {\n var i;\n for (i = 0; i < this.receiveBuffer.length; i++) {\n emit.apply(this, this.receiveBuffer[i]);\n }\n this.receiveBuffer = [];\n\n for (i = 0; i < this.sendBuffer.length; i++) {\n this.packet(this.sendBuffer[i]);\n }\n this.sendBuffer = [];\n};\n\n/**\n * Called upon server disconnect.\n *\n * @api private\n */\n\nSocket.prototype.ondisconnect = function () {\n debug('server disconnect (%s)', this.nsp);\n this.destroy();\n this.onclose('io server disconnect');\n};\n\n/**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @api private.\n */\n\nSocket.prototype.destroy = function () {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n for (var i = 0; i < this.subs.length; i++) {\n this.subs[i].destroy();\n }\n this.subs = null;\n }\n\n this.io.destroy(this);\n};\n\n/**\n * Disconnects the socket manually.\n *\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.close =\nSocket.prototype.disconnect = function () {\n if (this.connected) {\n debug('performing disconnect (%s)', this.nsp);\n this.packet({ type: parser.DISCONNECT });\n }\n\n // remove socket from pool\n this.destroy();\n\n if (this.connected) {\n // fire events\n this.onclose('io client disconnect');\n }\n return this;\n};\n\n/**\n * Sets the compress flag.\n *\n * @param {Boolean} if `true`, compresses the sending data\n * @return {Socket} self\n * @api public\n */\n\nSocket.prototype.compress = function (compress) {\n this.flags = this.flags || {};\n this.flags.compress = compress;\n return this;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/socket.io-client/lib/socket.js\n// module id = 23\n// module chunks = 0","\n/**\n * Module exports.\n */\n\nmodule.exports = on;\n\n/**\n * Helper for subscriptions.\n *\n * @param {Object|EventEmitter} obj with `Emitter` mixin or `EventEmitter`\n * @param {String} event name\n * @param {Function} callback\n * @api public\n */\n\nfunction on (obj, ev, fn) {\n obj.on(ev, fn);\n return {\n destroy: function () {\n obj.removeListener(ev, fn);\n }\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/socket.io-client/lib/on.js\n// module id = 24\n// module chunks = 0","/**\n * Slice reference.\n */\n\nvar slice = [].slice;\n\n/**\n * Bind `obj` to `fn`.\n *\n * @param {Object} obj\n * @param {Function|String} fn or string\n * @return {Function}\n * @api public\n */\n\nmodule.exports = function(obj, fn){\n if ('string' == typeof fn) fn = obj[fn];\n if ('function' != typeof fn) throw new Error('bind() requires a function');\n var args = slice.call(arguments, 2);\n return function(){\n return fn.apply(obj, args.concat(slice.call(arguments)));\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/component-bind/index.js\n// module id = 25\n// module chunks = 0","\"use strict\";\n\nvar scroll = require(\"./ghostmode.scroll\");\nvar utils = require(\"./browser.utils\");\n\nvar styles = {\n display: \"none\",\n padding: \"15px\",\n fontFamily: \"sans-serif\",\n position: \"fixed\",\n fontSize: \"0.9em\",\n zIndex: 9999,\n right: 0,\n top: 0,\n borderBottomLeftRadius: \"5px\",\n backgroundColor: \"#1B2032\",\n margin: 0,\n color: \"white\",\n textAlign: \"center\",\n pointerEvents: \"none\"\n};\n\nvar elem;\nvar options;\nvar timeoutInt;\n\n/**\n * @param {BrowserSync} bs\n * @returns {*}\n */\nexports.init = function(bs) {\n options = bs.options;\n\n var cssStyles = styles;\n\n if (options.notify.styles) {\n if (\n Object.prototype.toString.call(options.notify.styles) ===\n \"[object Array]\"\n ) {\n // handle original array behavior, replace all styles with a joined copy\n cssStyles = options.notify.styles.join(\";\");\n } else {\n for (var key in options.notify.styles) {\n if (options.notify.styles.hasOwnProperty(key)) {\n cssStyles[key] = options.notify.styles[key];\n }\n }\n }\n }\n\n elem = document.createElement(\"DIV\");\n elem.id = \"__bs_notify__\";\n\n if (typeof cssStyles === \"string\") {\n elem.style.cssText = cssStyles;\n } else {\n for (var rule in cssStyles) {\n elem.style[rule] = cssStyles[rule];\n }\n }\n\n var flashFn = exports.watchEvent(bs);\n\n bs.emitter.on(\"notify\", flashFn);\n bs.socket.on(\"browser:notify\", flashFn);\n\n return elem;\n};\n\n/**\n * @returns {Function}\n */\nexports.watchEvent = function(bs) {\n return function(data) {\n if (bs.options.notify || data.override) {\n if (typeof data === \"string\") {\n return exports.flash(data);\n }\n exports.flash(data.message, data.timeout);\n }\n };\n};\n\n/**\n *\n */\nexports.getElem = function() {\n return elem;\n};\n\n/**\n * @param message\n * @param [timeout]\n * @returns {*}\n */\nexports.flash = function(message, timeout) {\n var elem = exports.getElem();\n var $body = utils.getBody();\n\n // return if notify was never initialised\n if (!elem) {\n return false;\n }\n\n elem.innerHTML = message;\n elem.style.display = \"block\";\n\n $body.appendChild(elem);\n\n if (timeoutInt) {\n clearTimeout(timeoutInt);\n timeoutInt = undefined;\n }\n\n timeoutInt = window.setTimeout(function() {\n elem.style.display = \"none\";\n if (elem.parentNode) {\n $body.removeChild(elem);\n }\n }, timeout || 2000);\n\n return elem;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/notify.js","\"use strict\";\n\n/**\n * This is the plugin for syncing clicks between browsers\n * @type {string}\n */\nvar EVENT_NAME = \"click\";\nvar OPT_PATH = \"ghostMode.clicks\";\nexports.canEmitEvents = true;\n\n/**\n * @param {BrowserSync} bs\n * @param eventManager\n */\nexports.init = function(bs, eventManager) {\n eventManager.addEvent(document.body, EVENT_NAME, exports.browserEvent(bs));\n bs.socket.on(EVENT_NAME, exports.socketEvent(bs, eventManager));\n};\n\n/**\n * Uses event delegation to determine the clicked element\n * @param {BrowserSync} bs\n * @returns {Function}\n */\nexports.browserEvent = function(bs) {\n return function(event) {\n if (exports.canEmitEvents) {\n var elem = event.target || event.srcElement;\n\n if (elem.type === \"checkbox\" || elem.type === \"radio\") {\n bs.utils.forceChange(elem);\n return;\n }\n\n bs.socket.emit(EVENT_NAME, bs.utils.getElementData(elem));\n } else {\n exports.canEmitEvents = true;\n }\n };\n};\n\n/**\n * @param {BrowserSync} bs\n * @param {manager} eventManager\n * @returns {Function}\n */\nexports.socketEvent = function(bs, eventManager) {\n return function(data) {\n if (!bs.canSync(data, OPT_PATH) || bs.tabHidden) {\n return false;\n }\n\n var elem = bs.utils.getSingleElement(data.tagName, data.index);\n\n if (elem) {\n exports.canEmitEvents = false;\n eventManager.triggerClick(elem);\n }\n };\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/ghostmode.clicks.js","\"use strict\";\n\nexports.plugins = {\n inputs: require(\"./ghostmode.forms.input\"),\n toggles: require(\"./ghostmode.forms.toggles\"),\n submit: require(\"./ghostmode.forms.submit\")\n};\n\n/**\n * Load plugins for enabled options\n * @param bs\n */\nexports.init = function(bs, eventManager) {\n var checkOpt = true;\n var options = bs.options.ghostMode.forms;\n\n if (options === true) {\n checkOpt = false;\n }\n\n function init(name) {\n exports.plugins[name].init(bs, eventManager);\n }\n\n for (var name in exports.plugins) {\n if (!checkOpt) {\n init(name);\n } else {\n if (options[name]) {\n init(name);\n }\n }\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/ghostmode.forms.js","\"use strict\";\n\n/**\n * This is the plugin for syncing clicks between browsers\n * @type {string}\n */\nvar EVENT_NAME = \"input:text\";\nvar OPT_PATH = \"ghostMode.forms.inputs\";\nexports.canEmitEvents = true;\n\n/**\n * @param {BrowserSync} bs\n * @param eventManager\n */\nexports.init = function(bs, eventManager) {\n eventManager.addEvent(document.body, \"keyup\", exports.browserEvent(bs));\n bs.socket.on(EVENT_NAME, exports.socketEvent(bs, eventManager));\n};\n\n/**\n * @param {BrowserSync} bs\n * @returns {Function}\n */\nexports.browserEvent = function(bs) {\n return function(event) {\n var elem = event.target || event.srcElement;\n var data;\n\n if (exports.canEmitEvents) {\n if (elem.tagName === \"INPUT\" || elem.tagName === \"TEXTAREA\") {\n data = bs.utils.getElementData(elem);\n data.value = elem.value;\n\n bs.socket.emit(EVENT_NAME, data);\n }\n } else {\n exports.canEmitEvents = true;\n }\n };\n};\n\n/**\n * @param {BrowserSync} bs\n * @returns {Function}\n */\nexports.socketEvent = function(bs) {\n return function(data) {\n if (!bs.canSync(data, OPT_PATH)) {\n return false;\n }\n\n var elem = bs.utils.getSingleElement(data.tagName, data.index);\n\n if (elem) {\n elem.value = data.value;\n return elem;\n }\n\n return false;\n };\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/ghostmode.forms.input.js","\"use strict\";\n\n/**\n * This is the plugin for syncing clicks between browsers\n * @type {string}\n */\nvar EVENT_NAME = \"input:toggles\";\nvar OPT_PATH = \"ghostMode.forms.toggles\";\nexports.canEmitEvents = true;\n\n/**\n * @param {BrowserSync} bs\n * @param eventManager\n */\nexports.init = function(bs, eventManager) {\n var browserEvent = exports.browserEvent(bs);\n exports.addEvents(eventManager, browserEvent);\n bs.socket.on(EVENT_NAME, exports.socketEvent(bs, eventManager));\n};\n\n/**\n * @param eventManager\n * @param event\n */\nexports.addEvents = function(eventManager, event) {\n var elems = document.getElementsByTagName(\"select\");\n var inputs = document.getElementsByTagName(\"input\");\n\n addEvents(elems);\n addEvents(inputs);\n\n function addEvents(domElems) {\n for (var i = 0, n = domElems.length; i < n; i += 1) {\n eventManager.addEvent(domElems[i], \"change\", event);\n }\n }\n};\n\n/**\n * @param {BrowserSync} bs\n * @returns {Function}\n */\nexports.browserEvent = function(bs) {\n return function(event) {\n if (exports.canEmitEvents) {\n var elem = event.target || event.srcElement;\n var data;\n if (\n elem.type === \"radio\" ||\n elem.type === \"checkbox\" ||\n elem.tagName === \"SELECT\"\n ) {\n data = bs.utils.getElementData(elem);\n data.type = elem.type;\n data.value = elem.value;\n data.checked = elem.checked;\n bs.socket.emit(EVENT_NAME, data);\n }\n } else {\n exports.canEmitEvents = true;\n }\n };\n};\n\n/**\n * @param {BrowserSync} bs\n * @returns {Function}\n */\nexports.socketEvent = function(bs) {\n return function(data) {\n if (!bs.canSync(data, OPT_PATH)) {\n return false;\n }\n\n exports.canEmitEvents = false;\n\n var elem = bs.utils.getSingleElement(data.tagName, data.index);\n\n if (elem) {\n if (data.type === \"radio\") {\n elem.checked = true;\n }\n if (data.type === \"checkbox\") {\n elem.checked = data.checked;\n }\n if (data.tagName === \"SELECT\") {\n elem.value = data.value;\n }\n return elem;\n }\n return false;\n };\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/ghostmode.forms.toggles.js","\"use strict\";\n\n/**\n * This is the plugin for syncing clicks between browsers\n * @type {string}\n */\nvar EVENT_NAME = \"form:submit\";\nvar OPT_PATH = \"ghostMode.forms.submit\";\nexports.canEmitEvents = true;\n\n/**\n * @param {BrowserSync} bs\n * @param eventManager\n */\nexports.init = function(bs, eventManager) {\n var browserEvent = exports.browserEvent(bs);\n eventManager.addEvent(document.body, \"submit\", browserEvent);\n eventManager.addEvent(document.body, \"reset\", browserEvent);\n bs.socket.on(EVENT_NAME, exports.socketEvent(bs, eventManager));\n};\n\n/**\n * @param {BrowserSync} bs\n * @returns {Function}\n */\nexports.browserEvent = function(bs) {\n return function(event) {\n if (exports.canEmitEvents) {\n var elem = event.target || event.srcElement;\n var data = bs.utils.getElementData(elem);\n data.type = event.type;\n bs.socket.emit(EVENT_NAME, data);\n } else {\n exports.canEmitEvents = true;\n }\n };\n};\n\n/**\n * @param {BrowserSync} bs\n * @returns {Function}\n */\nexports.socketEvent = function(bs) {\n return function(data) {\n if (!bs.canSync(data, OPT_PATH)) {\n return false;\n }\n\n var elem = bs.utils.getSingleElement(data.tagName, data.index);\n\n exports.canEmitEvents = false;\n\n if (elem && data.type === \"submit\") {\n elem.submit();\n }\n\n if (elem && data.type === \"reset\") {\n elem.reset();\n }\n return false;\n };\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/ghostmode.forms.submit.js","\"use strict\";\n\n/**\n * This is the plugin for syncing location\n * @type {string}\n */\nvar EVENT_NAME = \"browser:location\";\nvar OPT_PATH = \"ghostMode.location\";\nexports.canEmitEvents = true;\n\n/**\n * @param {BrowserSync} bs\n */\nexports.init = function(bs) {\n bs.socket.on(EVENT_NAME, exports.socketEvent(bs));\n};\n\n/**\n * Respond to socket event\n */\nexports.socketEvent = function(bs) {\n return function(data) {\n if (!bs.canSync(data, OPT_PATH)) {\n return false;\n }\n\n if (data.path) {\n exports.setPath(data.path);\n } else {\n exports.setUrl(data.url);\n }\n };\n};\n\n/**\n * @param url\n */\nexports.setUrl = function(url) {\n window.location = url;\n};\n\n/**\n * @param path\n */\nexports.setPath = function(path) {\n window.location =\n window.location.protocol + \"//\" + window.location.host + path;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/ghostmode.location.js","\"use strict\";\n\nvar socket = require(\"./socket\");\nvar shims = require(\"./client-shims\");\nvar notify = require(\"./notify\");\nvar codeSync = require(\"./code-sync\");\nvar BrowserSync = require(\"./browser-sync\");\nvar ghostMode = require(\"./ghostmode\");\nvar emitter = require(\"./emitter\");\nvar events = require(\"./events\");\nvar utils = require(\"./browser.utils\");\n\nvar shouldReload = false;\nvar initialised = false;\n\n/**\n * @param options\n */\nexports.init = function(options) {\n if (shouldReload && options.reloadOnRestart) {\n utils.reloadBrowser();\n }\n\n var BS = window.___browserSync___ || {};\n\n if (!BS.client) {\n BS.client = true;\n\n var browserSync = new BrowserSync(options);\n\n // Always init on page load\n ghostMode.init(browserSync);\n codeSync.init(browserSync);\n\n notify.init(browserSync);\n\n if (options.notify) {\n notify.flash(\"Connected to BrowserSync\");\n }\n }\n\n if (!initialised) {\n socket.on(\"disconnect\", function() {\n if (options.notify) {\n notify.flash(\"Disconnected from BrowserSync\");\n }\n shouldReload = true;\n });\n initialised = true;\n }\n};\n\n/**\n * Handle individual socket connections\n */\nsocket.on(\"connection\", exports.init);\n\n/**debug:start**/\nif (window.__karma__) {\n window.__bs_scroll__ = require(\"./ghostmode.scroll\");\n window.__bs_clicks__ = require(\"./ghostmode.clicks\");\n window.__bs_location__ = require(\"./ghostmode.location\");\n window.__bs_inputs__ = require(\"./ghostmode.forms.input\");\n window.__bs_toggles__ = require(\"./ghostmode.forms.toggles\");\n window.__bs_submit__ = require(\"./ghostmode.forms.submit\");\n window.__bs_forms__ = require(\"./ghostmode.forms\");\n window.__bs_utils__ = require(\"./browser.utils\");\n window.__bs_emitter__ = emitter;\n window.__bs = BrowserSync;\n window.__bs_notify__ = notify;\n window.__bs_code_sync__ = codeSync;\n window.__bs_ghost_mode__ = ghostMode;\n window.__bs_socket__ = socket;\n window.__bs_index__ = exports;\n}\n/**debug:end**/\n\n\n\n// WEBPACK FOOTER //\n// ./lib/index.js","\n/**\n * Module dependencies.\n */\n\nvar url = require('./url');\nvar parser = require('socket.io-parser');\nvar Manager = require('./manager');\nvar debug = require('debug')('socket.io-client');\n\n/**\n * Module exports.\n */\n\nmodule.exports = exports = lookup;\n\n/**\n * Managers cache.\n */\n\nvar cache = exports.managers = {};\n\n/**\n * Looks up an existing `Manager` for multiplexing.\n * If the user summons:\n *\n * `io('http://localhost/a');`\n * `io('http://localhost/b');`\n *\n * We reuse the existing instance based on same scheme/port/host,\n * and we initialize sockets for each namespace.\n *\n * @api public\n */\n\nfunction lookup (uri, opts) {\n if (typeof uri === 'object') {\n opts = uri;\n uri = undefined;\n }\n\n opts = opts || {};\n\n var parsed = url(uri);\n var source = parsed.source;\n var id = parsed.id;\n var path = parsed.path;\n var sameNamespace = cache[id] && path in cache[id].nsps;\n var newConnection = opts.forceNew || opts['force new connection'] ||\n false === opts.multiplex || sameNamespace;\n\n var io;\n\n if (newConnection) {\n debug('ignoring socket cache for %s', source);\n io = Manager(source, opts);\n } else {\n if (!cache[id]) {\n debug('new io instance for %s', source);\n cache[id] = Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.query;\n }\n return io.socket(parsed.path, opts);\n}\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nexports.protocol = parser.protocol;\n\n/**\n * `connect`.\n *\n * @param {String} uri\n * @api public\n */\n\nexports.connect = lookup;\n\n/**\n * Expose constructors for standalone build.\n *\n * @api public\n */\n\nexports.Manager = require('./manager');\nexports.Socket = require('./socket');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/socket.io-client/lib/index.js\n// module id = 35\n// module chunks = 0","\n/**\n * Module dependencies.\n */\n\nvar parseuri = require('parseuri');\nvar debug = require('debug')('socket.io-client:url');\n\n/**\n * Module exports.\n */\n\nmodule.exports = url;\n\n/**\n * URL parser.\n *\n * @param {String} url\n * @param {Object} An object meant to mimic window.location.\n * Defaults to window.location.\n * @api public\n */\n\nfunction url (uri, loc) {\n var obj = uri;\n\n // default to window.location\n loc = loc || global.location;\n if (null == uri) uri = loc.protocol + '//' + loc.host;\n\n // relative path support\n if ('string' === typeof uri) {\n if ('/' === uri.charAt(0)) {\n if ('/' === uri.charAt(1)) {\n uri = loc.protocol + uri;\n } else {\n uri = loc.host + uri;\n }\n }\n\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n debug('protocol-less url %s', uri);\n if ('undefined' !== typeof loc) {\n uri = loc.protocol + '//' + uri;\n } else {\n uri = 'https://' + uri;\n }\n }\n\n // parse\n debug('parse %s', uri);\n obj = parseuri(uri);\n }\n\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = '80';\n } else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = '443';\n }\n }\n\n obj.path = obj.path || '/';\n\n var ipv6 = obj.host.indexOf(':') !== -1;\n var host = ipv6 ? '[' + obj.host + ']' : obj.host;\n\n // define unique id\n obj.id = obj.protocol + '://' + host + ':' + obj.port;\n // define href\n obj.href = obj.protocol + '://' + host + (loc && loc.port === obj.port ? '' : (':' + obj.port));\n\n return obj;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/socket.io-client/lib/url.js\n// module id = 36\n// module chunks = 0","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var split = (typeof namespaces === 'string' ? 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// ./node_modules/debug/src/debug.js\n// module id = 37\n// module chunks = 0","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ms/index.js\n// module id = 38\n// module chunks = 0","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/has-binary2/node_modules/isarray/index.js\n// module id = 39\n// module chunks = 0","/*global Blob,File*/\n\n/**\n * Module requirements\n */\n\nvar isArray = require('isarray');\nvar isBuf = require('./is-buffer');\nvar toString = Object.prototype.toString;\nvar withNativeBlob = typeof global.Blob === 'function' || toString.call(global.Blob) === '[object BlobConstructor]';\nvar withNativeFile = typeof global.File === 'function' || toString.call(global.File) === '[object FileConstructor]';\n\n/**\n * Replaces every Buffer | ArrayBuffer in packet with a numbered placeholder.\n * Anything with blobs or files should be fed through removeBlobs before coming\n * here.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @api public\n */\n\nexports.deconstructPacket = function(packet) {\n var buffers = [];\n var packetData = packet.data;\n var pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return {packet: pack, buffers: buffers};\n};\n\nfunction _deconstructPacket(data, buffers) {\n if (!data) return data;\n\n if (isBuf(data)) {\n var placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n } else if (isArray(data)) {\n var newData = new Array(data.length);\n for (var i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n } else if (typeof data === 'object' && !(data instanceof Date)) {\n var newData = {};\n for (var key in data) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n return newData;\n }\n return data;\n}\n\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @api public\n */\n\nexports.reconstructPacket = function(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n packet.attachments = undefined; // no longer useful\n return packet;\n};\n\nfunction _reconstructPacket(data, buffers) {\n if (!data) return data;\n\n if (data && data._placeholder) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n } else if (isArray(data)) {\n for (var i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n } else if (typeof data === 'object') {\n for (var key in data) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n\n return data;\n}\n\n/**\n * Asynchronously removes Blobs or Files from data via\n * FileReader's readAsArrayBuffer method. Used before encoding\n * data as msgpack. Calls callback with the blobless data.\n *\n * @param {Object} data\n * @param {Function} callback\n * @api private\n */\n\nexports.removeBlobs = function(data, callback) {\n function _removeBlobs(obj, curKey, containingObject) {\n if (!obj) return obj;\n\n // convert any blob\n if ((withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File)) {\n pendingBlobs++;\n\n // async filereader\n var fileReader = new FileReader();\n fileReader.onload = function() { // this.result == arraybuffer\n if (containingObject) {\n containingObject[curKey] = this.result;\n }\n else {\n bloblessData = this.result;\n }\n\n // if nothing pending its callback time\n if(! --pendingBlobs) {\n callback(bloblessData);\n }\n };\n\n fileReader.readAsArrayBuffer(obj); // blob -> arraybuffer\n } else if (isArray(obj)) { // handle array\n for (var i = 0; i < obj.length; i++) {\n _removeBlobs(obj[i], i, obj);\n }\n } else if (typeof obj === 'object' && !isBuf(obj)) { // and object\n for (var key in obj) {\n _removeBlobs(obj[key], key, obj);\n }\n }\n }\n\n var pendingBlobs = 0;\n var bloblessData = data;\n _removeBlobs(bloblessData);\n if (!pendingBlobs) {\n callback(bloblessData);\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/socket.io-parser/binary.js\n// module id = 40\n// module chunks = 0","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/socket.io-parser/node_modules/isarray/index.js\n// module id = 41\n// module chunks = 0","\nmodule.exports = require('./socket');\n\n/**\n * Exports parser\n *\n * @api public\n *\n */\nmodule.exports.parser = require('engine.io-parser');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/engine.io-client/lib/index.js\n// module id = 42\n// module chunks = 0","/**\n * Module dependencies.\n */\n\nvar transports = require('./transports/index');\nvar Emitter = require('component-emitter');\nvar debug = require('debug')('engine.io-client:socket');\nvar index = require('indexof');\nvar parser = require('engine.io-parser');\nvar parseuri = require('parseuri');\nvar parseqs = require('parseqs');\n\n/**\n * Module exports.\n */\n\nmodule.exports = Socket;\n\n/**\n * Socket constructor.\n *\n * @param {String|Object} uri or options\n * @param {Object} options\n * @api public\n */\n\nfunction Socket (uri, opts) {\n if (!(this instanceof Socket)) return new Socket(uri, opts);\n\n opts = opts || {};\n\n if (uri && 'object' === typeof uri) {\n opts = uri;\n uri = null;\n }\n\n if (uri) {\n uri = parseuri(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === 'https' || uri.protocol === 'wss';\n opts.port = uri.port;\n if (uri.query) opts.query = uri.query;\n } else if (opts.host) {\n opts.hostname = parseuri(opts.host).host;\n }\n\n this.secure = null != opts.secure ? opts.secure\n : (global.location && 'https:' === location.protocol);\n\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? '443' : '80';\n }\n\n this.agent = opts.agent || false;\n this.hostname = opts.hostname ||\n (global.location ? location.hostname : 'localhost');\n this.port = opts.port || (global.location && location.port\n ? location.port\n : (this.secure ? 443 : 80));\n this.query = opts.query || {};\n if ('string' === typeof this.query) this.query = parseqs.decode(this.query);\n this.upgrade = false !== opts.upgrade;\n this.path = (opts.path || '/engine.io').replace(/\\/$/, '') + '/';\n this.forceJSONP = !!opts.forceJSONP;\n this.jsonp = false !== opts.jsonp;\n this.forceBase64 = !!opts.forceBase64;\n this.enablesXDR = !!opts.enablesXDR;\n this.timestampParam = opts.timestampParam || 't';\n this.timestampRequests = opts.timestampRequests;\n this.transports = opts.transports || ['polling', 'websocket'];\n this.transportOptions = opts.transportOptions || {};\n this.readyState = '';\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n this.policyPort = opts.policyPort || 843;\n this.rememberUpgrade = opts.rememberUpgrade || false;\n this.binaryType = null;\n this.onlyBinaryUpgrades = opts.onlyBinaryUpgrades;\n this.perMessageDeflate = false !== opts.perMessageDeflate ? (opts.perMessageDeflate || {}) : false;\n\n if (true === this.perMessageDeflate) this.perMessageDeflate = {};\n if (this.perMessageDeflate && null == this.perMessageDeflate.threshold) {\n this.perMessageDeflate.threshold = 1024;\n }\n\n // SSL options for Node.js client\n this.pfx = opts.pfx || null;\n this.key = opts.key || null;\n this.passphrase = opts.passphrase || null;\n this.cert = opts.cert || null;\n this.ca = opts.ca || null;\n this.ciphers = opts.ciphers || null;\n this.rejectUnauthorized = opts.rejectUnauthorized === undefined ? true : opts.rejectUnauthorized;\n this.forceNode = !!opts.forceNode;\n\n // other options for Node.js client\n var freeGlobal = typeof global === 'object' && global;\n if (freeGlobal.global === freeGlobal) {\n if (opts.extraHeaders && Object.keys(opts.extraHeaders).length > 0) {\n this.extraHeaders = opts.extraHeaders;\n }\n\n if (opts.localAddress) {\n this.localAddress = opts.localAddress;\n }\n }\n\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n\n // set on heartbeat\n this.pingIntervalTimer = null;\n this.pingTimeoutTimer = null;\n\n this.open();\n}\n\nSocket.priorWebsocketSuccess = false;\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Socket.prototype);\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nSocket.protocol = parser.protocol; // this is an int\n\n/**\n * Expose deps for legacy compatibility\n * and standalone browser access.\n */\n\nSocket.Socket = Socket;\nSocket.Transport = require('./transport');\nSocket.transports = require('./transports/index');\nSocket.parser = require('engine.io-parser');\n\n/**\n * Creates transport of the given type.\n *\n * @param {String} transport name\n * @return {Transport}\n * @api private\n */\n\nSocket.prototype.createTransport = function (name) {\n debug('creating transport \"%s\"', name);\n var query = clone(this.query);\n\n // append engine.io protocol identifier\n query.EIO = parser.protocol;\n\n // transport name\n query.transport = name;\n\n // per-transport options\n var options = this.transportOptions[name] || {};\n\n // session id if we already have one\n if (this.id) query.sid = this.id;\n\n var transport = new transports[name]({\n query: query,\n socket: this,\n agent: options.agent || this.agent,\n hostname: options.hostname || this.hostname,\n port: options.port || this.port,\n secure: options.secure || this.secure,\n path: options.path || this.path,\n forceJSONP: options.forceJSONP || this.forceJSONP,\n jsonp: options.jsonp || this.jsonp,\n forceBase64: options.forceBase64 || this.forceBase64,\n enablesXDR: options.enablesXDR || this.enablesXDR,\n timestampRequests: options.timestampRequests || this.timestampRequests,\n timestampParam: options.timestampParam || this.timestampParam,\n policyPort: options.policyPort || this.policyPort,\n pfx: options.pfx || this.pfx,\n key: options.key || this.key,\n passphrase: options.passphrase || this.passphrase,\n cert: options.cert || this.cert,\n ca: options.ca || this.ca,\n ciphers: options.ciphers || this.ciphers,\n rejectUnauthorized: options.rejectUnauthorized || this.rejectUnauthorized,\n perMessageDeflate: options.perMessageDeflate || this.perMessageDeflate,\n extraHeaders: options.extraHeaders || this.extraHeaders,\n forceNode: options.forceNode || this.forceNode,\n localAddress: options.localAddress || this.localAddress,\n requestTimeout: options.requestTimeout || this.requestTimeout,\n protocols: options.protocols || void (0)\n });\n\n return transport;\n};\n\nfunction clone (obj) {\n var o = {};\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n o[i] = obj[i];\n }\n }\n return o;\n}\n\n/**\n * Initializes transport to use and starts probe.\n *\n * @api private\n */\nSocket.prototype.open = function () {\n var transport;\n if (this.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf('websocket') !== -1) {\n transport = 'websocket';\n } else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n var self = this;\n setTimeout(function () {\n self.emit('error', 'No transports available');\n }, 0);\n return;\n } else {\n transport = this.transports[0];\n }\n this.readyState = 'opening';\n\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n } catch (e) {\n this.transports.shift();\n this.open();\n return;\n }\n\n transport.open();\n this.setTransport(transport);\n};\n\n/**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @api private\n */\n\nSocket.prototype.setTransport = function (transport) {\n debug('setting transport %s', transport.name);\n var self = this;\n\n if (this.transport) {\n debug('clearing existing transport %s', this.transport.name);\n this.transport.removeAllListeners();\n }\n\n // set up transport\n this.transport = transport;\n\n // set up transport listeners\n transport\n .on('drain', function () {\n self.onDrain();\n })\n .on('packet', function (packet) {\n self.onPacket(packet);\n })\n .on('error', function (e) {\n self.onError(e);\n })\n .on('close', function () {\n self.onClose('transport close');\n });\n};\n\n/**\n * Probes a transport.\n *\n * @param {String} transport name\n * @api private\n */\n\nSocket.prototype.probe = function (name) {\n debug('probing transport \"%s\"', name);\n var transport = this.createTransport(name, { probe: 1 });\n var failed = false;\n var self = this;\n\n Socket.priorWebsocketSuccess = false;\n\n function onTransportOpen () {\n if (self.onlyBinaryUpgrades) {\n var upgradeLosesBinary = !this.supportsBinary && self.transport.supportsBinary;\n failed = failed || upgradeLosesBinary;\n }\n if (failed) return;\n\n debug('probe transport \"%s\" opened', name);\n transport.send([{ type: 'ping', data: 'probe' }]);\n transport.once('packet', function (msg) {\n if (failed) return;\n if ('pong' === msg.type && 'probe' === msg.data) {\n debug('probe transport \"%s\" pong', name);\n self.upgrading = true;\n self.emit('upgrading', transport);\n if (!transport) return;\n Socket.priorWebsocketSuccess = 'websocket' === transport.name;\n\n debug('pausing current transport \"%s\"', self.transport.name);\n self.transport.pause(function () {\n if (failed) return;\n if ('closed' === self.readyState) return;\n debug('changing transport and sending upgrade packet');\n\n cleanup();\n\n self.setTransport(transport);\n transport.send([{ type: 'upgrade' }]);\n self.emit('upgrade', transport);\n transport = null;\n self.upgrading = false;\n self.flush();\n });\n } else {\n debug('probe transport \"%s\" failed', name);\n var err = new Error('probe error');\n err.transport = transport.name;\n self.emit('upgradeError', err);\n }\n });\n }\n\n function freezeTransport () {\n if (failed) return;\n\n // Any callback called by transport should be ignored since now\n failed = true;\n\n cleanup();\n\n transport.close();\n transport = null;\n }\n\n // Handle any error that happens while probing\n function onerror (err) {\n var error = new Error('probe error: ' + err);\n error.transport = transport.name;\n\n freezeTransport();\n\n debug('probe transport \"%s\" failed because of error: %s', name, err);\n\n self.emit('upgradeError', error);\n }\n\n function onTransportClose () {\n onerror('transport closed');\n }\n\n // When the socket is closed while we're probing\n function onclose () {\n onerror('socket closed');\n }\n\n // When the socket is upgraded while we're probing\n function onupgrade (to) {\n if (transport && to.name !== transport.name) {\n debug('\"%s\" works - aborting \"%s\"', to.name, transport.name);\n freezeTransport();\n }\n }\n\n // Remove all listeners on the transport and on self\n function cleanup () {\n transport.removeListener('open', onTransportOpen);\n transport.removeListener('error', onerror);\n transport.removeListener('close', onTransportClose);\n self.removeListener('close', onclose);\n self.removeListener('upgrading', onupgrade);\n }\n\n transport.once('open', onTransportOpen);\n transport.once('error', onerror);\n transport.once('close', onTransportClose);\n\n this.once('close', onclose);\n this.once('upgrading', onupgrade);\n\n transport.open();\n};\n\n/**\n * Called when connection is deemed open.\n *\n * @api public\n */\n\nSocket.prototype.onOpen = function () {\n debug('socket open');\n this.readyState = 'open';\n Socket.priorWebsocketSuccess = 'websocket' === this.transport.name;\n this.emit('open');\n this.flush();\n\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if ('open' === this.readyState && this.upgrade && this.transport.pause) {\n debug('starting upgrade probes');\n for (var i = 0, l = this.upgrades.length; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n};\n\n/**\n * Handles a packet.\n *\n * @api private\n */\n\nSocket.prototype.onPacket = function (packet) {\n if ('opening' === this.readyState || 'open' === this.readyState ||\n 'closing' === this.readyState) {\n debug('socket receive: type \"%s\", data \"%s\"', packet.type, packet.data);\n\n this.emit('packet', packet);\n\n // Socket is live - any packet counts\n this.emit('heartbeat');\n\n switch (packet.type) {\n case 'open':\n this.onHandshake(JSON.parse(packet.data));\n break;\n\n case 'pong':\n this.setPing();\n this.emit('pong');\n break;\n\n case 'error':\n var err = new Error('server error');\n err.code = packet.data;\n this.onError(err);\n break;\n\n case 'message':\n this.emit('data', packet.data);\n this.emit('message', packet.data);\n break;\n }\n } else {\n debug('packet received with socket readyState \"%s\"', this.readyState);\n }\n};\n\n/**\n * Called upon handshake completion.\n *\n * @param {Object} handshake obj\n * @api private\n */\n\nSocket.prototype.onHandshake = function (data) {\n this.emit('handshake', data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.onOpen();\n // In case open handler closes socket\n if ('closed' === this.readyState) return;\n this.setPing();\n\n // Prolong liveness of socket on heartbeat\n this.removeListener('heartbeat', this.onHeartbeat);\n this.on('heartbeat', this.onHeartbeat);\n};\n\n/**\n * Resets ping timeout.\n *\n * @api private\n */\n\nSocket.prototype.onHeartbeat = function (timeout) {\n clearTimeout(this.pingTimeoutTimer);\n var self = this;\n self.pingTimeoutTimer = setTimeout(function () {\n if ('closed' === self.readyState) return;\n self.onClose('ping timeout');\n }, timeout || (self.pingInterval + self.pingTimeout));\n};\n\n/**\n * Pings server every `this.pingInterval` and expects response\n * within `this.pingTimeout` or closes connection.\n *\n * @api private\n */\n\nSocket.prototype.setPing = function () {\n var self = this;\n clearTimeout(self.pingIntervalTimer);\n self.pingIntervalTimer = setTimeout(function () {\n debug('writing ping packet - expecting pong within %sms', self.pingTimeout);\n self.ping();\n self.onHeartbeat(self.pingTimeout);\n }, self.pingInterval);\n};\n\n/**\n* Sends a ping packet.\n*\n* @api private\n*/\n\nSocket.prototype.ping = function () {\n var self = this;\n this.sendPacket('ping', function () {\n self.emit('ping');\n });\n};\n\n/**\n * Called on `drain` event\n *\n * @api private\n */\n\nSocket.prototype.onDrain = function () {\n this.writeBuffer.splice(0, this.prevBufferLen);\n\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n\n if (0 === this.writeBuffer.length) {\n this.emit('drain');\n } else {\n this.flush();\n }\n};\n\n/**\n * Flush write buffers.\n *\n * @api private\n */\n\nSocket.prototype.flush = function () {\n if ('closed' !== this.readyState && this.transport.writable &&\n !this.upgrading && this.writeBuffer.length) {\n debug('flushing %d packets in socket', this.writeBuffer.length);\n this.transport.send(this.writeBuffer);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = this.writeBuffer.length;\n this.emit('flush');\n }\n};\n\n/**\n * Sends a message.\n *\n * @param {String} message.\n * @param {Function} callback function.\n * @param {Object} options.\n * @return {Socket} for chaining.\n * @api public\n */\n\nSocket.prototype.write =\nSocket.prototype.send = function (msg, options, fn) {\n this.sendPacket('message', msg, options, fn);\n return this;\n};\n\n/**\n * Sends a packet.\n *\n * @param {String} packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} callback function.\n * @api private\n */\n\nSocket.prototype.sendPacket = function (type, data, options, fn) {\n if ('function' === typeof data) {\n fn = data;\n data = undefined;\n }\n\n if ('function' === typeof options) {\n fn = options;\n options = null;\n }\n\n if ('closing' === this.readyState || 'closed' === this.readyState) {\n return;\n }\n\n options = options || {};\n options.compress = false !== options.compress;\n\n var packet = {\n type: type,\n data: data,\n options: options\n };\n this.emit('packetCreate', packet);\n this.writeBuffer.push(packet);\n if (fn) this.once('flush', fn);\n this.flush();\n};\n\n/**\n * Closes the connection.\n *\n * @api private\n */\n\nSocket.prototype.close = function () {\n if ('opening' === this.readyState || 'open' === this.readyState) {\n this.readyState = 'closing';\n\n var self = this;\n\n if (this.writeBuffer.length) {\n this.once('drain', function () {\n if (this.upgrading) {\n waitForUpgrade();\n } else {\n close();\n }\n });\n } else if (this.upgrading) {\n waitForUpgrade();\n } else {\n close();\n }\n }\n\n function close () {\n self.onClose('forced close');\n debug('socket closing - telling transport to close');\n self.transport.close();\n }\n\n function cleanupAndClose () {\n self.removeListener('upgrade', cleanupAndClose);\n self.removeListener('upgradeError', cleanupAndClose);\n close();\n }\n\n function waitForUpgrade () {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n self.once('upgrade', cleanupAndClose);\n self.once('upgradeError', cleanupAndClose);\n }\n\n return this;\n};\n\n/**\n * Called upon transport error\n *\n * @api private\n */\n\nSocket.prototype.onError = function (err) {\n debug('socket error %j', err);\n Socket.priorWebsocketSuccess = false;\n this.emit('error', err);\n this.onClose('transport error', err);\n};\n\n/**\n * Called upon transport close.\n *\n * @api private\n */\n\nSocket.prototype.onClose = function (reason, desc) {\n if ('opening' === this.readyState || 'open' === this.readyState || 'closing' === this.readyState) {\n debug('socket close with reason: \"%s\"', reason);\n var self = this;\n\n // clear timers\n clearTimeout(this.pingIntervalTimer);\n clearTimeout(this.pingTimeoutTimer);\n\n // stop event from firing again for transport\n this.transport.removeAllListeners('close');\n\n // ensure transport won't stay open\n this.transport.close();\n\n // ignore further transport communication\n this.transport.removeAllListeners();\n\n // set ready state\n this.readyState = 'closed';\n\n // clear session id\n this.id = null;\n\n // emit close event\n this.emit('close', reason, desc);\n\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n self.writeBuffer = [];\n self.prevBufferLen = 0;\n }\n};\n\n/**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} server upgrades\n * @api private\n *\n */\n\nSocket.prototype.filterUpgrades = function (upgrades) {\n var filteredUpgrades = [];\n for (var i = 0, j = upgrades.length; i < j; i++) {\n if (~index(this.transports, upgrades[i])) filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/engine.io-client/lib/socket.js\n// module id = 43\n// module chunks = 0","\n/**\n * Module exports.\n *\n * Logic borrowed from Modernizr:\n *\n * - https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cors.js\n */\n\ntry {\n module.exports = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n} catch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n module.exports = false;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/has-cors/index.js\n// module id = 44\n// module chunks = 0","/**\n * Module requirements.\n */\n\nvar XMLHttpRequest = require('xmlhttprequest-ssl');\nvar Polling = require('./polling');\nvar Emitter = require('component-emitter');\nvar inherit = require('component-inherit');\nvar debug = require('debug')('engine.io-client:polling-xhr');\n\n/**\n * Module exports.\n */\n\nmodule.exports = XHR;\nmodule.exports.Request = Request;\n\n/**\n * Empty function\n */\n\nfunction empty () {}\n\n/**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction XHR (opts) {\n Polling.call(this, opts);\n this.requestTimeout = opts.requestTimeout;\n this.extraHeaders = opts.extraHeaders;\n\n if (global.location) {\n var isSSL = 'https:' === location.protocol;\n var port = location.port;\n\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? 443 : 80;\n }\n\n this.xd = opts.hostname !== global.location.hostname ||\n port !== opts.port;\n this.xs = opts.secure !== isSSL;\n }\n}\n\n/**\n * Inherits from Polling.\n */\n\ninherit(XHR, Polling);\n\n/**\n * XHR supports binary\n */\n\nXHR.prototype.supportsBinary = true;\n\n/**\n * Creates a request.\n *\n * @param {String} method\n * @api private\n */\n\nXHR.prototype.request = function (opts) {\n opts = opts || {};\n opts.uri = this.uri();\n opts.xd = this.xd;\n opts.xs = this.xs;\n opts.agent = this.agent || false;\n opts.supportsBinary = this.supportsBinary;\n opts.enablesXDR = this.enablesXDR;\n\n // SSL options for Node.js client\n opts.pfx = this.pfx;\n opts.key = this.key;\n opts.passphrase = this.passphrase;\n opts.cert = this.cert;\n opts.ca = this.ca;\n opts.ciphers = this.ciphers;\n opts.rejectUnauthorized = this.rejectUnauthorized;\n opts.requestTimeout = this.requestTimeout;\n\n // other options for Node.js client\n opts.extraHeaders = this.extraHeaders;\n\n return new Request(opts);\n};\n\n/**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @api private\n */\n\nXHR.prototype.doWrite = function (data, fn) {\n var isBinary = typeof data !== 'string' && data !== undefined;\n var req = this.request({ method: 'POST', data: data, isBinary: isBinary });\n var self = this;\n req.on('success', fn);\n req.on('error', function (err) {\n self.onError('xhr post error', err);\n });\n this.sendXhr = req;\n};\n\n/**\n * Starts a poll cycle.\n *\n * @api private\n */\n\nXHR.prototype.doPoll = function () {\n debug('xhr poll');\n var req = this.request();\n var self = this;\n req.on('data', function (data) {\n self.onData(data);\n });\n req.on('error', function (err) {\n self.onError('xhr poll error', err);\n });\n this.pollXhr = req;\n};\n\n/**\n * Request constructor\n *\n * @param {Object} options\n * @api public\n */\n\nfunction Request (opts) {\n this.method = opts.method || 'GET';\n this.uri = opts.uri;\n this.xd = !!opts.xd;\n this.xs = !!opts.xs;\n this.async = false !== opts.async;\n this.data = undefined !== opts.data ? opts.data : null;\n this.agent = opts.agent;\n this.isBinary = opts.isBinary;\n this.supportsBinary = opts.supportsBinary;\n this.enablesXDR = opts.enablesXDR;\n this.requestTimeout = opts.requestTimeout;\n\n // SSL options for Node.js client\n this.pfx = opts.pfx;\n this.key = opts.key;\n this.passphrase = opts.passphrase;\n this.cert = opts.cert;\n this.ca = opts.ca;\n this.ciphers = opts.ciphers;\n this.rejectUnauthorized = opts.rejectUnauthorized;\n\n // other options for Node.js client\n this.extraHeaders = opts.extraHeaders;\n\n this.create();\n}\n\n/**\n * Mix in `Emitter`.\n */\n\nEmitter(Request.prototype);\n\n/**\n * Creates the XHR object and sends the request.\n *\n * @api private\n */\n\nRequest.prototype.create = function () {\n var opts = { agent: this.agent, xdomain: this.xd, xscheme: this.xs, enablesXDR: this.enablesXDR };\n\n // SSL options for Node.js client\n opts.pfx = this.pfx;\n opts.key = this.key;\n opts.passphrase = this.passphrase;\n opts.cert = this.cert;\n opts.ca = this.ca;\n opts.ciphers = this.ciphers;\n opts.rejectUnauthorized = this.rejectUnauthorized;\n\n var xhr = this.xhr = new XMLHttpRequest(opts);\n var self = this;\n\n try {\n debug('xhr open %s: %s', this.method, this.uri);\n xhr.open(this.method, this.uri, this.async);\n try {\n if (this.extraHeaders) {\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (var i in this.extraHeaders) {\n if (this.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this.extraHeaders[i]);\n }\n }\n }\n } catch (e) {}\n\n if ('POST' === this.method) {\n try {\n if (this.isBinary) {\n xhr.setRequestHeader('Content-type', 'application/octet-stream');\n } else {\n xhr.setRequestHeader('Content-type', 'text/plain;charset=UTF-8');\n }\n } catch (e) {}\n }\n\n try {\n xhr.setRequestHeader('Accept', '*/*');\n } catch (e) {}\n\n // ie6 check\n if ('withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n if (this.requestTimeout) {\n xhr.timeout = this.requestTimeout;\n }\n\n if (this.hasXDR()) {\n xhr.onload = function () {\n self.onLoad();\n };\n xhr.onerror = function () {\n self.onError(xhr.responseText);\n };\n } else {\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 2) {\n var contentType;\n try {\n contentType = xhr.getResponseHeader('Content-Type');\n } catch (e) {}\n if (contentType === 'application/octet-stream') {\n xhr.responseType = 'arraybuffer';\n }\n }\n if (4 !== xhr.readyState) return;\n if (200 === xhr.status || 1223 === xhr.status) {\n self.onLoad();\n } else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n setTimeout(function () {\n self.onError(xhr.status);\n }, 0);\n }\n };\n }\n\n debug('xhr data %s', this.data);\n xhr.send(this.data);\n } catch (e) {\n // Need to defer since .create() is called directly fhrom the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n setTimeout(function () {\n self.onError(e);\n }, 0);\n return;\n }\n\n if (global.document) {\n this.index = Request.requestsCount++;\n Request.requests[this.index] = this;\n }\n};\n\n/**\n * Called upon successful response.\n *\n * @api private\n */\n\nRequest.prototype.onSuccess = function () {\n this.emit('success');\n this.cleanup();\n};\n\n/**\n * Called if we have data.\n *\n * @api private\n */\n\nRequest.prototype.onData = function (data) {\n this.emit('data', data);\n this.onSuccess();\n};\n\n/**\n * Called upon error.\n *\n * @api private\n */\n\nRequest.prototype.onError = function (err) {\n this.emit('error', err);\n this.cleanup(true);\n};\n\n/**\n * Cleans up house.\n *\n * @api private\n */\n\nRequest.prototype.cleanup = function (fromError) {\n if ('undefined' === typeof this.xhr || null === this.xhr) {\n return;\n }\n // xmlhttprequest\n if (this.hasXDR()) {\n this.xhr.onload = this.xhr.onerror = empty;\n } else {\n this.xhr.onreadystatechange = empty;\n }\n\n if (fromError) {\n try {\n this.xhr.abort();\n } catch (e) {}\n }\n\n if (global.document) {\n delete Request.requests[this.index];\n }\n\n this.xhr = null;\n};\n\n/**\n * Called upon load.\n *\n * @api private\n */\n\nRequest.prototype.onLoad = function () {\n var data;\n try {\n var contentType;\n try {\n contentType = this.xhr.getResponseHeader('Content-Type');\n } catch (e) {}\n if (contentType === 'application/octet-stream') {\n data = this.xhr.response || this.xhr.responseText;\n } else {\n data = this.xhr.responseText;\n }\n } catch (e) {\n this.onError(e);\n }\n if (null != data) {\n this.onData(data);\n }\n};\n\n/**\n * Check if it has XDomainRequest.\n *\n * @api private\n */\n\nRequest.prototype.hasXDR = function () {\n return 'undefined' !== typeof global.XDomainRequest && !this.xs && this.enablesXDR;\n};\n\n/**\n * Aborts the request.\n *\n * @api public\n */\n\nRequest.prototype.abort = function () {\n this.cleanup();\n};\n\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\n\nRequest.requestsCount = 0;\nRequest.requests = {};\n\nif (global.document) {\n if (global.attachEvent) {\n global.attachEvent('onunload', unloadHandler);\n } else if (global.addEventListener) {\n global.addEventListener('beforeunload', unloadHandler, false);\n }\n}\n\nfunction unloadHandler () {\n for (var i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/engine.io-client/lib/transports/polling-xhr.js\n// module id = 45\n// module chunks = 0","\n/**\n * Gets the keys for an object.\n *\n * @return {Array} keys\n * @api private\n */\n\nmodule.exports = Object.keys || function keys (obj){\n var arr = [];\n var has = Object.prototype.hasOwnProperty;\n\n for (var i in obj) {\n if (has.call(obj, i)) {\n arr.push(i);\n }\n }\n return arr;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/engine.io-parser/lib/keys.js\n// module id = 46\n// module chunks = 0","/**\n * An abstraction for slicing an arraybuffer even when\n * ArrayBuffer.prototype.slice is not supported\n *\n * @api public\n */\n\nmodule.exports = function(arraybuffer, start, end) {\n var bytes = arraybuffer.byteLength;\n start = start || 0;\n end = end || bytes;\n\n if (arraybuffer.slice) { return arraybuffer.slice(start, end); }\n\n if (start < 0) { start += bytes; }\n if (end < 0) { end += bytes; }\n if (end > bytes) { end = bytes; }\n\n if (start >= bytes || start >= end || bytes === 0) {\n return new ArrayBuffer(0);\n }\n\n var abv = new Uint8Array(arraybuffer);\n var result = new Uint8Array(end - start);\n for (var i = start, ii = 0; i < end; i++, ii++) {\n result[ii] = abv[i];\n }\n return result.buffer;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/arraybuffer.slice/index.js\n// module id = 47\n// module chunks = 0","module.exports = after\n\nfunction after(count, callback, err_cb) {\n var bail = false\n err_cb = err_cb || noop\n proxy.count = count\n\n return (count === 0) ? callback() : proxy\n\n function proxy(err, result) {\n if (proxy.count <= 0) {\n throw new Error('after called too many times')\n }\n --proxy.count\n\n // after first error, rest are passed to err_cb\n if (err) {\n bail = true\n callback(err)\n // future error callbacks will go to error handler\n callback = err_cb\n } else if (proxy.count === 0 && !bail) {\n callback(null, result)\n }\n }\n}\n\nfunction noop() {}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/after/index.js\n// module id = 48\n// module chunks = 0","/*! https://mths.be/utf8js v2.1.2 by @mathias */\n;(function(root) {\n\n\t// Detect free variables `exports`\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code,\n\t// and use it as `root`\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar stringFromCharCode = String.fromCharCode;\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2decode(string) {\n\t\tvar output = [];\n\t\tvar counter = 0;\n\t\tvar length = string.length;\n\t\tvar value;\n\t\tvar extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2encode(array) {\n\t\tvar length = array.length;\n\t\tvar index = -1;\n\t\tvar value;\n\t\tvar output = '';\n\t\twhile (++index < length) {\n\t\t\tvalue = array[index];\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t}\n\t\treturn output;\n\t}\n\n\tfunction checkScalarValue(codePoint, strict) {\n\t\tif (codePoint >= 0xD800 && codePoint <= 0xDFFF) {\n\t\t\tif (strict) {\n\t\t\t\tthrow Error(\n\t\t\t\t\t'Lone surrogate U+' + codePoint.toString(16).toUpperCase() +\n\t\t\t\t\t' is not a scalar value'\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction createByte(codePoint, shift) {\n\t\treturn stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80);\n\t}\n\n\tfunction encodeCodePoint(codePoint, strict) {\n\t\tif ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence\n\t\t\treturn stringFromCharCode(codePoint);\n\t\t}\n\t\tvar symbol = '';\n\t\tif ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0);\n\t\t}\n\t\telse if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence\n\t\t\tif (!checkScalarValue(codePoint, strict)) {\n\t\t\t\tcodePoint = 0xFFFD;\n\t\t\t}\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\telse if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0);\n\t\t\tsymbol += createByte(codePoint, 12);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\tsymbol += stringFromCharCode((codePoint & 0x3F) | 0x80);\n\t\treturn symbol;\n\t}\n\n\tfunction utf8encode(string, opts) {\n\t\topts = opts || {};\n\t\tvar strict = false !== opts.strict;\n\n\t\tvar codePoints = ucs2decode(string);\n\t\tvar length = codePoints.length;\n\t\tvar index = -1;\n\t\tvar codePoint;\n\t\tvar byteString = '';\n\t\twhile (++index < length) {\n\t\t\tcodePoint = codePoints[index];\n\t\t\tbyteString += encodeCodePoint(codePoint, strict);\n\t\t}\n\t\treturn byteString;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction readContinuationByte() {\n\t\tif (byteIndex >= byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tvar continuationByte = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\tif ((continuationByte & 0xC0) == 0x80) {\n\t\t\treturn continuationByte & 0x3F;\n\t\t}\n\n\t\t// If we end up here, its not a continuation byte\n\t\tthrow Error('Invalid continuation byte');\n\t}\n\n\tfunction decodeSymbol(strict) {\n\t\tvar byte1;\n\t\tvar byte2;\n\t\tvar byte3;\n\t\tvar byte4;\n\t\tvar codePoint;\n\n\t\tif (byteIndex > byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tif (byteIndex == byteCount) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Read first byte\n\t\tbyte1 = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\t// 1-byte sequence (no continuation bytes)\n\t\tif ((byte1 & 0x80) == 0) {\n\t\t\treturn byte1;\n\t\t}\n\n\t\t// 2-byte sequence\n\t\tif ((byte1 & 0xE0) == 0xC0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x1F) << 6) | byte2;\n\t\t\tif (codePoint >= 0x80) {\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 3-byte sequence (may include unpaired surrogates)\n\t\tif ((byte1 & 0xF0) == 0xE0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3;\n\t\t\tif (codePoint >= 0x0800) {\n\t\t\t\treturn checkScalarValue(codePoint, strict) ? codePoint : 0xFFFD;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 4-byte sequence\n\t\tif ((byte1 & 0xF8) == 0xF0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tbyte4 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0C) |\n\t\t\t\t(byte3 << 0x06) | byte4;\n\t\t\tif (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\n\t\t\t\treturn codePoint;\n\t\t\t}\n\t\t}\n\n\t\tthrow Error('Invalid UTF-8 detected');\n\t}\n\n\tvar byteArray;\n\tvar byteCount;\n\tvar byteIndex;\n\tfunction utf8decode(byteString, opts) {\n\t\topts = opts || {};\n\t\tvar strict = false !== opts.strict;\n\n\t\tbyteArray = ucs2decode(byteString);\n\t\tbyteCount = byteArray.length;\n\t\tbyteIndex = 0;\n\t\tvar codePoints = [];\n\t\tvar tmp;\n\t\twhile ((tmp = decodeSymbol(strict)) !== false) {\n\t\t\tcodePoints.push(tmp);\n\t\t}\n\t\treturn ucs2encode(codePoints);\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar utf8 = {\n\t\t'version': '2.1.2',\n\t\t'encode': utf8encode,\n\t\t'decode': utf8decode\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn utf8;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = utf8;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tvar object = {};\n\t\t\tvar hasOwnProperty = object.hasOwnProperty;\n\t\t\tfor (var key in utf8) {\n\t\t\t\thasOwnProperty.call(utf8, key) && (freeExports[key] = utf8[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.utf8 = utf8;\n\t}\n\n}(this));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/engine.io-parser/lib/utf8.js\n// module id = 49\n// module chunks = 0","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/module.js\n// module id = 50\n// module chunks = 0","/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n(function(){\n \"use strict\";\n\n var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\n // Use a lookup table to find the index.\n var lookup = new Uint8Array(256);\n for (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n\n exports.encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer),\n i, len = bytes.length, base64 = \"\";\n\n for (i = 0; i < len; i+=3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if ((len % 3) === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n\n return base64;\n };\n\n exports.decode = function(base64) {\n var bufferLength = base64.length * 0.75,\n len = base64.length, i, p = 0,\n encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === \"=\") {\n bufferLength--;\n if (base64[base64.length - 2] === \"=\") {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i+=4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i+1)];\n encoded3 = lookup[base64.charCodeAt(i+2)];\n encoded4 = lookup[base64.charCodeAt(i+3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n };\n})();\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/base64-arraybuffer/lib/base64-arraybuffer.js\n// module id = 51\n// module chunks = 0","/**\n * Create a blob builder even when vendor prefixes exist\n */\n\nvar BlobBuilder = global.BlobBuilder\n || global.WebKitBlobBuilder\n || global.MSBlobBuilder\n || global.MozBlobBuilder;\n\n/**\n * Check if Blob constructor is supported\n */\n\nvar blobSupported = (function() {\n try {\n var a = new Blob(['hi']);\n return a.size === 2;\n } catch(e) {\n return false;\n }\n})();\n\n/**\n * Check if Blob constructor supports ArrayBufferViews\n * Fails in Safari 6, so we need to map to ArrayBuffers there.\n */\n\nvar blobSupportsArrayBufferView = blobSupported && (function() {\n try {\n var b = new Blob([new Uint8Array([1,2])]);\n return b.size === 2;\n } catch(e) {\n return false;\n }\n})();\n\n/**\n * Check if BlobBuilder is supported\n */\n\nvar blobBuilderSupported = BlobBuilder\n && BlobBuilder.prototype.append\n && BlobBuilder.prototype.getBlob;\n\n/**\n * Helper function that maps ArrayBufferViews to ArrayBuffers\n * Used by BlobBuilder constructor and old browsers that didn't\n * support it in the Blob constructor.\n */\n\nfunction mapArrayBufferViews(ary) {\n for (var i = 0; i < ary.length; i++) {\n var chunk = ary[i];\n if (chunk.buffer instanceof ArrayBuffer) {\n var buf = chunk.buffer;\n\n // if this is a subarray, make a copy so we only\n // include the subarray region from the underlying buffer\n if (chunk.byteLength !== buf.byteLength) {\n var copy = new Uint8Array(chunk.byteLength);\n copy.set(new Uint8Array(buf, chunk.byteOffset, chunk.byteLength));\n buf = copy.buffer;\n }\n\n ary[i] = buf;\n }\n }\n}\n\nfunction BlobBuilderConstructor(ary, options) {\n options = options || {};\n\n var bb = new BlobBuilder();\n mapArrayBufferViews(ary);\n\n for (var i = 0; i < ary.length; i++) {\n bb.append(ary[i]);\n }\n\n return (options.type) ? bb.getBlob(options.type) : bb.getBlob();\n};\n\nfunction BlobConstructor(ary, options) {\n mapArrayBufferViews(ary);\n return new Blob(ary, options || {});\n};\n\nmodule.exports = (function() {\n if (blobSupported) {\n return blobSupportsArrayBufferView ? global.Blob : BlobConstructor;\n } else if (blobBuilderSupported) {\n return BlobBuilderConstructor;\n } else {\n return undefined;\n }\n})();\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/blob/index.js\n// module id = 52\n// module chunks = 0","\n/**\n * Module requirements.\n */\n\nvar Polling = require('./polling');\nvar inherit = require('component-inherit');\n\n/**\n * Module exports.\n */\n\nmodule.exports = JSONPPolling;\n\n/**\n * Cached regular expressions.\n */\n\nvar rNewline = /\\n/g;\nvar rEscapedNewline = /\\\\n/g;\n\n/**\n * Global JSONP callbacks.\n */\n\nvar callbacks;\n\n/**\n * Noop.\n */\n\nfunction empty () { }\n\n/**\n * JSONP Polling constructor.\n *\n * @param {Object} opts.\n * @api public\n */\n\nfunction JSONPPolling (opts) {\n Polling.call(this, opts);\n\n this.query = this.query || {};\n\n // define global callbacks array if not present\n // we do this here (lazily) to avoid unneeded global pollution\n if (!callbacks) {\n // we need to consider multiple engines in the same page\n if (!global.___eio) global.___eio = [];\n callbacks = global.___eio;\n }\n\n // callback identifier\n this.index = callbacks.length;\n\n // add callback to jsonp global\n var self = this;\n callbacks.push(function (msg) {\n self.onData(msg);\n });\n\n // append to query string\n this.query.j = this.index;\n\n // prevent spurious errors from being emitted when the window is unloaded\n if (global.document && global.addEventListener) {\n global.addEventListener('beforeunload', function () {\n if (self.script) self.script.onerror = empty;\n }, false);\n }\n}\n\n/**\n * Inherits from Polling.\n */\n\ninherit(JSONPPolling, Polling);\n\n/*\n * JSONP only supports binary as base64 encoded strings\n */\n\nJSONPPolling.prototype.supportsBinary = false;\n\n/**\n * Closes the socket.\n *\n * @api private\n */\n\nJSONPPolling.prototype.doClose = function () {\n if (this.script) {\n this.script.parentNode.removeChild(this.script);\n this.script = null;\n }\n\n if (this.form) {\n this.form.parentNode.removeChild(this.form);\n this.form = null;\n this.iframe = null;\n }\n\n Polling.prototype.doClose.call(this);\n};\n\n/**\n * Starts a poll cycle.\n *\n * @api private\n */\n\nJSONPPolling.prototype.doPoll = function () {\n var self = this;\n var script = document.createElement('script');\n\n if (this.script) {\n this.script.parentNode.removeChild(this.script);\n this.script = null;\n }\n\n script.async = true;\n script.src = this.uri();\n script.onerror = function (e) {\n self.onError('jsonp poll error', e);\n };\n\n var insertAt = document.getElementsByTagName('script')[0];\n if (insertAt) {\n insertAt.parentNode.insertBefore(script, insertAt);\n } else {\n (document.head || document.body).appendChild(script);\n }\n this.script = script;\n\n var isUAgecko = 'undefined' !== typeof navigator && /gecko/i.test(navigator.userAgent);\n\n if (isUAgecko) {\n setTimeout(function () {\n var iframe = document.createElement('iframe');\n document.body.appendChild(iframe);\n document.body.removeChild(iframe);\n }, 100);\n }\n};\n\n/**\n * Writes with a hidden iframe.\n *\n * @param {String} data to send\n * @param {Function} called upon flush.\n * @api private\n */\n\nJSONPPolling.prototype.doWrite = function (data, fn) {\n var self = this;\n\n if (!this.form) {\n var form = document.createElement('form');\n var area = document.createElement('textarea');\n var id = this.iframeId = 'eio_iframe_' + this.index;\n var iframe;\n\n form.className = 'socketio';\n form.style.position = 'absolute';\n form.style.top = '-1000px';\n form.style.left = '-1000px';\n form.target = id;\n form.method = 'POST';\n form.setAttribute('accept-charset', 'utf-8');\n area.name = 'd';\n form.appendChild(area);\n document.body.appendChild(form);\n\n this.form = form;\n this.area = area;\n }\n\n this.form.action = this.uri();\n\n function complete () {\n initIframe();\n fn();\n }\n\n function initIframe () {\n if (self.iframe) {\n try {\n self.form.removeChild(self.iframe);\n } catch (e) {\n self.onError('jsonp polling iframe removal error', e);\n }\n }\n\n try {\n // ie6 dynamic iframes with target=\"\" support (thanks Chris Lambacher)\n var html = '<iframe src=\"javascript:0\" name=\"' + self.iframeId + '\">';\n iframe = document.createElement(html);\n } catch (e) {\n iframe = document.createElement('iframe');\n iframe.name = self.iframeId;\n iframe.src = 'javascript:0';\n }\n\n iframe.id = self.iframeId;\n\n self.form.appendChild(iframe);\n self.iframe = iframe;\n }\n\n initIframe();\n\n // escape \\n to prevent it from being converted into \\r\\n by some UAs\n // double escaping is required for escaped new lines because unescaping of new lines can be done safely on server-side\n data = data.replace(rEscapedNewline, '\\\\\\n');\n this.area.value = data.replace(rNewline, '\\\\n');\n\n try {\n this.form.submit();\n } catch (e) {}\n\n if (this.iframe.attachEvent) {\n this.iframe.onreadystatechange = function () {\n if (self.iframe.readyState === 'complete') {\n complete();\n }\n };\n } else {\n this.iframe.onload = complete;\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/engine.io-client/lib/transports/polling-jsonp.js\n// module id = 53\n// module chunks = 0","/**\n * Module dependencies.\n */\n\nvar Transport = require('../transport');\nvar parser = require('engine.io-parser');\nvar parseqs = require('parseqs');\nvar inherit = require('component-inherit');\nvar yeast = require('yeast');\nvar debug = require('debug')('engine.io-client:websocket');\nvar BrowserWebSocket = global.WebSocket || global.MozWebSocket;\nvar NodeWebSocket;\nif (typeof window === 'undefined') {\n try {\n NodeWebSocket = require('ws');\n } catch (e) { }\n}\n\n/**\n * Get either the `WebSocket` or `MozWebSocket` globals\n * in the browser or try to resolve WebSocket-compatible\n * interface exposed by `ws` for Node-like environment.\n */\n\nvar WebSocket = BrowserWebSocket;\nif (!WebSocket && typeof window === 'undefined') {\n WebSocket = NodeWebSocket;\n}\n\n/**\n * Module exports.\n */\n\nmodule.exports = WS;\n\n/**\n * WebSocket transport constructor.\n *\n * @api {Object} connection options\n * @api public\n */\n\nfunction WS (opts) {\n var forceBase64 = (opts && opts.forceBase64);\n if (forceBase64) {\n this.supportsBinary = false;\n }\n this.perMessageDeflate = opts.perMessageDeflate;\n this.usingBrowserWebSocket = BrowserWebSocket && !opts.forceNode;\n this.protocols = opts.protocols;\n if (!this.usingBrowserWebSocket) {\n WebSocket = NodeWebSocket;\n }\n Transport.call(this, opts);\n}\n\n/**\n * Inherits from Transport.\n */\n\ninherit(WS, Transport);\n\n/**\n * Transport name.\n *\n * @api public\n */\n\nWS.prototype.name = 'websocket';\n\n/*\n * WebSockets support binary\n */\n\nWS.prototype.supportsBinary = true;\n\n/**\n * Opens socket.\n *\n * @api private\n */\n\nWS.prototype.doOpen = function () {\n if (!this.check()) {\n // let probe timeout\n return;\n }\n\n var uri = this.uri();\n var protocols = this.protocols;\n var opts = {\n agent: this.agent,\n perMessageDeflate: this.perMessageDeflate\n };\n\n // SSL options for Node.js client\n opts.pfx = this.pfx;\n opts.key = this.key;\n opts.passphrase = this.passphrase;\n opts.cert = this.cert;\n opts.ca = this.ca;\n opts.ciphers = this.ciphers;\n opts.rejectUnauthorized = this.rejectUnauthorized;\n if (this.extraHeaders) {\n opts.headers = this.extraHeaders;\n }\n if (this.localAddress) {\n opts.localAddress = this.localAddress;\n }\n\n try {\n this.ws = this.usingBrowserWebSocket ? (protocols ? new WebSocket(uri, protocols) : new WebSocket(uri)) : new WebSocket(uri, protocols, opts);\n } catch (err) {\n return this.emit('error', err);\n }\n\n if (this.ws.binaryType === undefined) {\n this.supportsBinary = false;\n }\n\n if (this.ws.supports && this.ws.supports.binary) {\n this.supportsBinary = true;\n this.ws.binaryType = 'nodebuffer';\n } else {\n this.ws.binaryType = 'arraybuffer';\n }\n\n this.addEventListeners();\n};\n\n/**\n * Adds event listeners to the socket\n *\n * @api private\n */\n\nWS.prototype.addEventListeners = function () {\n var self = this;\n\n this.ws.onopen = function () {\n self.onOpen();\n };\n this.ws.onclose = function () {\n self.onClose();\n };\n this.ws.onmessage = function (ev) {\n self.onData(ev.data);\n };\n this.ws.onerror = function (e) {\n self.onError('websocket error', e);\n };\n};\n\n/**\n * Writes data to socket.\n *\n * @param {Array} array of packets.\n * @api private\n */\n\nWS.prototype.write = function (packets) {\n var self = this;\n this.writable = false;\n\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n var total = packets.length;\n for (var i = 0, l = total; i < l; i++) {\n (function (packet) {\n parser.encodePacket(packet, self.supportsBinary, function (data) {\n if (!self.usingBrowserWebSocket) {\n // always create a new object (GH-437)\n var opts = {};\n if (packet.options) {\n opts.compress = packet.options.compress;\n }\n\n if (self.perMessageDeflate) {\n var len = 'string' === typeof data ? global.Buffer.byteLength(data) : data.length;\n if (len < self.perMessageDeflate.threshold) {\n opts.compress = false;\n }\n }\n }\n\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n if (self.usingBrowserWebSocket) {\n // TypeError is thrown when passing the second argument on Safari\n self.ws.send(data);\n } else {\n self.ws.send(data, opts);\n }\n } catch (e) {\n debug('websocket closed before onclose event');\n }\n\n --total || done();\n });\n })(packets[i]);\n }\n\n function done () {\n self.emit('flush');\n\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n setTimeout(function () {\n self.writable = true;\n self.emit('drain');\n }, 0);\n }\n};\n\n/**\n * Called upon close\n *\n * @api private\n */\n\nWS.prototype.onClose = function () {\n Transport.prototype.onClose.call(this);\n};\n\n/**\n * Closes socket.\n *\n * @api private\n */\n\nWS.prototype.doClose = function () {\n if (typeof this.ws !== 'undefined') {\n this.ws.close();\n }\n};\n\n/**\n * Generates uri for connection.\n *\n * @api private\n */\n\nWS.prototype.uri = function () {\n var query = this.query || {};\n var schema = this.secure ? 'wss' : 'ws';\n var port = '';\n\n // avoid port if default for schema\n if (this.port && (('wss' === schema && Number(this.port) !== 443) ||\n ('ws' === schema && Number(this.port) !== 80))) {\n port = ':' + this.port;\n }\n\n // append timestamp to URI\n if (this.timestampRequests) {\n query[this.timestampParam] = yeast();\n }\n\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n\n query = parseqs.encode(query);\n\n // prepend ? to query\n if (query.length) {\n query = '?' + query;\n }\n\n var ipv6 = this.hostname.indexOf(':') !== -1;\n return schema + '://' + (ipv6 ? '[' + this.hostname + ']' : this.hostname) + port + this.path + query;\n};\n\n/**\n * Feature detection for WebSocket.\n *\n * @return {Boolean} whether this transport is available.\n * @api public\n */\n\nWS.prototype.check = function () {\n return !!WebSocket && !('__initialize' in WebSocket && this.name === WS.prototype.name);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/engine.io-client/lib/transports/websocket.js\n// module id = 54\n// module chunks = 0","module.exports = toArray\n\nfunction toArray(list, index) {\n var array = []\n\n index = index || 0\n\n for (var i = index || 0; i < list.length; i++) {\n array[i - index] = list[i]\n }\n\n return array\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/to-array/index.js\n// module id = 56\n// module chunks = 0","\n/**\n * Expose `Backoff`.\n */\n\nmodule.exports = Backoff;\n\n/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\n\nBackoff.prototype.duration = function(){\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\n\nBackoff.prototype.reset = function(){\n this.attempts = 0;\n};\n\n/**\n * Set the minimum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMin = function(min){\n this.ms = min;\n};\n\n/**\n * Set the maximum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMax = function(max){\n this.max = max;\n};\n\n/**\n * Set the jitter\n *\n * @api public\n */\n\nBackoff.prototype.setJitter = function(jitter){\n this.jitter = jitter;\n};\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/backo2/index.js\n// module id = 57\n// module chunks = 0","if (!(\"indexOf\" in Array.prototype)) {\n Array.prototype.indexOf = function(find, i) {\n if (i === undefined) {\n i = 0;\n }\n if (i < 0) {\n i += this.length;\n }\n if (i < 0) {\n i = 0;\n }\n for (var n = this.length; i < n; i += 1) {\n if (i in this && this[i] === find) {\n return i;\n }\n }\n return -1;\n };\n}\n\n// Production steps of ECMA-262, Edition 5, 15.4.4.19\n// Reference: http://es5.github.io/#x15.4.4.19\nif (!Array.prototype.map) {\n Array.prototype.map = function(callback, thisArg) {\n var T, A, k;\n\n if (this == null) {\n throw new TypeError(\" this is null or not defined\");\n }\n\n // 1. Let O be the result of calling ToObject passing the |this|\n // value as the argument.\n var O = Object(this);\n\n // 2. Let lenValue be the result of calling the Get internal\n // method of O with the argument \"length\".\n // 3. Let len be ToUint32(lenValue).\n var len = O.length >>> 0;\n\n // 4. If IsCallable(callback) is false, throw a TypeError exception.\n // See: http://es5.github.com/#x9.11\n if (typeof callback !== \"function\") {\n throw new TypeError(callback + \" is not a function\");\n }\n\n // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.\n if (arguments.length > 1) {\n T = thisArg;\n }\n\n // 6. Let A be a new array created as if by the expression new Array(len)\n // where Array is the standard built-in constructor with that name and\n // len is the value of len.\n A = new Array(len);\n\n // 7. Let k be 0\n k = 0;\n\n // 8. Repeat, while k < len\n while (k < len) {\n var kValue, mappedValue;\n\n // a. Let Pk be ToString(k).\n // This is implicit for LHS operands of the in operator\n // b. Let kPresent be the result of calling the HasProperty internal\n // method of O with argument Pk.\n // This step can be combined with c\n // c. If kPresent is true, then\n if (k in O) {\n // i. Let kValue be the result of calling the Get internal\n // method of O with argument Pk.\n kValue = O[k];\n\n // ii. Let mappedValue be the result of calling the Call internal\n // method of callback with T as the this value and argument\n // list containing kValue, k, and O.\n mappedValue = callback.call(T, kValue, k, O);\n\n // iii. Call the DefineOwnProperty internal method of A with arguments\n // Pk, Property Descriptor\n // { Value: mappedValue,\n // Writable: true,\n // Enumerable: true,\n // Configurable: true },\n // and false.\n\n // In browsers that support Object.defineProperty, use the following:\n // Object.defineProperty(A, k, {\n // value: mappedValue,\n // writable: true,\n // enumerable: true,\n // configurable: true\n // });\n\n // For best browser support, use the following:\n A[k] = mappedValue;\n }\n // d. Increase k by 1.\n k++;\n }\n\n // 9. return A\n return A;\n };\n}\n\nif (!Array.prototype.filter) {\n Array.prototype.filter = function(fun /*, thisArg*/) {\n \"use strict\";\n\n if (this === void 0 || this === null) {\n throw new TypeError();\n }\n\n var t = Object(this);\n var len = t.length >>> 0;\n if (typeof fun !== \"function\") {\n throw new TypeError();\n }\n\n var res = [];\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n for (var i = 0; i < len; i++) {\n if (i in t) {\n var val = t[i];\n\n // NOTE: Technically this should Object.defineProperty at\n // the next index, as push can be affected by\n // properties on Object.prototype and Array.prototype.\n // But that method's new, and collisions should be\n // rare, so use the more-compatible alternative.\n if (fun.call(thisArg, val, i, t)) {\n res.push(val);\n }\n }\n }\n\n return res;\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/client-shims.js","import { Reloader } from \"../vendor/Reloader\";\nimport { Timer } from \"../vendor/Timer\";\n\nconst events = require(\"./events\");\nconst utils = require(\"./browser.utils\");\nconst emitter = require(\"./emitter\");\nconst sync = exports;\nconst nanlogger = require(\"nanologger\");\nconst log = nanlogger(\"Browsersync\", { colors: { magenta: \"#0F2634\" } });\nconst reloader = new Reloader(window, log, Timer);\n\nconst options = {\n tagNames: {\n css: \"link\",\n jpg: \"img\",\n jpeg: \"img\",\n png: \"img\",\n svg: \"img\",\n gif: \"img\",\n js: \"script\"\n },\n attrs: {\n link: \"href\",\n img: \"src\",\n script: \"src\"\n },\n blacklist: [\n // never allow .map files through\n function(incoming) {\n return incoming.ext === \"map\";\n }\n ]\n};\n\nconst OPT_PATH = \"codeSync\";\nconst current = function() {\n return window.location.pathname;\n};\n\n/**\n * @param {BrowserSync} bs\n */\nsync.init = function(bs) {\n if (bs.options.tagNames) {\n options.tagNames = bs.options.tagNames;\n }\n\n if (bs.options.scrollRestoreTechnique === \"window.name\") {\n sync.saveScrollInName(emitter);\n } else {\n sync.saveScrollInCookie(utils.getWindow(), utils.getDocument());\n }\n\n bs.socket.on(\"file:reload\", sync.reload(bs));\n bs.socket.on(\"browser:reload\", function() {\n if (bs.canSync({ url: current() }, OPT_PATH)) {\n sync.reloadBrowser(true, bs);\n }\n });\n};\n\n/**\n * Use window.name to store/restore scroll position\n */\nsync.saveScrollInName = function() {\n var PRE = \"<<BS_START>>\";\n var SUF = \"<<BS_END>>\";\n var regex = new RegExp(PRE + \"(.+?)\" + SUF);\n var $window = utils.getWindow();\n var saved = {};\n\n /**\n * Listen for the browser:hardReload event.\n * When it runs, save the current scroll position\n * in window.name\n */\n emitter.on(\"browser:hardReload\", function(data) {\n var newname = [\n $window.name,\n PRE,\n JSON.stringify({\n bs: {\n hardReload: true,\n scroll: data.scrollPosition\n }\n }),\n SUF\n ].join(\"\");\n $window.name = newname;\n });\n\n /**\n * On page load, check window.name for an existing\n * BS json blob & parse it.\n */\n try {\n var json = $window.name.match(regex);\n if (json) {\n saved = JSON.parse(json[1]);\n }\n } catch (e) {\n saved = {};\n }\n\n /**\n * If the JSON was parsed correctly, try to\n * find a scroll property and restore it.\n */\n if (saved.bs && saved.bs.hardReload && saved.bs.scroll) {\n utils.setScroll(saved.bs.scroll);\n }\n\n /**\n * Remove any existing BS json from window.name\n * to ensure we don't interfere with any other\n * libs who may be using it.\n */\n $window.name = $window.name.replace(regex, \"\");\n};\n\n/**\n * Use a cookie-drop to save scroll position of\n * @param $window\n * @param $document\n */\nsync.saveScrollInCookie = function($window, $document) {\n if (!utils.isOldIe()) {\n return;\n }\n\n if ($document.readyState === \"complete\") {\n utils.restoreScrollPosition();\n } else {\n events.manager.addEvent($document, \"readystatechange\", function() {\n if ($document.readyState === \"complete\") {\n utils.restoreScrollPosition();\n }\n });\n }\n\n emitter.on(\"browser:hardReload\", utils.saveScrollPosition);\n};\n\n/**\n * @param {BrowserSync} bs\n * @returns {*}\n */\nsync.reload = function(bs) {\n /**\n * @param data - from socket\n */\n return function(data) {\n if (!bs.canSync({ url: current() }, OPT_PATH)) {\n return;\n }\n\n if (data.url || !bs.options.injectChanges) {\n sync.reloadBrowser(true);\n }\n\n if (data.basename && data.ext) {\n if (sync.isBlacklisted(data)) {\n return;\n }\n\n reloader.reload(data, {\n ...options,\n liveCSS: true,\n liveImg: true\n });\n }\n };\n};\n\n/**\n * @param incoming\n * @returns {boolean}\n */\nsync.isBlacklisted = function(incoming) {\n return options.blacklist.some(function(fn) {\n return fn(incoming);\n });\n};\n\n/**\n * @param confirm\n */\nsync.reloadBrowser = function(confirm) {\n emitter.emit(\"browser:hardReload\", {\n scrollPosition: utils.getBrowserScrollPosition()\n });\n if (confirm) {\n utils.reloadBrowser();\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/code-sync.js","/**\n *\n * With thanks to https://github.com/livereload/livereload-js\n * :) :) :)\n *\n */\nimport {getLocation, pathFromUrl, pathsMatch, pickBestMatch, splitUrl, updateSearch} from \"../lib/utils\";\n\nvar hiddenElem;\n\ndeclare global {\n interface HTMLLinkElement {\n __LiveReload_pendingRemoval: boolean\n }\n}\n\nconst IMAGE_STYLES = [\n { selector: 'background', styleNames: ['backgroundImage'] },\n { selector: 'border', styleNames: ['borderImage', 'webkitBorderImage', 'MozBorderImage'] }\n];\n\nexport interface ReloadOptions {\n stylesheetReloadTimeout?: number;\n serverURL?: string;\n overrideURL?: string;\n liveCSS?: boolean;\n liveImg?: boolean;\n tagNames: {[index: string]: string}\n attrs: {[index: string]: string}\n}\n\nexport class Reloader {\n\n public options: any;\n public importCacheWaitPeriod: number;\n public document: Document;\n public knownToSupportCssOnLoad: boolean;\n public plugins: any[];\n\n constructor(public window: any, public logger, public Timer) {\n this.window = window;\n this.Timer = Timer;\n this.document = this.window.document;\n this.importCacheWaitPeriod = 200;\n this.plugins = [];\n }\n\n\n addPlugin(plugin) {\n return this.plugins.push(plugin);\n }\n\n\n analyze(callback) {\n return null;\n // return results;\n }\n\n\n reload(data, options: ReloadOptions, cb) {\n this.options = options; // avoid passing it through all the funcs\n const {path} = data;\n if (this.options.stylesheetReloadTimeout == null) { this.options.stylesheetReloadTimeout = 15000; }\n\n this.plugins.forEach(plugin => {\n if (plugin.reload && plugin.reload(path, options)) {\n return;\n }\n })\n\n if (options.liveCSS) {\n if (path.match(/\\.css$/i)) {\n this.logger.trace(`path.match(/\\\\.css$/i)`, true);\n if (this.reloadStylesheet(path)) {\n return;\n }\n }\n }\n if (options.liveImg) {\n if (path.match(/\\.(jpe?g|png|gif)$/i)) {\n this.logger.trace(`/\\\\.(jpe?g|png|gif)$/i`, true);\n this.reloadImages(path);\n return;\n }\n }\n\n this.logger.trace('Falling back to legacy method of replacing assets');\n\n /**\n * LEGACY\n */\n const domData = Reloader.getElems(data.ext, options);\n const elems = Reloader.getMatches(domData.elems, data.basename, domData.attr);\n\n for (var i = 0, n = elems.length; i < n; i += 1) {\n this.swapFile(elems[i], domData, options);\n }\n\n (cb || function() {})(elems, domData);\n }\n public static getElems(fileExtension, options: ReloadOptions) {\n const tagName = options.tagNames[fileExtension];\n const attr = options.attrs[tagName];\n return {\n attr,\n tagName,\n elems: document.getElementsByTagName(tagName)\n };\n }\n\n public static getMatches(elems, url, attr) {\n\n if (url[0] === \"*\") {\n return elems;\n }\n\n var matches = [];\n var urlMatcher = new RegExp(\"(^|/)\" + url);\n\n for (var i = 0, len = elems.length; i < len; i += 1) {\n if (urlMatcher.test(elems[i][attr])) {\n matches.push(elems[i]);\n }\n }\n\n return matches;\n };\n\n public swapFile(elem, domData, options) {\n\n const attr = domData.attr;\n const currentValue = elem[attr];\n const timeStamp = new Date().getTime();\n const key = \"browsersync-legacy\";\n const suffix = key + \"=\" + timeStamp;\n const anchor = getLocation(currentValue);\n const search = updateSearch(anchor.search, key, suffix);\n\n switch (domData.tagName) {\n case 'link': {\n this.logger.trace(`replacing LINK ${attr}`);\n this.reloadStylesheet(currentValue);\n break;\n }\n case 'img': {\n this.reloadImages(currentValue);\n break;\n }\n default: {\n if (options.timestamps === false) {\n elem[attr] = anchor.href;\n } else {\n elem[attr] = anchor.href.split(\"?\")[0] + search;\n }\n\n this.logger.info(`reloading ${elem[attr]}`);\n\n setTimeout(function () {\n if (!hiddenElem) {\n hiddenElem = document.createElement(\"DIV\");\n document.body.appendChild(hiddenElem);\n } else {\n hiddenElem.style.display = \"none\";\n hiddenElem.style.display = \"block\";\n }\n }, 200);\n }\n }\n\n return {\n elem: elem,\n timeStamp: timeStamp\n };\n };\n\n\n reloadPage() {\n return this.window.document.location.reload();\n }\n\n\n reloadImages(path) {\n const expando = this.generateUniqueString();\n\n [].slice.call(this.document.images).forEach(img => {\n if (pathsMatch(path, pathFromUrl(img.src))) {\n img.src = this.generateCacheBustUrl(img.src, expando);\n }\n });\n\n if (this.document.querySelectorAll) {\n IMAGE_STYLES.forEach(({ selector, styleNames }) => {\n [].slice.call(this.document.querySelectorAll(`[style*=${selector}]`)).forEach(img => {\n this.reloadStyleImages(img.style, styleNames, path, expando);\n });\n });\n }\n\n if (this.document.styleSheets) {\n return [].slice.call(this.document.styleSheets)\n .map((styleSheet) => {\n return this.reloadStylesheetImages(styleSheet, path, expando);\n });\n }\n }\n\n\n reloadStylesheetImages(styleSheet, path, expando) {\n let rules;\n try {\n rules = styleSheet != null ? styleSheet.cssRules : undefined;\n } catch (e) {}\n //\n if (!rules) { return; }\n\n [].slice.call(rules).forEach(rule => {\n switch (rule.type) {\n case CSSRule.IMPORT_RULE:\n this.reloadStylesheetImages(rule.styleSheet, path, expando);\n break;\n case CSSRule.STYLE_RULE:\n [].slice.call(IMAGE_STYLES).forEach(({ styleNames }) => {\n this.reloadStyleImages((rule as any).style, styleNames, path, expando);\n })\n break;\n case CSSRule.MEDIA_RULE:\n this.reloadStylesheetImages(rule, path, expando);\n break;\n }\n })\n }\n\n\n reloadStyleImages(style, styleNames, path, expando) {\n [].slice.call(styleNames).forEach(styleName => {\n const value = style[styleName];\n if (typeof value === 'string') {\n const newValue = value.replace(new RegExp(`\\\\burl\\\\s*\\\\(([^)]*)\\\\)`), (match, src) => {\n if (pathsMatch(path, pathFromUrl(src))) {\n return `url(${this.generateCacheBustUrl(src, expando)})`;\n } else {\n return match;\n }\n });\n if (newValue !== value) {\n style[styleName] = newValue;\n }\n }\n })\n }\n\n\n reloadStylesheet(path) {\n // has to be a real array, because DOMNodeList will be modified\n let link;\n const links = ((() => {\n const result = [];\n [].slice.call(this.document.getElementsByTagName('link')).forEach(link => {\n if (link.rel.match(/^stylesheet$/i) && !link.__LiveReload_pendingRemoval) {\n result.push(link);\n }\n });\n return result;\n })());\n\n // find all imported stylesheets\n const imported = [];\n for (var style of Array.from(this.document.getElementsByTagName('style'))) {\n if (style.sheet) {\n this.collectImportedStylesheets(style, style.sheet, imported);\n }\n }\n for (link of Array.from(links)) {\n this.collectImportedStylesheets(link, link.sheet, imported);\n }\n\n // handle prefixfree\n if (this.window.StyleFix && this.document.querySelectorAll) {\n [].slice.call(this.document.querySelectorAll('style[data-href]')).forEach(style => {\n links.push(style);\n });\n }\n\n this.logger.debug(`found ${links.length} LINKed stylesheets, ${imported.length} @imported stylesheets`);\n const match = pickBestMatch(path, links.concat(imported), l => pathFromUrl(this.linkHref(l)));\n\n\n if (match) {\n if (match.object && match.object.rule) {\n this.logger.info(`reloading imported stylesheet: ${match.object.href}`);\n this.reattachImportedRule(match.object);\n } else {\n this.logger.info(`reloading stylesheet: ${this.linkHref(match.object)}`);\n this.reattachStylesheetLink(match.object);\n }\n } else {\n this.logger.info(`reloading all stylesheets because path '${path}' did not match any specific one`);\n links.forEach(link => this.reattachStylesheetLink(link));\n }\n return true;\n }\n\n\n collectImportedStylesheets(link, styleSheet, result) {\n // in WebKit, styleSheet.cssRules is null for inaccessible stylesheets;\n // Firefox/Opera may throw exceptions\n let rules;\n try {\n rules = styleSheet != null ? styleSheet.cssRules : undefined;\n } catch (e) {}\n //\n if (rules && rules.length) {\n for (let index = 0; index < rules.length; index++) {\n const rule = rules[index];\n switch (rule.type) {\n case CSSRule.CHARSET_RULE:\n break;\n case CSSRule.IMPORT_RULE:\n result.push({ link, rule, index, href: rule.href });\n this.collectImportedStylesheets(link, rule.styleSheet, result);\n break;\n default:\n break; // import rules can only be preceded by charset rules\n }\n }\n }\n }\n\n\n waitUntilCssLoads(clone, func) {\n let callbackExecuted = false;\n\n const executeCallback = () => {\n if (callbackExecuted) { return; }\n callbackExecuted = true;\n return func();\n };\n\n // supported by Chrome 19+, Safari 5.2+, Firefox 9+, Opera 9+, IE6+\n // http://www.zachleat.com/web/load-css-dynamically/\n // http://pieisgood.org/test/script-link-events/\n clone.onload = () => {\n this.logger.debug(\"the new stylesheet has finished loading\");\n this.knownToSupportCssOnLoad = true;\n return executeCallback();\n };\n\n if (!this.knownToSupportCssOnLoad) {\n // polling\n let poll;\n (poll = () => {\n if (clone.sheet) {\n this.logger.debug(\"polling until the new CSS finishes loading...\");\n return executeCallback();\n } else {\n return this.Timer.start(50, poll);\n }\n })();\n }\n\n // fail safe\n return this.Timer.start(this.options.stylesheetReloadTimeout, executeCallback);\n }\n\n\n linkHref(link) {\n // prefixfree uses data-href when it turns LINK into STYLE\n return link.href || link.getAttribute('data-href');\n }\n\n\n reattachStylesheetLink(link) {\n // ignore LINKs that will be removed by LR soon\n let clone;\n if (link.__LiveReload_pendingRemoval) { return; }\n link.__LiveReload_pendingRemoval = true;\n\n if (link.tagName === 'STYLE') {\n // prefixfree\n clone = this.document.createElement('link');\n clone.rel = 'stylesheet';\n clone.media = link.media;\n clone.disabled = link.disabled;\n } else {\n clone = link.cloneNode(false);\n }\n\n clone.href = this.generateCacheBustUrl(this.linkHref(link));\n\n // insert the new LINK before the old one\n const parent = link.parentNode;\n if (parent.lastChild === link) {\n parent.appendChild(clone);\n } else {\n parent.insertBefore(clone, link.nextSibling);\n }\n\n return this.waitUntilCssLoads(clone, () => {\n let additionalWaitingTime;\n if (/AppleWebKit/.test(navigator.userAgent)) {\n additionalWaitingTime = 5;\n } else {\n additionalWaitingTime = 200;\n }\n\n return this.Timer.start(additionalWaitingTime, () => {\n if (!link.parentNode) { return; }\n link.parentNode.removeChild(link);\n clone.onreadystatechange = null;\n\n return (this.window.StyleFix != null ? this.window.StyleFix.link(clone) : undefined);\n });\n }); // prefixfree\n }\n\n\n reattachImportedRule({ rule, index, link }) {\n const parent = rule.parentStyleSheet;\n const href = this.generateCacheBustUrl(rule.href);\n const media = rule.media.length ? [].join.call(rule.media, ', ') : '';\n const newRule = `@import url(\"${href}\") ${media};`;\n\n // used to detect if reattachImportedRule has been called again on the same rule\n rule.__LiveReload_newHref = href;\n\n // WORKAROUND FOR WEBKIT BUG: WebKit resets all styles if we add @import'ed\n // stylesheet that hasn't been cached yet. Workaround is to pre-cache the\n // stylesheet by temporarily adding it as a LINK tag.\n const tempLink = this.document.createElement(\"link\");\n tempLink.rel = 'stylesheet';\n tempLink.href = href;\n tempLink.__LiveReload_pendingRemoval = true; // exclude from path matching\n if (link.parentNode) {\n link.parentNode.insertBefore(tempLink, link);\n }\n\n // wait for it to load\n return this.Timer.start(this.importCacheWaitPeriod, () => {\n if (tempLink.parentNode) { tempLink.parentNode.removeChild(tempLink); }\n\n // if another reattachImportedRule call is in progress, abandon this one\n if (rule.__LiveReload_newHref !== href) { return; }\n\n parent.insertRule(newRule, index);\n parent.deleteRule(index+1);\n\n // save the new rule, so that we can detect another reattachImportedRule call\n rule = parent.cssRules[index];\n rule.__LiveReload_newHref = href;\n\n // repeat again for good measure\n return this.Timer.start(this.importCacheWaitPeriod, () => {\n // if another reattachImportedRule call is in progress, abandon this one\n if (rule.__LiveReload_newHref !== href) { return; }\n\n parent.insertRule(newRule, index);\n return parent.deleteRule(index+1);\n });\n });\n }\n\n\n generateUniqueString() {\n return `browsersync=${Date.now()}`;\n }\n\n\n generateCacheBustUrl(url, expando = this.generateUniqueString()) {\n let hash, oldParams;\n\n ({ url, hash, params: oldParams } = splitUrl(url));\n\n if (this.options.overrideURL) {\n if (url.indexOf(this.options.serverURL) < 0) {\n const originalUrl = url;\n url = this.options.serverURL + this.options.overrideURL + \"?url=\" + encodeURIComponent(url);\n this.logger.debug(`overriding source URL ${originalUrl} with ${url}`);\n }\n }\n\n let params = oldParams.replace(/(\\?|&)browsersync=(\\d+)/, (match, sep) => `${sep}${expando}`);\n if (params === oldParams) {\n if (oldParams.length === 0) {\n params = `?${expando}`;\n } else {\n params = `${oldParams}&${expando}`;\n }\n }\n\n return url + params + hash;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./vendor/Reloader.ts","export function each(incoming) {\n return [].slice.call(incoming || []);\n}\n\nexport const splitUrl = function(url) {\n let hash, index, params;\n if ((index = url.indexOf(\"#\")) >= 0) {\n hash = url.slice(index);\n url = url.slice(0, index);\n } else {\n hash = \"\";\n }\n\n if ((index = url.indexOf(\"?\")) >= 0) {\n params = url.slice(index);\n url = url.slice(0, index);\n } else {\n params = \"\";\n }\n\n return { url, params, hash };\n};\n\nexport const pathFromUrl = function(url) {\n let path;\n ({ url } = splitUrl(url));\n if (url.indexOf(\"file://\") === 0) {\n path = url.replace(new RegExp(`^file://(localhost)?`), \"\");\n } else {\n // http : // hostname :8080 /\n path = url.replace(new RegExp(`^([^:]+:)?//([^:/]+)(:\\\\d*)?/`), \"/\");\n }\n\n // decodeURI has special handling of stuff like semicolons, so use decodeURIComponent\n return decodeURIComponent(path);\n};\n\nexport const pickBestMatch = function(path, objects, pathFunc): any {\n let score;\n let bestMatch = { score: 0, object: null };\n\n objects.forEach(object => {\n score = numberOfMatchingSegments(path, pathFunc(object));\n if (score > bestMatch.score) {\n bestMatch = { object, score };\n }\n });\n\n if (bestMatch.score > 0) {\n return bestMatch;\n } else {\n return null;\n }\n};\n\nexport const numberOfMatchingSegments = function(path1, path2) {\n // get rid of leading slashes and normalize to lower case\n path1 = path1.replace(/^\\/+/, \"\").toLowerCase();\n path2 = path2.replace(/^\\/+/, \"\").toLowerCase();\n\n if (path1 === path2) {\n return 10000;\n }\n\n const comps1 = path1.split(\"/\").reverse();\n const comps2 = path2.split(\"/\").reverse();\n const len = Math.min(comps1.length, comps2.length);\n\n let eqCount = 0;\n while (eqCount < len && comps1[eqCount] === comps2[eqCount]) {\n ++eqCount;\n }\n\n return eqCount;\n};\n\nexport const pathsMatch = (path1, path2) =>\n numberOfMatchingSegments(path1, path2) > 0;\n\nexport function getLocation(url: string) {\n var location = document.createElement(\"a\");\n location.href = url;\n\n if (location.host === \"\") {\n location.href = location.href;\n }\n\n return location;\n}\n\n/**\n * @param {string} search\n * @param {string} key\n * @param {string} suffix\n */\nexport function updateSearch(search, key, suffix) {\n if (search === \"\") {\n return \"?\" + suffix;\n }\n\n return (\n \"?\" +\n search\n .slice(1)\n .split(\"&\")\n .map(function(item) {\n return item.split(\"=\");\n })\n .filter(function(tuple) {\n return tuple[0] !== key;\n })\n .map(function(item) {\n return [item[0], item[1]].join(\"=\");\n })\n .concat(suffix)\n .join(\"&\")\n );\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils.ts","/*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\nexport class Timer {\n public running = false;\n public id: any;\n public _handler: any;\n\n constructor(public func) {\n this.id = null;\n this._handler = () => {\n this.running = false;\n this.id = null;\n return this.func();\n };\n }\n\n public start(timeout) {\n if (this.running) { clearTimeout(this.id); }\n this.id = setTimeout(this._handler, timeout);\n return this.running = true;\n }\n\n public stop() {\n if (this.running) {\n clearTimeout(this.id);\n this.running = false; return this.id = null;\n }\n }\n\n public static start (timeout, func) {\n setTimeout(func, timeout);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./vendor/Timer.ts","var assert = require('assert')\nvar xtend = require('xtend')\n\nvar emojis = {\n trace: '🔍',\n debug: '🐛',\n info: '✨',\n warn: '⚠️',\n error: '🚨',\n fatal: '💀'\n}\n\nvar levels = {\n trace: 10,\n debug: 20,\n info: 30,\n warn: 40,\n error: 50,\n fatal: 60\n}\n\nvar defaultColors = {\n foreground: '#d3c0c8',\n background: '#2d2d2d',\n black: '#2d2d2d',\n red: '#f2777a',\n green: '#99cc99',\n yellow: '#ffcc66',\n blue: '#6699cc',\n magenta: '#cc99cc',\n cyan: '#66cccc',\n white: '#d3d0c8',\n brightBlack: '#747369'\n}\n\nmodule.exports = Nanologger\n\nfunction Nanologger (name, opts) {\n opts = opts || {}\n if (!(this instanceof Nanologger)) return new Nanologger(name, opts)\n\n assert.equal(typeof opts, 'object', 'nanologger: opts should be type object')\n\n this._name = name || ''\n this._colors = xtend(defaultColors, opts.colors || {})\n\n try {\n this.logLevel = window.localStorage.getItem('logLevel') || 'info'\n } catch (e) {\n this.logLevel = 'info'\n }\n\n this._logLevel = levels[this.logLevel]\n}\n\nNanologger.prototype.trace = function () {\n var args = [ 'trace' ]\n for (var i = 0, len = arguments.length; i < len; i++) args.push(arguments[i])\n this._print.apply(this, args)\n}\n\nNanologger.prototype.debug = function () {\n var args = [ 'debug' ]\n for (var i = 0, len = arguments.length; i < len; i++) args.push(arguments[i])\n this._print.apply(this, args)\n}\n\nNanologger.prototype.info = function () {\n var args = [ 'info' ]\n for (var i = 0, len = arguments.length; i < len; i++) args.push(arguments[i])\n this._print.apply(this, args)\n}\n\nNanologger.prototype.warn = function () {\n var args = [ 'warn' ]\n for (var i = 0, len = arguments.length; i < len; i++) args.push(arguments[i])\n this._print.apply(this, args)\n}\n\nNanologger.prototype.error = function () {\n var args = [ 'error' ]\n for (var i = 0, len = arguments.length; i < len; i++) args.push(arguments[i])\n this._print.apply(this, args)\n}\n\nNanologger.prototype.fatal = function () {\n var args = [ 'fatal' ]\n for (var i = 0, len = arguments.length; i < len; i++) args.push(arguments[i])\n this._print.apply(this, args)\n}\n\nNanologger.prototype._print = function (level) {\n if (levels[level] < this._logLevel) return\n\n var time = getTimeStamp()\n var emoji = emojis[level]\n var name = this._name || 'unknown'\n\n var msgColor = (level === 'error' || level.fatal)\n ? this._colors.red\n : level === 'warn'\n ? this._colors.yellow\n : this._colors.green\n\n var objs = []\n var args = [ null ]\n var msg = '%c%s ' + emoji + ' %c%s'\n\n args.push(color(this._colors.brightBlack), time)\n args.push(color(this._colors.magenta), name)\n\n for (var i = 1, len = arguments.length; i < len; i++) {\n var arg = arguments[i]\n if (typeof arg === 'string') {\n if (i === 1) {\n // first string argument is in color\n msg += ' %c%s'\n args.push(color(msgColor))\n args.push(arg)\n } else if (/ms$/.test(arg)) {\n // arguments finishing with 'ms', grey out\n msg += ' %c%s'\n args.push(color(this._colors.brightBlack))\n args.push(arg)\n } else {\n // normal colors\n msg += ' %c%s'\n args.push(color(this._colors.white))\n args.push(arg)\n }\n } else if (typeof arg === 'number') {\n msg += ' %c%d'\n args.push(color(this._colors.magenta))\n args.push(arg)\n } else {\n objs.push(arg)\n }\n }\n\n args[0] = msg\n objs.forEach(function (obj) {\n args.push(obj)\n })\n\n // In IE/Edge console functions don't inherit from Function.prototype\n // so this is necessary to get all the args applied.\n Function.prototype.apply.apply(console.log, [console, args])\n}\n\nfunction color (color) {\n return 'color: ' + color + ';'\n}\n\nfunction getTimeStamp () {\n var date = new Date()\n var hours = pad(date.getHours().toString())\n var minutes = pad(date.getMinutes().toString())\n var seconds = pad(date.getSeconds().toString())\n return hours + ':' + minutes + ':' + seconds\n}\n\nfunction pad (str) {\n return str.length !== 2 ? 0 + str : str\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/nanologger/index.js\n// module id = 63\n// module chunks = 0","'use strict';\n\n// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n}\nfunction isBuffer(b) {\n if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {\n return global.Buffer.isBuffer(b);\n }\n return !!(b != null && b._isBuffer);\n}\n\n// based on node assert, original notice:\n\n// http://wiki.commonjs.org/wiki/Unit_Testing/1.0\n//\n// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!\n//\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar util = require('util/');\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar pSlice = Array.prototype.slice;\nvar functionsHaveNames = (function () {\n return function foo() {}.name === 'foo';\n}());\nfunction pToString (obj) {\n return Object.prototype.toString.call(obj);\n}\nfunction isView(arrbuf) {\n if (isBuffer(arrbuf)) {\n return false;\n }\n if (typeof global.ArrayBuffer !== 'function') {\n return false;\n }\n if (typeof ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(arrbuf);\n }\n if (!arrbuf) {\n return false;\n }\n if (arrbuf instanceof DataView) {\n return true;\n }\n if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {\n return true;\n }\n return false;\n}\n// 1. The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\n\n// 2. The AssertionError is defined in assert.\n// new assert.AssertionError({ message: message,\n// actual: actual,\n// expected: expected })\n\nvar regex = /\\s*function\\s+([^\\(\\s]*)\\s*/;\n// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js\nfunction getName(func) {\n if (!util.isFunction(func)) {\n return;\n }\n if (functionsHaveNames) {\n return func.name;\n }\n var str = func.toString();\n var match = str.match(regex);\n return match && match[1];\n}\nassert.AssertionError = function AssertionError(options) {\n this.name = 'AssertionError';\n this.actual = options.actual;\n this.expected = options.expected;\n this.operator = options.operator;\n if (options.message) {\n this.message = options.message;\n this.generatedMessage = false;\n } else {\n this.message = getMessage(this);\n this.generatedMessage = true;\n }\n var stackStartFunction = options.stackStartFunction || fail;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, stackStartFunction);\n } else {\n // non v8 browsers so we can have a stacktrace\n var err = new Error();\n if (err.stack) {\n var out = err.stack;\n\n // try to strip useless frames\n var fn_name = getName(stackStartFunction);\n var idx = out.indexOf('\\n' + fn_name);\n if (idx >= 0) {\n // once we have located the function frame\n // we need to strip out everything before it (and its line)\n var next_line = out.indexOf('\\n', idx + 1);\n out = out.substring(next_line + 1);\n }\n\n this.stack = out;\n }\n }\n};\n\n// assert.AssertionError instanceof Error\nutil.inherits(assert.AssertionError, Error);\n\nfunction truncate(s, n) {\n if (typeof s === 'string') {\n return s.length < n ? s : s.slice(0, n);\n } else {\n return s;\n }\n}\nfunction inspect(something) {\n if (functionsHaveNames || !util.isFunction(something)) {\n return util.inspect(something);\n }\n var rawname = getName(something);\n var name = rawname ? ': ' + rawname : '';\n return '[Function' + name + ']';\n}\nfunction getMessage(self) {\n return truncate(inspect(self.actual), 128) + ' ' +\n self.operator + ' ' +\n truncate(inspect(self.expected), 128);\n}\n\n// At present only the three keys mentioned above are used and\n// understood by the spec. Implementations or sub modules can pass\n// other keys to the AssertionError's constructor - they will be\n// ignored.\n\n// 3. All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction fail(actual, expected, message, operator, stackStartFunction) {\n throw new assert.AssertionError({\n message: message,\n actual: actual,\n expected: expected,\n operator: operator,\n stackStartFunction: stackStartFunction\n });\n}\n\n// EXTENSION! allows for well behaved errors defined elsewhere.\nassert.fail = fail;\n\n// 4. Pure assertion tests whether a value is truthy, as determined\n// by !!guard.\n// assert.ok(guard, message_opt);\n// This statement is equivalent to assert.equal(true, !!guard,\n// message_opt);. To test strictly for the value true, use\n// assert.strictEqual(true, guard, message_opt);.\n\nfunction ok(value, message) {\n if (!value) fail(value, true, message, '==', assert.ok);\n}\nassert.ok = ok;\n\n// 5. The equality assertion tests shallow, coercive equality with\n// ==.\n// assert.equal(actual, expected, message_opt);\n\nassert.equal = function equal(actual, expected, message) {\n if (actual != expected) fail(actual, expected, message, '==', assert.equal);\n};\n\n// 6. The non-equality assertion tests for whether two objects are not equal\n// with != assert.notEqual(actual, expected, message_opt);\n\nassert.notEqual = function notEqual(actual, expected, message) {\n if (actual == expected) {\n fail(actual, expected, message, '!=', assert.notEqual);\n }\n};\n\n// 7. The equivalence assertion tests a deep equality relation.\n// assert.deepEqual(actual, expected, message_opt);\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'deepEqual', assert.deepEqual);\n }\n};\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);\n }\n};\n\nfunction _deepEqual(actual, expected, strict, memos) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n } else if (isBuffer(actual) && isBuffer(expected)) {\n return compare(actual, expected) === 0;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (util.isDate(actual) && util.isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (util.isRegExp(actual) && util.isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if ((actual === null || typeof actual !== 'object') &&\n (expected === null || typeof expected !== 'object')) {\n return strict ? actual === expected : actual == expected;\n\n // If both values are instances of typed arrays, wrap their underlying\n // ArrayBuffers in a Buffer each to increase performance\n // This optimization requires the arrays to have the same type as checked by\n // Object.prototype.toString (aka pToString). Never perform binary\n // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their\n // bit patterns are not identical.\n } else if (isView(actual) && isView(expected) &&\n pToString(actual) === pToString(expected) &&\n !(actual instanceof Float32Array ||\n actual instanceof Float64Array)) {\n return compare(new Uint8Array(actual.buffer),\n new Uint8Array(expected.buffer)) === 0;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else if (isBuffer(actual) !== isBuffer(expected)) {\n return false;\n } else {\n memos = memos || {actual: [], expected: []};\n\n var actualIndex = memos.actual.indexOf(actual);\n if (actualIndex !== -1) {\n if (actualIndex === memos.expected.indexOf(expected)) {\n return true;\n }\n }\n\n memos.actual.push(actual);\n memos.expected.push(expected);\n\n return objEquiv(actual, expected, strict, memos);\n }\n}\n\nfunction isArguments(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n}\n\nfunction objEquiv(a, b, strict, actualVisitedObjects) {\n if (a === null || a === undefined || b === null || b === undefined)\n return false;\n // if one is a primitive, the other must be same\n if (util.isPrimitive(a) || util.isPrimitive(b))\n return a === b;\n if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))\n return false;\n var aIsArgs = isArguments(a);\n var bIsArgs = isArguments(b);\n if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))\n return false;\n if (aIsArgs) {\n a = pSlice.call(a);\n b = pSlice.call(b);\n return _deepEqual(a, b, strict);\n }\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n var key, i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))\n return false;\n }\n return true;\n}\n\n// 8. The non-equivalence assertion tests for any deep inequality.\n// assert.notDeepEqual(actual, expected, message_opt);\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);\n }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);\n }\n}\n\n\n// 9. The strict equality assertion tests strict equality, as determined by ===.\n// assert.strictEqual(actual, expected, message_opt);\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (actual !== expected) {\n fail(actual, expected, message, '===', assert.strictEqual);\n }\n};\n\n// 10. The strict non-equality assertion tests for strict inequality, as\n// determined by !==. assert.notStrictEqual(actual, expected, message_opt);\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (actual === expected) {\n fail(actual, expected, message, '!==', assert.notStrictEqual);\n }\n};\n\nfunction expectedException(actual, expected) {\n if (!actual || !expected) {\n return false;\n }\n\n if (Object.prototype.toString.call(expected) == '[object RegExp]') {\n return expected.test(actual);\n }\n\n try {\n if (actual instanceof expected) {\n return true;\n }\n } catch (e) {\n // Ignore. The instanceof check doesn't work for arrow functions.\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction _tryBlock(block) {\n var error;\n try {\n block();\n } catch (e) {\n error = e;\n }\n return error;\n}\n\nfunction _throws(shouldThrow, block, expected, message) {\n var actual;\n\n if (typeof block !== 'function') {\n throw new TypeError('\"block\" argument must be a function');\n }\n\n if (typeof expected === 'string') {\n message = expected;\n expected = null;\n }\n\n actual = _tryBlock(block);\n\n message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +\n (message ? ' ' + message : '.');\n\n if (shouldThrow && !actual) {\n fail(actual, expected, 'Missing expected exception' + message);\n }\n\n var userProvidedMessage = typeof message === 'string';\n var isUnwantedException = !shouldThrow && util.isError(actual);\n var isUnexpectedException = !shouldThrow && actual && !expected;\n\n if ((isUnwantedException &&\n userProvidedMessage &&\n expectedException(actual, expected)) ||\n isUnexpectedException) {\n fail(actual, expected, 'Got unwanted exception' + message);\n }\n\n if ((shouldThrow && actual && expected &&\n !expectedException(actual, expected)) || (!shouldThrow && actual)) {\n throw actual;\n }\n}\n\n// 11. Expected to throw an error:\n// assert.throws(block, Error_opt, message_opt);\n\nassert.throws = function(block, /*optional*/error, /*optional*/message) {\n _throws(true, block, error, message);\n};\n\n// EXTENSION! This is annoying to write outside this module.\nassert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {\n _throws(false, block, error, message);\n};\n\nassert.ifError = function(err) { if (err) throw err; };\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n if (hasOwn.call(obj, key)) keys.push(key);\n }\n return keys;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/assert/assert.js\n// module id = 64\n// module chunks = 0","// 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\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/util/util.js\n// module id = 65\n// module chunks = 0","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/util/support/isBufferBrowser.js\n// module id = 66\n// module chunks = 0","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/util/node_modules/inherits/inherits_browser.js\n// module id = 67\n// module chunks = 0","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/xtend/immutable.js\n// module id = 68\n// module chunks = 0","\"use strict\";\n\nvar socket = require(\"./socket\");\nvar emitter = require(\"./emitter\");\nvar notify = require(\"./notify\");\nvar tab = require(\"./tab\");\nvar utils = require(\"./browser.utils\");\n\n/**\n * @constructor\n */\nvar BrowserSync = function(options) {\n this.options = options;\n this.socket = socket;\n this.emitter = emitter;\n this.utils = utils;\n this.tabHidden = false;\n\n var bs = this;\n\n /**\n * Options set\n */\n socket.on(\"options:set\", function(data) {\n emitter.emit(\"notify\", \"Setting options...\");\n bs.options = data.options;\n });\n\n emitter.on(\"tab:hidden\", function() {\n bs.tabHidden = true;\n });\n emitter.on(\"tab:visible\", function() {\n bs.tabHidden = false;\n });\n};\n\n/**\n * Helper to check if syncing is allowed\n * @param data\n * @param optPath\n * @returns {boolean}\n */\nBrowserSync.prototype.canSync = function(data, optPath) {\n data = data || {};\n\n if (data.override) {\n return true;\n }\n\n var canSync = true;\n\n if (optPath) {\n canSync = this.getOption(optPath);\n }\n\n return canSync && data.url === window.location.pathname;\n};\n\n/**\n * Helper to check if syncing is allowed\n * @returns {boolean}\n */\nBrowserSync.prototype.getOption = function(path) {\n if (path && path.match(/\\./)) {\n return getByPath(this.options, path);\n } else {\n var opt = this.options[path];\n\n if (isUndefined(opt)) {\n return false;\n } else {\n return opt;\n }\n }\n};\n\n/**\n * @type {Function}\n */\nmodule.exports = BrowserSync;\n\n/**\n * @param {String} val\n * @returns {boolean}\n */\nfunction isUndefined(val) {\n return \"undefined\" === typeof val;\n}\n\n/**\n * @param obj\n * @param path\n */\nfunction getByPath(obj, path) {\n for (\n var i = 0, tempPath = path.split(\".\"), len = tempPath.length;\n i < len;\n i++\n ) {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n obj = obj[tempPath[i]];\n }\n\n if (typeof obj === \"undefined\") {\n return false;\n }\n\n return obj;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/browser-sync.js","var utils = require(\"./browser.utils\");\nvar emitter = require(\"./emitter\");\nvar $document = utils.getDocument();\n\n// Set the name of the hidden property and the change event for visibility\nvar hidden, visibilityChange;\nif (typeof $document.hidden !== \"undefined\") {\n // Opera 12.10 and Firefox 18 and later support\n hidden = \"hidden\";\n visibilityChange = \"visibilitychange\";\n} else if (typeof $document.mozHidden !== \"undefined\") {\n hidden = \"mozHidden\";\n visibilityChange = \"mozvisibilitychange\";\n} else if (typeof $document.msHidden !== \"undefined\") {\n hidden = \"msHidden\";\n visibilityChange = \"msvisibilitychange\";\n} else if (typeof $document.webkitHidden !== \"undefined\") {\n hidden = \"webkitHidden\";\n visibilityChange = \"webkitvisibilitychange\";\n}\n\n// If the page is hidden, pause the video;\n// if the page is shown, play the video\nfunction handleVisibilityChange() {\n if ($document[hidden]) {\n emitter.emit(\"tab:hidden\");\n } else {\n emitter.emit(\"tab:visible\");\n }\n}\n\nif (\n typeof $document.addEventListener === \"undefined\" ||\n typeof $document[hidden] === \"undefined\"\n) {\n //console.log('not supported');\n} else {\n $document.addEventListener(visibilityChange, handleVisibilityChange, false);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/tab.js","\"use strict\";\n\nvar eventManager = require(\"./events\").manager;\n\nexports.plugins = {\n scroll: require(\"./ghostmode.scroll\"),\n clicks: require(\"./ghostmode.clicks\"),\n forms: require(\"./ghostmode.forms\"),\n location: require(\"./ghostmode.location\")\n};\n\n/**\n * Load plugins for enabled options\n * @param bs\n */\nexports.init = function(bs) {\n for (var name in exports.plugins) {\n if (bs.options.ghostMode[name]) {\n exports.plugins[name].init(bs, eventManager);\n }\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./lib/ghostmode.js"],"sourceRoot":""}