{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./node_modules/platform/platform.js","webpack:///(webpack)/buildin/global.js","webpack:///./source/pages/language-selector.ts","webpack:///./source/pages/instruction-picker.ts","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/sweet-scroll/sweet-scroll.js","webpack:///./source/pages/dns.ts","webpack:///./source/pages/console.ts"],"names":["root","factory","exports","module","define","amd","window","e","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","default","object","property","prototype","hasOwnProperty","p","s","1","global","__WEBPACK_AMD_DEFINE_RESULT__","objectTypes","function","this","freeExports","freeModule","nodeType","freeGlobal","self","maxSafeInteger","Math","pow","reOpera","objectProto","toString","capitalize","string","String","charAt","toUpperCase","slice","format","trim","test","forOwn","callback","getClassOf","qualify","replace","reduce","array","accumulator","index","length","platform","parse","ua","context","isCustomContext","nav","navigator","userAgent","data","isSpecialCasedOS","likeChrome","airRuntimeClass","enviroClass","javaClass","java","phantomClass","rhino","environment","alpha","beta","doc","document","opera","operamini","operaClass","arch","description","prerelease","useFeatures","version","layout","label","pattern","result","guess","RegExp","exec","product","getProduct","manufacturer","Apple","iPad","iPhone","iPod","Archos","Amazon","Kindle","Kindle Fire","Asus","Transformer","Barnes & Noble","Nook","BlackBerry","PlayBook","Google","Google TV","Nexus","HP","TouchPad","HTC","LG","Microsoft","Xbox","Xbox One","Motorola","Xoom","Nintendo","Wii U","Wii","Nokia","Lumia","Samsung","Galaxy S","Galaxy S2","Galaxy S3","Galaxy S4","Sony","PlayStation","PlayStation Vita","os","10.0","6.4","6.3","6.2","6.1","6.0","5.2","5.1","5.01","5.0","4.0","4.90","split","guesses","push","unshift","indexOf","parseFloat","type","lang","System","getProperty","require","join","system","process","browser","versions","electron","node","nw","runtime","flash","Capabilities","phantom","major","minor","patch","documentMode","toFixed","appMinorVersion","external","parseInt","architecture","family","cpuClass","g","Function","eval","addEventListener","$el","languageSelector","querySelector","event","target","contains","classList","toggle","41","47","__webpack_exports__","initInstructionPicker","platform__WEBPACK_IMPORTED_MODULE_0__","platform__WEBPACK_IMPORTED_MODULE_0___default","deviceInfo","Windows","id","OS X","Linux","iOS","Android","Router","ref","instructionPicker","instructionChoices","Array","querySelectorAll","deviceLabel","setupSection","chooseInstructions","platformId","device","forEach","choice","dataset","entry","textContent","assign","a","webpackPolyfill","deprecate","paths","children","__assign","arguments","canUseDOM","createElement","canUseHistory","history","location","protocol","canUsePassiveOption","support","isString","obj","isFunction","isArray","isElement","Element","hasProp","raf","requestAnimationFrame","caf","cancelAnimationFrame","cos","sin","sqrt","PI","easings","linear","easeInQuad","_","b","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","directionMethodMap","y","x","directionPropMap","getScroll","direction","setScroll","offset","getOffset","$context","rect","getBoundingClientRect","width","height","scroll_1","top","left","$ctx","isRootContainer","documentElement","cRect","clientTop","clientLeft","$$","selector","$","shift","matches","results","body","findScrollable","selectors","method","$elements","$div","$result","outerWidth_1","outerWidth","innerWidth_1","innerWidth","zoom","style","clientWidth","clientHeight","appendChild","max","removeChild","getHeight","scrollHeight","offsetHeight","getWidth","scrollWidth","offsetWidth","getSize","getViewportAndElementSizes","isRoot","viewport","min","innerHeight","size","wheelEventName","apply","listener","passive","addEvent","removeEvent","reRelativeToken","parseCoordinate","coordinate","enableVertical","res","relative","match","op","val","defaultOptions","trigger","header","duration","easing","vertical","horizontal","cancellable","updateURL","preventDefault","stopPropagation","quickMode","before","after","cancel","complete","step","SweetScroll","options","container","_this","ctx","$trigger","opts","progress","pos","startPos","start","hash","loop","time","_a","startOffset","directionMap","timeElapsed","keys","initial","delta","round","hook","stop","handleClick","parentNode","dataOptions","JSON","getAttribute","to","toTop","toLeft","handleStop","$container","distance","currentOptions","optOffset","$header","scroll","current","$target","_b","toElement","$element","gotoEnd","update","unbind","destroy","onBefore","__","onStep","onAfter","onCancel","onComplete","abs","args","_i","callbackResult","methodResult","concat","click","init","sweet_scroll_default","slideshow","statsChart","instruction_picker","slideCount","setInterval","slideIndex","activeSlide","hasAnimated","animateChart","element","windowHeight","windowWidth","setTimeout","opacity","barChart","innerBar","total","console","log","btoa","readyState"],"mappings":"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","file":"dns-aa686e0e9e4d122550f8.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"dns-aa686e0e9e4d122550f8\"] = factory();\n\telse\n\t\troot[\"dns-aa686e0e9e4d122550f8\"] = factory();\n})(window, function() {\nreturn "," \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, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\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\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 53);\n","/*!\n * Platform.js <https://mths.be/platform>\n * Copyright 2014-2018 Benjamin Tan <https://bnjmnt4n.now.sh/>\n * Copyright 2011-2013 John-David Dalton <http://allyoucanleet.com/>\n * Available under MIT license <https://mths.be/mit>\n */\n;(function() {\n  'use strict';\n\n  /** Used to determine if values are of the language type `Object`. */\n  var objectTypes = {\n    'function': true,\n    'object': true\n  };\n\n  /** Used as a reference to the global object. */\n  var root = (objectTypes[typeof window] && window) || this;\n\n  /** Backup possible global object. */\n  var oldRoot = root;\n\n  /** Detect free variable `exports`. */\n  var freeExports = objectTypes[typeof exports] && exports;\n\n  /** Detect free variable `module`. */\n  var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;\n\n  /** Detect free variable `global` from Node.js or Browserified code and use it as `root`. */\n  var freeGlobal = freeExports && freeModule && typeof global == 'object' && global;\n  if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal)) {\n    root = freeGlobal;\n  }\n\n  /**\n   * Used as the maximum length of an array-like object.\n   * See the [ES6 spec](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength)\n   * for more details.\n   */\n  var maxSafeInteger = Math.pow(2, 53) - 1;\n\n  /** Regular expression to detect Opera. */\n  var reOpera = /\\bOpera/;\n\n  /** Possible global object. */\n  var thisBinding = this;\n\n  /** Used for native method references. */\n  var objectProto = Object.prototype;\n\n  /** Used to check for own properties of an object. */\n  var hasOwnProperty = objectProto.hasOwnProperty;\n\n  /** Used to resolve the internal `[[Class]]` of values. */\n  var toString = objectProto.toString;\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * Capitalizes a string value.\n   *\n   * @private\n   * @param {string} string The string to capitalize.\n   * @returns {string} The capitalized string.\n   */\n  function capitalize(string) {\n    string = String(string);\n    return string.charAt(0).toUpperCase() + string.slice(1);\n  }\n\n  /**\n   * A utility function to clean up the OS name.\n   *\n   * @private\n   * @param {string} os The OS name to clean up.\n   * @param {string} [pattern] A `RegExp` pattern matching the OS name.\n   * @param {string} [label] A label for the OS.\n   */\n  function cleanupOS(os, pattern, label) {\n    // Platform tokens are defined at:\n    // http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx\n    // http://web.archive.org/web/20081122053950/http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx\n    var data = {\n      '10.0': '10',\n      '6.4':  '10 Technical Preview',\n      '6.3':  '8.1',\n      '6.2':  '8',\n      '6.1':  'Server 2008 R2 / 7',\n      '6.0':  'Server 2008 / Vista',\n      '5.2':  'Server 2003 / XP 64-bit',\n      '5.1':  'XP',\n      '5.01': '2000 SP1',\n      '5.0':  '2000',\n      '4.0':  'NT',\n      '4.90': 'ME'\n    };\n    // Detect Windows version from platform tokens.\n    if (pattern && label && /^Win/i.test(os) && !/^Windows Phone /i.test(os) &&\n        (data = data[/[\\d.]+$/.exec(os)])) {\n      os = 'Windows ' + data;\n    }\n    // Correct character case and cleanup string.\n    os = String(os);\n\n    if (pattern && label) {\n      os = os.replace(RegExp(pattern, 'i'), label);\n    }\n\n    os = format(\n      os.replace(/ ce$/i, ' CE')\n        .replace(/\\bhpw/i, 'web')\n        .replace(/\\bMacintosh\\b/, 'Mac OS')\n        .replace(/_PowerPC\\b/i, ' OS')\n        .replace(/\\b(OS X) [^ \\d]+/i, '$1')\n        .replace(/\\bMac (OS X)\\b/, '$1')\n        .replace(/\\/(\\d)/, ' $1')\n        .replace(/_/g, '.')\n        .replace(/(?: BePC|[ .]*fc[ \\d.]+)$/i, '')\n        .replace(/\\bx86\\.64\\b/gi, 'x86_64')\n        .replace(/\\b(Windows Phone) OS\\b/, '$1')\n        .replace(/\\b(Chrome OS \\w+) [\\d.]+\\b/, '$1')\n        .split(' on ')[0]\n    );\n\n    return os;\n  }\n\n  /**\n   * An iteration utility for arrays and objects.\n   *\n   * @private\n   * @param {Array|Object} object The object to iterate over.\n   * @param {Function} callback The function called per iteration.\n   */\n  function each(object, callback) {\n    var index = -1,\n        length = object ? object.length : 0;\n\n    if (typeof length == 'number' && length > -1 && length <= maxSafeInteger) {\n      while (++index < length) {\n        callback(object[index], index, object);\n      }\n    } else {\n      forOwn(object, callback);\n    }\n  }\n\n  /**\n   * Trim and conditionally capitalize string values.\n   *\n   * @private\n   * @param {string} string The string to format.\n   * @returns {string} The formatted string.\n   */\n  function format(string) {\n    string = trim(string);\n    return /^(?:webOS|i(?:OS|P))/.test(string)\n      ? string\n      : capitalize(string);\n  }\n\n  /**\n   * Iterates over an object's own properties, executing the `callback` for each.\n   *\n   * @private\n   * @param {Object} object The object to iterate over.\n   * @param {Function} callback The function executed per own property.\n   */\n  function forOwn(object, callback) {\n    for (var key in object) {\n      if (hasOwnProperty.call(object, key)) {\n        callback(object[key], key, object);\n      }\n    }\n  }\n\n  /**\n   * Gets the internal `[[Class]]` of a value.\n   *\n   * @private\n   * @param {*} value The value.\n   * @returns {string} The `[[Class]]`.\n   */\n  function getClassOf(value) {\n    return value == null\n      ? capitalize(value)\n      : toString.call(value).slice(8, -1);\n  }\n\n  /**\n   * Host objects can return type values that are different from their actual\n   * data type. The objects we are concerned with usually return non-primitive\n   * types of \"object\", \"function\", or \"unknown\".\n   *\n   * @private\n   * @param {*} object The owner of the property.\n   * @param {string} property The property to check.\n   * @returns {boolean} Returns `true` if the property value is a non-primitive, else `false`.\n   */\n  function isHostType(object, property) {\n    var type = object != null ? typeof object[property] : 'number';\n    return !/^(?:boolean|number|string|undefined)$/.test(type) &&\n      (type == 'object' ? !!object[property] : true);\n  }\n\n  /**\n   * Prepares a string for use in a `RegExp` by making hyphens and spaces optional.\n   *\n   * @private\n   * @param {string} string The string to qualify.\n   * @returns {string} The qualified string.\n   */\n  function qualify(string) {\n    return String(string).replace(/([ -])(?!$)/g, '$1?');\n  }\n\n  /**\n   * A bare-bones `Array#reduce` like utility function.\n   *\n   * @private\n   * @param {Array} array The array to iterate over.\n   * @param {Function} callback The function called per iteration.\n   * @returns {*} The accumulated result.\n   */\n  function reduce(array, callback) {\n    var accumulator = null;\n    each(array, function(value, index) {\n      accumulator = callback(accumulator, value, index, array);\n    });\n    return accumulator;\n  }\n\n  /**\n   * Removes leading and trailing whitespace from a string.\n   *\n   * @private\n   * @param {string} string The string to trim.\n   * @returns {string} The trimmed string.\n   */\n  function trim(string) {\n    return String(string).replace(/^ +| +$/g, '');\n  }\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * Creates a new platform object.\n   *\n   * @memberOf platform\n   * @param {Object|string} [ua=navigator.userAgent] The user agent string or\n   *  context object.\n   * @returns {Object} A platform object.\n   */\n  function parse(ua) {\n\n    /** The environment context object. */\n    var context = root;\n\n    /** Used to flag when a custom context is provided. */\n    var isCustomContext = ua && typeof ua == 'object' && getClassOf(ua) != 'String';\n\n    // Juggle arguments.\n    if (isCustomContext) {\n      context = ua;\n      ua = null;\n    }\n\n    /** Browser navigator object. */\n    var nav = context.navigator || {};\n\n    /** Browser user agent string. */\n    var userAgent = nav.userAgent || '';\n\n    ua || (ua = userAgent);\n\n    /** Used to flag when `thisBinding` is the [ModuleScope]. */\n    var isModuleScope = isCustomContext || thisBinding == oldRoot;\n\n    /** Used to detect if browser is like Chrome. */\n    var likeChrome = isCustomContext\n      ? !!nav.likeChrome\n      : /\\bChrome\\b/.test(ua) && !/internal|\\n/i.test(toString.toString());\n\n    /** Internal `[[Class]]` value shortcuts. */\n    var objectClass = 'Object',\n        airRuntimeClass = isCustomContext ? objectClass : 'ScriptBridgingProxyObject',\n        enviroClass = isCustomContext ? objectClass : 'Environment',\n        javaClass = (isCustomContext && context.java) ? 'JavaPackage' : getClassOf(context.java),\n        phantomClass = isCustomContext ? objectClass : 'RuntimeObject';\n\n    /** Detect Java environments. */\n    var java = /\\bJava/.test(javaClass) && context.java;\n\n    /** Detect Rhino. */\n    var rhino = java && getClassOf(context.environment) == enviroClass;\n\n    /** A character to represent alpha. */\n    var alpha = java ? 'a' : '\\u03b1';\n\n    /** A character to represent beta. */\n    var beta = java ? 'b' : '\\u03b2';\n\n    /** Browser document object. */\n    var doc = context.document || {};\n\n    /**\n     * Detect Opera browser (Presto-based).\n     * http://www.howtocreate.co.uk/operaStuff/operaObject.html\n     * http://dev.opera.com/articles/view/opera-mini-web-content-authoring-guidelines/#operamini\n     */\n    var opera = context.operamini || context.opera;\n\n    /** Opera `[[Class]]`. */\n    var operaClass = reOpera.test(operaClass = (isCustomContext && opera) ? opera['[[Class]]'] : getClassOf(opera))\n      ? operaClass\n      : (opera = null);\n\n    /*------------------------------------------------------------------------*/\n\n    /** Temporary variable used over the script's lifetime. */\n    var data;\n\n    /** The CPU architecture. */\n    var arch = ua;\n\n    /** Platform description array. */\n    var description = [];\n\n    /** Platform alpha/beta indicator. */\n    var prerelease = null;\n\n    /** A flag to indicate that environment features should be used to resolve the platform. */\n    var useFeatures = ua == userAgent;\n\n    /** The browser/environment version. */\n    var version = useFeatures && opera && typeof opera.version == 'function' && opera.version();\n\n    /** A flag to indicate if the OS ends with \"/ Version\" */\n    var isSpecialCasedOS;\n\n    /* Detectable layout engines (order is important). */\n    var layout = getLayout([\n      { 'label': 'EdgeHTML', 'pattern': 'Edge' },\n      'Trident',\n      { 'label': 'WebKit', 'pattern': 'AppleWebKit' },\n      'iCab',\n      'Presto',\n      'NetFront',\n      'Tasman',\n      'KHTML',\n      'Gecko'\n    ]);\n\n    /* Detectable browser names (order is important). */\n    var name = getName([\n      'Adobe AIR',\n      'Arora',\n      'Avant Browser',\n      'Breach',\n      'Camino',\n      'Electron',\n      'Epiphany',\n      'Fennec',\n      'Flock',\n      'Galeon',\n      'GreenBrowser',\n      'iCab',\n      'Iceweasel',\n      'K-Meleon',\n      'Konqueror',\n      'Lunascape',\n      'Maxthon',\n      { 'label': 'Microsoft Edge', 'pattern': 'Edge' },\n      'Midori',\n      'Nook Browser',\n      'PaleMoon',\n      'PhantomJS',\n      'Raven',\n      'Rekonq',\n      'RockMelt',\n      { 'label': 'Samsung Internet', 'pattern': 'SamsungBrowser' },\n      'SeaMonkey',\n      { 'label': 'Silk', 'pattern': '(?:Cloud9|Silk-Accelerated)' },\n      'Sleipnir',\n      'SlimBrowser',\n      { 'label': 'SRWare Iron', 'pattern': 'Iron' },\n      'Sunrise',\n      'Swiftfox',\n      'Waterfox',\n      'WebPositive',\n      'Opera Mini',\n      { 'label': 'Opera Mini', 'pattern': 'OPiOS' },\n      'Opera',\n      { 'label': 'Opera', 'pattern': 'OPR' },\n      'Chrome',\n      { 'label': 'Chrome Mobile', 'pattern': '(?:CriOS|CrMo)' },\n      { 'label': 'Firefox', 'pattern': '(?:Firefox|Minefield)' },\n      { 'label': 'Firefox for iOS', 'pattern': 'FxiOS' },\n      { 'label': 'IE', 'pattern': 'IEMobile' },\n      { 'label': 'IE', 'pattern': 'MSIE' },\n      'Safari'\n    ]);\n\n    /* Detectable products (order is important). */\n    var product = getProduct([\n      { 'label': 'BlackBerry', 'pattern': 'BB10' },\n      'BlackBerry',\n      { 'label': 'Galaxy S', 'pattern': 'GT-I9000' },\n      { 'label': 'Galaxy S2', 'pattern': 'GT-I9100' },\n      { 'label': 'Galaxy S3', 'pattern': 'GT-I9300' },\n      { 'label': 'Galaxy S4', 'pattern': 'GT-I9500' },\n      { 'label': 'Galaxy S5', 'pattern': 'SM-G900' },\n      { 'label': 'Galaxy S6', 'pattern': 'SM-G920' },\n      { 'label': 'Galaxy S6 Edge', 'pattern': 'SM-G925' },\n      { 'label': 'Galaxy S7', 'pattern': 'SM-G930' },\n      { 'label': 'Galaxy S7 Edge', 'pattern': 'SM-G935' },\n      'Google TV',\n      'Lumia',\n      'iPad',\n      'iPod',\n      'iPhone',\n      'Kindle',\n      { 'label': 'Kindle Fire', 'pattern': '(?:Cloud9|Silk-Accelerated)' },\n      'Nexus',\n      'Nook',\n      'PlayBook',\n      'PlayStation Vita',\n      'PlayStation',\n      'TouchPad',\n      'Transformer',\n      { 'label': 'Wii U', 'pattern': 'WiiU' },\n      'Wii',\n      'Xbox One',\n      { 'label': 'Xbox 360', 'pattern': 'Xbox' },\n      'Xoom'\n    ]);\n\n    /* Detectable manufacturers. */\n    var manufacturer = getManufacturer({\n      'Apple': { 'iPad': 1, 'iPhone': 1, 'iPod': 1 },\n      'Archos': {},\n      'Amazon': { 'Kindle': 1, 'Kindle Fire': 1 },\n      'Asus': { 'Transformer': 1 },\n      'Barnes & Noble': { 'Nook': 1 },\n      'BlackBerry': { 'PlayBook': 1 },\n      'Google': { 'Google TV': 1, 'Nexus': 1 },\n      'HP': { 'TouchPad': 1 },\n      'HTC': {},\n      'LG': {},\n      'Microsoft': { 'Xbox': 1, 'Xbox One': 1 },\n      'Motorola': { 'Xoom': 1 },\n      'Nintendo': { 'Wii U': 1,  'Wii': 1 },\n      'Nokia': { 'Lumia': 1 },\n      'Samsung': { 'Galaxy S': 1, 'Galaxy S2': 1, 'Galaxy S3': 1, 'Galaxy S4': 1 },\n      'Sony': { 'PlayStation': 1, 'PlayStation Vita': 1 }\n    });\n\n    /* Detectable operating systems (order is important). */\n    var os = getOS([\n      'Windows Phone',\n      'Android',\n      'CentOS',\n      { 'label': 'Chrome OS', 'pattern': 'CrOS' },\n      'Debian',\n      'Fedora',\n      'FreeBSD',\n      'Gentoo',\n      'Haiku',\n      'Kubuntu',\n      'Linux Mint',\n      'OpenBSD',\n      'Red Hat',\n      'SuSE',\n      'Ubuntu',\n      'Xubuntu',\n      'Cygwin',\n      'Symbian OS',\n      'hpwOS',\n      'webOS ',\n      'webOS',\n      'Tablet OS',\n      'Tizen',\n      'Linux',\n      'Mac OS X',\n      'Macintosh',\n      'Mac',\n      'Windows 98;',\n      'Windows '\n    ]);\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Picks the layout engine from an array of guesses.\n     *\n     * @private\n     * @param {Array} guesses An array of guesses.\n     * @returns {null|string} The detected layout engine.\n     */\n    function getLayout(guesses) {\n      return reduce(guesses, function(result, guess) {\n        return result || RegExp('\\\\b' + (\n          guess.pattern || qualify(guess)\n        ) + '\\\\b', 'i').exec(ua) && (guess.label || guess);\n      });\n    }\n\n    /**\n     * Picks the manufacturer from an array of guesses.\n     *\n     * @private\n     * @param {Array} guesses An object of guesses.\n     * @returns {null|string} The detected manufacturer.\n     */\n    function getManufacturer(guesses) {\n      return reduce(guesses, function(result, value, key) {\n        // Lookup the manufacturer by product or scan the UA for the manufacturer.\n        return result || (\n          value[product] ||\n          value[/^[a-z]+(?: +[a-z]+\\b)*/i.exec(product)] ||\n          RegExp('\\\\b' + qualify(key) + '(?:\\\\b|\\\\w*\\\\d)', 'i').exec(ua)\n        ) && key;\n      });\n    }\n\n    /**\n     * Picks the browser name from an array of guesses.\n     *\n     * @private\n     * @param {Array} guesses An array of guesses.\n     * @returns {null|string} The detected browser name.\n     */\n    function getName(guesses) {\n      return reduce(guesses, function(result, guess) {\n        return result || RegExp('\\\\b' + (\n          guess.pattern || qualify(guess)\n        ) + '\\\\b', 'i').exec(ua) && (guess.label || guess);\n      });\n    }\n\n    /**\n     * Picks the OS name from an array of guesses.\n     *\n     * @private\n     * @param {Array} guesses An array of guesses.\n     * @returns {null|string} The detected OS name.\n     */\n    function getOS(guesses) {\n      return reduce(guesses, function(result, guess) {\n        var pattern = guess.pattern || qualify(guess);\n        if (!result && (result =\n              RegExp('\\\\b' + pattern + '(?:/[\\\\d.]+|[ \\\\w.]*)', 'i').exec(ua)\n            )) {\n          result = cleanupOS(result, pattern, guess.label || guess);\n        }\n        return result;\n      });\n    }\n\n    /**\n     * Picks the product name from an array of guesses.\n     *\n     * @private\n     * @param {Array} guesses An array of guesses.\n     * @returns {null|string} The detected product name.\n     */\n    function getProduct(guesses) {\n      return reduce(guesses, function(result, guess) {\n        var pattern = guess.pattern || qualify(guess);\n        if (!result && (result =\n              RegExp('\\\\b' + pattern + ' *\\\\d+[.\\\\w_]*', 'i').exec(ua) ||\n              RegExp('\\\\b' + pattern + ' *\\\\w+-[\\\\w]*', 'i').exec(ua) ||\n              RegExp('\\\\b' + pattern + '(?:; *(?:[a-z]+[_-])?[a-z]+\\\\d+|[^ ();-]*)', 'i').exec(ua)\n            )) {\n          // Split by forward slash and append product version if needed.\n          if ((result = String((guess.label && !RegExp(pattern, 'i').test(guess.label)) ? guess.label : result).split('/'))[1] && !/[\\d.]+/.test(result[0])) {\n            result[0] += ' ' + result[1];\n          }\n          // Correct character case and cleanup string.\n          guess = guess.label || guess;\n          result = format(result[0]\n            .replace(RegExp(pattern, 'i'), guess)\n            .replace(RegExp('; *(?:' + guess + '[_-])?', 'i'), ' ')\n            .replace(RegExp('(' + guess + ')[-_.]?(\\\\w)', 'i'), '$1 $2'));\n        }\n        return result;\n      });\n    }\n\n    /**\n     * Resolves the version using an array of UA patterns.\n     *\n     * @private\n     * @param {Array} patterns An array of UA patterns.\n     * @returns {null|string} The detected version.\n     */\n    function getVersion(patterns) {\n      return reduce(patterns, function(result, pattern) {\n        return result || (RegExp(pattern +\n          '(?:-[\\\\d.]+/|(?: for [\\\\w-]+)?[ /-])([\\\\d.]+[^ ();/_-]*)', 'i').exec(ua) || 0)[1] || null;\n      });\n    }\n\n    /**\n     * Returns `platform.description` when the platform object is coerced to a string.\n     *\n     * @name toString\n     * @memberOf platform\n     * @returns {string} Returns `platform.description` if available, else an empty string.\n     */\n    function toStringPlatform() {\n      return this.description || '';\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    // Convert layout to an array so we can add extra details.\n    layout && (layout = [layout]);\n\n    // Detect product names that contain their manufacturer's name.\n    if (manufacturer && !product) {\n      product = getProduct([manufacturer]);\n    }\n    // Clean up Google TV.\n    if ((data = /\\bGoogle TV\\b/.exec(product))) {\n      product = data[0];\n    }\n    // Detect simulators.\n    if (/\\bSimulator\\b/i.test(ua)) {\n      product = (product ? product + ' ' : '') + 'Simulator';\n    }\n    // Detect Opera Mini 8+ running in Turbo/Uncompressed mode on iOS.\n    if (name == 'Opera Mini' && /\\bOPiOS\\b/.test(ua)) {\n      description.push('running in Turbo/Uncompressed mode');\n    }\n    // Detect IE Mobile 11.\n    if (name == 'IE' && /\\blike iPhone OS\\b/.test(ua)) {\n      data = parse(ua.replace(/like iPhone OS/, ''));\n      manufacturer = data.manufacturer;\n      product = data.product;\n    }\n    // Detect iOS.\n    else if (/^iP/.test(product)) {\n      name || (name = 'Safari');\n      os = 'iOS' + ((data = / OS ([\\d_]+)/i.exec(ua))\n        ? ' ' + data[1].replace(/_/g, '.')\n        : '');\n    }\n    // Detect Kubuntu.\n    else if (name == 'Konqueror' && !/buntu/i.test(os)) {\n      os = 'Kubuntu';\n    }\n    // Detect Android browsers.\n    else if ((manufacturer && manufacturer != 'Google' &&\n        ((/Chrome/.test(name) && !/\\bMobile Safari\\b/i.test(ua)) || /\\bVita\\b/.test(product))) ||\n        (/\\bAndroid\\b/.test(os) && /^Chrome/.test(name) && /\\bVersion\\//i.test(ua))) {\n      name = 'Android Browser';\n      os = /\\bAndroid\\b/.test(os) ? os : 'Android';\n    }\n    // Detect Silk desktop/accelerated modes.\n    else if (name == 'Silk') {\n      if (!/\\bMobi/i.test(ua)) {\n        os = 'Android';\n        description.unshift('desktop mode');\n      }\n      if (/Accelerated *= *true/i.test(ua)) {\n        description.unshift('accelerated');\n      }\n    }\n    // Detect PaleMoon identifying as Firefox.\n    else if (name == 'PaleMoon' && (data = /\\bFirefox\\/([\\d.]+)\\b/.exec(ua))) {\n      description.push('identifying as Firefox ' + data[1]);\n    }\n    // Detect Firefox OS and products running Firefox.\n    else if (name == 'Firefox' && (data = /\\b(Mobile|Tablet|TV)\\b/i.exec(ua))) {\n      os || (os = 'Firefox OS');\n      product || (product = data[1]);\n    }\n    // Detect false positives for Firefox/Safari.\n    else if (!name || (data = !/\\bMinefield\\b/i.test(ua) && /\\b(?:Firefox|Safari)\\b/.exec(name))) {\n      // Escape the `/` for Firefox 1.\n      if (name && !product && /[\\/,]|^[^(]+?\\)/.test(ua.slice(ua.indexOf(data + '/') + 8))) {\n        // Clear name of false positives.\n        name = null;\n      }\n      // Reassign a generic name.\n      if ((data = product || manufacturer || os) &&\n          (product || manufacturer || /\\b(?:Android|Symbian OS|Tablet OS|webOS)\\b/.test(os))) {\n        name = /[a-z]+(?: Hat)?/i.exec(/\\bAndroid\\b/.test(os) ? os : data) + ' Browser';\n      }\n    }\n    // Add Chrome version to description for Electron.\n    else if (name == 'Electron' && (data = (/\\bChrome\\/([\\d.]+)\\b/.exec(ua) || 0)[1])) {\n      description.push('Chromium ' + data);\n    }\n    // Detect non-Opera (Presto-based) versions (order is important).\n    if (!version) {\n      version = getVersion([\n        '(?:Cloud9|CriOS|CrMo|Edge|FxiOS|IEMobile|Iron|Opera ?Mini|OPiOS|OPR|Raven|SamsungBrowser|Silk(?!/[\\\\d.]+$))',\n        'Version',\n        qualify(name),\n        '(?:Firefox|Minefield|NetFront)'\n      ]);\n    }\n    // Detect stubborn layout engines.\n    if ((data =\n          layout == 'iCab' && parseFloat(version) > 3 && 'WebKit' ||\n          /\\bOpera\\b/.test(name) && (/\\bOPR\\b/.test(ua) ? 'Blink' : 'Presto') ||\n          /\\b(?:Midori|Nook|Safari)\\b/i.test(ua) && !/^(?:Trident|EdgeHTML)$/.test(layout) && 'WebKit' ||\n          !layout && /\\bMSIE\\b/i.test(ua) && (os == 'Mac OS' ? 'Tasman' : 'Trident') ||\n          layout == 'WebKit' && /\\bPlayStation\\b(?! Vita\\b)/i.test(name) && 'NetFront'\n        )) {\n      layout = [data];\n    }\n    // Detect Windows Phone 7 desktop mode.\n    if (name == 'IE' && (data = (/; *(?:XBLWP|ZuneWP)(\\d+)/i.exec(ua) || 0)[1])) {\n      name += ' Mobile';\n      os = 'Windows Phone ' + (/\\+$/.test(data) ? data : data + '.x');\n      description.unshift('desktop mode');\n    }\n    // Detect Windows Phone 8.x desktop mode.\n    else if (/\\bWPDesktop\\b/i.test(ua)) {\n      name = 'IE Mobile';\n      os = 'Windows Phone 8.x';\n      description.unshift('desktop mode');\n      version || (version = (/\\brv:([\\d.]+)/.exec(ua) || 0)[1]);\n    }\n    // Detect IE 11 identifying as other browsers.\n    else if (name != 'IE' && layout == 'Trident' && (data = /\\brv:([\\d.]+)/.exec(ua))) {\n      if (name) {\n        description.push('identifying as ' + name + (version ? ' ' + version : ''));\n      }\n      name = 'IE';\n      version = data[1];\n    }\n    // Leverage environment features.\n    if (useFeatures) {\n      // Detect server-side environments.\n      // Rhino has a global function while others have a global object.\n      if (isHostType(context, 'global')) {\n        if (java) {\n          data = java.lang.System;\n          arch = data.getProperty('os.arch');\n          os = os || data.getProperty('os.name') + ' ' + data.getProperty('os.version');\n        }\n        if (rhino) {\n          try {\n            version = context.require('ringo/engine').version.join('.');\n            name = 'RingoJS';\n          } catch(e) {\n            if ((data = context.system) && data.global.system == context.system) {\n              name = 'Narwhal';\n              os || (os = data[0].os || null);\n            }\n          }\n          if (!name) {\n            name = 'Rhino';\n          }\n        }\n        else if (\n          typeof context.process == 'object' && !context.process.browser &&\n          (data = context.process)\n        ) {\n          if (typeof data.versions == 'object') {\n            if (typeof data.versions.electron == 'string') {\n              description.push('Node ' + data.versions.node);\n              name = 'Electron';\n              version = data.versions.electron;\n            } else if (typeof data.versions.nw == 'string') {\n              description.push('Chromium ' + version, 'Node ' + data.versions.node);\n              name = 'NW.js';\n              version = data.versions.nw;\n            }\n          }\n          if (!name) {\n            name = 'Node.js';\n            arch = data.arch;\n            os = data.platform;\n            version = /[\\d.]+/.exec(data.version);\n            version = version ? version[0] : null;\n          }\n        }\n      }\n      // Detect Adobe AIR.\n      else if (getClassOf((data = context.runtime)) == airRuntimeClass) {\n        name = 'Adobe AIR';\n        os = data.flash.system.Capabilities.os;\n      }\n      // Detect PhantomJS.\n      else if (getClassOf((data = context.phantom)) == phantomClass) {\n        name = 'PhantomJS';\n        version = (data = data.version || null) && (data.major + '.' + data.minor + '.' + data.patch);\n      }\n      // Detect IE compatibility modes.\n      else if (typeof doc.documentMode == 'number' && (data = /\\bTrident\\/(\\d+)/i.exec(ua))) {\n        // We're in compatibility mode when the Trident version + 4 doesn't\n        // equal the document mode.\n        version = [version, doc.documentMode];\n        if ((data = +data[1] + 4) != version[1]) {\n          description.push('IE ' + version[1] + ' mode');\n          layout && (layout[1] = '');\n          version[1] = data;\n        }\n        version = name == 'IE' ? String(version[1].toFixed(1)) : version[0];\n      }\n      // Detect IE 11 masking as other browsers.\n      else if (typeof doc.documentMode == 'number' && /^(?:Chrome|Firefox)\\b/.test(name)) {\n        description.push('masking as ' + name + ' ' + version);\n        name = 'IE';\n        version = '11.0';\n        layout = ['Trident'];\n        os = 'Windows';\n      }\n      os = os && format(os);\n    }\n    // Detect prerelease phases.\n    if (version && (data =\n          /(?:[ab]|dp|pre|[ab]\\d+pre)(?:\\d+\\+?)?$/i.exec(version) ||\n          /(?:alpha|beta)(?: ?\\d)?/i.exec(ua + ';' + (useFeatures && nav.appMinorVersion)) ||\n          /\\bMinefield\\b/i.test(ua) && 'a'\n        )) {\n      prerelease = /b/i.test(data) ? 'beta' : 'alpha';\n      version = version.replace(RegExp(data + '\\\\+?$'), '') +\n        (prerelease == 'beta' ? beta : alpha) + (/\\d+\\+?/.exec(data) || '');\n    }\n    // Detect Firefox Mobile.\n    if (name == 'Fennec' || name == 'Firefox' && /\\b(?:Android|Firefox OS)\\b/.test(os)) {\n      name = 'Firefox Mobile';\n    }\n    // Obscure Maxthon's unreliable version.\n    else if (name == 'Maxthon' && version) {\n      version = version.replace(/\\.[\\d.]+/, '.x');\n    }\n    // Detect Xbox 360 and Xbox One.\n    else if (/\\bXbox\\b/i.test(product)) {\n      if (product == 'Xbox 360') {\n        os = null;\n      }\n      if (product == 'Xbox 360' && /\\bIEMobile\\b/.test(ua)) {\n        description.unshift('mobile mode');\n      }\n    }\n    // Add mobile postfix.\n    else if ((/^(?:Chrome|IE|Opera)$/.test(name) || name && !product && !/Browser|Mobi/.test(name)) &&\n        (os == 'Windows CE' || /Mobi/i.test(ua))) {\n      name += ' Mobile';\n    }\n    // Detect IE platform preview.\n    else if (name == 'IE' && useFeatures) {\n      try {\n        if (context.external === null) {\n          description.unshift('platform preview');\n        }\n      } catch(e) {\n        description.unshift('embedded');\n      }\n    }\n    // Detect BlackBerry OS version.\n    // http://docs.blackberry.com/en/developers/deliverables/18169/HTTP_headers_sent_by_BB_Browser_1234911_11.jsp\n    else if ((/\\bBlackBerry\\b/.test(product) || /\\bBB10\\b/.test(ua)) && (data =\n          (RegExp(product.replace(/ +/g, ' *') + '/([.\\\\d]+)', 'i').exec(ua) || 0)[1] ||\n          version\n        )) {\n      data = [data, /BB10/.test(ua)];\n      os = (data[1] ? (product = null, manufacturer = 'BlackBerry') : 'Device Software') + ' ' + data[0];\n      version = null;\n    }\n    // Detect Opera identifying/masking itself as another browser.\n    // http://www.opera.com/support/kb/view/843/\n    else if (this != forOwn && product != 'Wii' && (\n          (useFeatures && opera) ||\n          (/Opera/.test(name) && /\\b(?:MSIE|Firefox)\\b/i.test(ua)) ||\n          (name == 'Firefox' && /\\bOS X (?:\\d+\\.){2,}/.test(os)) ||\n          (name == 'IE' && (\n            (os && !/^Win/.test(os) && version > 5.5) ||\n            /\\bWindows XP\\b/.test(os) && version > 8 ||\n            version == 8 && !/\\bTrident\\b/.test(ua)\n          ))\n        ) && !reOpera.test((data = parse.call(forOwn, ua.replace(reOpera, '') + ';'))) && data.name) {\n      // When \"identifying\", the UA contains both Opera and the other browser's name.\n      data = 'ing as ' + data.name + ((data = data.version) ? ' ' + data : '');\n      if (reOpera.test(name)) {\n        if (/\\bIE\\b/.test(data) && os == 'Mac OS') {\n          os = null;\n        }\n        data = 'identify' + data;\n      }\n      // When \"masking\", the UA contains only the other browser's name.\n      else {\n        data = 'mask' + data;\n        if (operaClass) {\n          name = format(operaClass.replace(/([a-z])([A-Z])/g, '$1 $2'));\n        } else {\n          name = 'Opera';\n        }\n        if (/\\bIE\\b/.test(data)) {\n          os = null;\n        }\n        if (!useFeatures) {\n          version = null;\n        }\n      }\n      layout = ['Presto'];\n      description.push(data);\n    }\n    // Detect WebKit Nightly and approximate Chrome/Safari versions.\n    if ((data = (/\\bAppleWebKit\\/([\\d.]+\\+?)/i.exec(ua) || 0)[1])) {\n      // Correct build number for numeric comparison.\n      // (e.g. \"532.5\" becomes \"532.05\")\n      data = [parseFloat(data.replace(/\\.(\\d)$/, '.0$1')), data];\n      // Nightly builds are postfixed with a \"+\".\n      if (name == 'Safari' && data[1].slice(-1) == '+') {\n        name = 'WebKit Nightly';\n        prerelease = 'alpha';\n        version = data[1].slice(0, -1);\n      }\n      // Clear incorrect browser versions.\n      else if (version == data[1] ||\n          version == (data[2] = (/\\bSafari\\/([\\d.]+\\+?)/i.exec(ua) || 0)[1])) {\n        version = null;\n      }\n      // Use the full Chrome version when available.\n      data[1] = (/\\bChrome\\/([\\d.]+)/i.exec(ua) || 0)[1];\n      // Detect Blink layout engine.\n      if (data[0] == 537.36 && data[2] == 537.36 && parseFloat(data[1]) >= 28 && layout == 'WebKit') {\n        layout = ['Blink'];\n      }\n      // Detect JavaScriptCore.\n      // http://stackoverflow.com/questions/6768474/how-can-i-detect-which-javascript-engine-v8-or-jsc-is-used-at-runtime-in-androi\n      if (!useFeatures || (!likeChrome && !data[1])) {\n        layout && (layout[1] = 'like Safari');\n        data = (data = data[0], data < 400 ? 1 : data < 500 ? 2 : data < 526 ? 3 : data < 533 ? 4 : data < 534 ? '4+' : data < 535 ? 5 : data < 537 ? 6 : data < 538 ? 7 : data < 601 ? 8 : '8');\n      } else {\n        layout && (layout[1] = 'like Chrome');\n        data = data[1] || (data = data[0], data < 530 ? 1 : data < 532 ? 2 : data < 532.05 ? 3 : data < 533 ? 4 : data < 534.03 ? 5 : data < 534.07 ? 6 : data < 534.10 ? 7 : data < 534.13 ? 8 : data < 534.16 ? 9 : data < 534.24 ? 10 : data < 534.30 ? 11 : data < 535.01 ? 12 : data < 535.02 ? '13+' : data < 535.07 ? 15 : data < 535.11 ? 16 : data < 535.19 ? 17 : data < 536.05 ? 18 : data < 536.10 ? 19 : data < 537.01 ? 20 : data < 537.11 ? '21+' : data < 537.13 ? 23 : data < 537.18 ? 24 : data < 537.24 ? 25 : data < 537.36 ? 26 : layout != 'Blink' ? '27' : '28');\n      }\n      // Add the postfix of \".x\" or \"+\" for approximate versions.\n      layout && (layout[1] += ' ' + (data += typeof data == 'number' ? '.x' : /[.+]/.test(data) ? '' : '+'));\n      // Obscure version for some Safari 1-2 releases.\n      if (name == 'Safari' && (!version || parseInt(version) > 45)) {\n        version = data;\n      }\n    }\n    // Detect Opera desktop modes.\n    if (name == 'Opera' &&  (data = /\\bzbov|zvav$/.exec(os))) {\n      name += ' ';\n      description.unshift('desktop mode');\n      if (data == 'zvav') {\n        name += 'Mini';\n        version = null;\n      } else {\n        name += 'Mobile';\n      }\n      os = os.replace(RegExp(' *' + data + '$'), '');\n    }\n    // Detect Chrome desktop mode.\n    else if (name == 'Safari' && /\\bChrome\\b/.exec(layout && layout[1])) {\n      description.unshift('desktop mode');\n      name = 'Chrome Mobile';\n      version = null;\n\n      if (/\\bOS X\\b/.test(os)) {\n        manufacturer = 'Apple';\n        os = 'iOS 4.3+';\n      } else {\n        os = null;\n      }\n    }\n    // Strip incorrect OS versions.\n    if (version && version.indexOf((data = /[\\d.]+$/.exec(os))) == 0 &&\n        ua.indexOf('/' + data + '-') > -1) {\n      os = trim(os.replace(data, ''));\n    }\n    // Add layout engine.\n    if (layout && !/\\b(?:Avant|Nook)\\b/.test(name) && (\n        /Browser|Lunascape|Maxthon/.test(name) ||\n        name != 'Safari' && /^iOS/.test(os) && /\\bSafari\\b/.test(layout[1]) ||\n        /^(?:Adobe|Arora|Breach|Midori|Opera|Phantom|Rekonq|Rock|Samsung Internet|Sleipnir|Web)/.test(name) && layout[1])) {\n      // Don't add layout details to description if they are falsey.\n      (data = layout[layout.length - 1]) && description.push(data);\n    }\n    // Combine contextual information.\n    if (description.length) {\n      description = ['(' + description.join('; ') + ')'];\n    }\n    // Append manufacturer to description.\n    if (manufacturer && product && product.indexOf(manufacturer) < 0) {\n      description.push('on ' + manufacturer);\n    }\n    // Append product to description.\n    if (product) {\n      description.push((/^on /.test(description[description.length - 1]) ? '' : 'on ') + product);\n    }\n    // Parse the OS into an object.\n    if (os) {\n      data = / ([\\d.+]+)$/.exec(os);\n      isSpecialCasedOS = data && os.charAt(os.length - data[0].length - 1) == '/';\n      os = {\n        'architecture': 32,\n        'family': (data && !isSpecialCasedOS) ? os.replace(data[0], '') : os,\n        'version': data ? data[1] : null,\n        'toString': function() {\n          var version = this.version;\n          return this.family + ((version && !isSpecialCasedOS) ? ' ' + version : '') + (this.architecture == 64 ? ' 64-bit' : '');\n        }\n      };\n    }\n    // Add browser/OS architecture.\n    if ((data = /\\b(?:AMD|IA|Win|WOW|x86_|x)64\\b/i.exec(arch)) && !/\\bi686\\b/i.test(arch)) {\n      if (os) {\n        os.architecture = 64;\n        os.family = os.family.replace(RegExp(' *' + data), '');\n      }\n      if (\n          name && (/\\bWOW64\\b/i.test(ua) ||\n          (useFeatures && /\\w(?:86|32)$/.test(nav.cpuClass || nav.platform) && !/\\bWin64; x64\\b/i.test(ua)))\n      ) {\n        description.unshift('32-bit');\n      }\n    }\n    // Chrome 39 and above on OS X is always 64-bit.\n    else if (\n        os && /^OS X/.test(os.family) &&\n        name == 'Chrome' && parseFloat(version) >= 39\n    ) {\n      os.architecture = 64;\n    }\n\n    ua || (ua = null);\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * The platform object.\n     *\n     * @name platform\n     * @type Object\n     */\n    var platform = {};\n\n    /**\n     * The platform description.\n     *\n     * @memberOf platform\n     * @type string|null\n     */\n    platform.description = ua;\n\n    /**\n     * The name of the browser's layout engine.\n     *\n     * The list of common layout engines include:\n     * \"Blink\", \"EdgeHTML\", \"Gecko\", \"Trident\" and \"WebKit\"\n     *\n     * @memberOf platform\n     * @type string|null\n     */\n    platform.layout = layout && layout[0];\n\n    /**\n     * The name of the product's manufacturer.\n     *\n     * The list of manufacturers include:\n     * \"Apple\", \"Archos\", \"Amazon\", \"Asus\", \"Barnes & Noble\", \"BlackBerry\",\n     * \"Google\", \"HP\", \"HTC\", \"LG\", \"Microsoft\", \"Motorola\", \"Nintendo\",\n     * \"Nokia\", \"Samsung\" and \"Sony\"\n     *\n     * @memberOf platform\n     * @type string|null\n     */\n    platform.manufacturer = manufacturer;\n\n    /**\n     * The name of the browser/environment.\n     *\n     * The list of common browser names include:\n     * \"Chrome\", \"Electron\", \"Firefox\", \"Firefox for iOS\", \"IE\",\n     * \"Microsoft Edge\", \"PhantomJS\", \"Safari\", \"SeaMonkey\", \"Silk\",\n     * \"Opera Mini\" and \"Opera\"\n     *\n     * Mobile versions of some browsers have \"Mobile\" appended to their name:\n     * eg. \"Chrome Mobile\", \"Firefox Mobile\", \"IE Mobile\" and \"Opera Mobile\"\n     *\n     * @memberOf platform\n     * @type string|null\n     */\n    platform.name = name;\n\n    /**\n     * The alpha/beta release indicator.\n     *\n     * @memberOf platform\n     * @type string|null\n     */\n    platform.prerelease = prerelease;\n\n    /**\n     * The name of the product hosting the browser.\n     *\n     * The list of common products include:\n     *\n     * \"BlackBerry\", \"Galaxy S4\", \"Lumia\", \"iPad\", \"iPod\", \"iPhone\", \"Kindle\",\n     * \"Kindle Fire\", \"Nexus\", \"Nook\", \"PlayBook\", \"TouchPad\" and \"Transformer\"\n     *\n     * @memberOf platform\n     * @type string|null\n     */\n    platform.product = product;\n\n    /**\n     * The browser's user agent string.\n     *\n     * @memberOf platform\n     * @type string|null\n     */\n    platform.ua = ua;\n\n    /**\n     * The browser/environment version.\n     *\n     * @memberOf platform\n     * @type string|null\n     */\n    platform.version = name && version;\n\n    /**\n     * The name of the operating system.\n     *\n     * @memberOf platform\n     * @type Object\n     */\n    platform.os = os || {\n\n      /**\n       * The CPU architecture the OS is built for.\n       *\n       * @memberOf platform.os\n       * @type number|null\n       */\n      'architecture': null,\n\n      /**\n       * The family of the OS.\n       *\n       * Common values include:\n       * \"Windows\", \"Windows Server 2008 R2 / 7\", \"Windows Server 2008 / Vista\",\n       * \"Windows XP\", \"OS X\", \"Ubuntu\", \"Debian\", \"Fedora\", \"Red Hat\", \"SuSE\",\n       * \"Android\", \"iOS\" and \"Windows Phone\"\n       *\n       * @memberOf platform.os\n       * @type string|null\n       */\n      'family': null,\n\n      /**\n       * The version of the OS.\n       *\n       * @memberOf platform.os\n       * @type string|null\n       */\n      'version': null,\n\n      /**\n       * Returns the OS string.\n       *\n       * @memberOf platform.os\n       * @returns {string} The OS string.\n       */\n      'toString': function() { return 'null'; }\n    };\n\n    platform.parse = parse;\n    platform.toString = toStringPlatform;\n\n    if (platform.version) {\n      description.unshift(version);\n    }\n    if (platform.name) {\n      description.unshift(name);\n    }\n    if (os && name && !(os == String(os).split(' ')[0] && (os == name.split(' ')[0] || product))) {\n      description.push(product ? '(' + os + ')' : 'on ' + os);\n    }\n    if (description.length) {\n      platform.description = description.join(' ');\n    }\n    return platform;\n  }\n\n  /*--------------------------------------------------------------------------*/\n\n  // Export platform.\n  var platform = parse();\n\n  // Some AMD build optimizers, like r.js, check for condition patterns like the following:\n  if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n    // Expose platform on the global object to prevent errors when platform is\n    // loaded by a script tag in the presence of an AMD loader.\n    // See http://requirejs.org/docs/errors.html#mismatch for more details.\n    root.platform = platform;\n\n    // Define as an anonymous module so platform can be aliased through path mapping.\n    define(function() {\n      return platform;\n    });\n  }\n  // Check for `exports` after `define` in case a build optimizer adds an `exports` object.\n  else if (freeExports && freeModule) {\n    // Export for CommonJS support.\n    forOwn(platform, function(value, key) {\n      freeExports[key] = value;\n    });\n  }\n  else {\n    // Export to the global object.\n    root.platform = platform;\n  }\n}.call(this));\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","function ref(ref: string): HTMLElement {\n  return <HTMLElement>document.querySelector(`[data-ref=\"${ref}\"]`)!;\n}\n\nconst initLanguageSelector = () => {\n  const $el = {\n    languageSelector: ref(\"languageSelector\"),\n  };\n\n  document.addEventListener(\"click\", (event) => {\n    if (\n      event.target === $el.languageSelector ||\n      $el.languageSelector.contains(<Node>event.target)\n    ) {\n      $el.languageSelector.classList.toggle(\"dropdown-open\");\n    } else {\n      $el.languageSelector.classList.toggle(\"dropdown-open\", false);\n    }\n  });\n};\n\ndocument.addEventListener(\"DOMContentLoaded\", initLanguageSelector);\n","import platform from 'platform'\n\ninterface DeviceInfo {\n  id: string\n  label: string\n}\n\nconst deviceInfo: { [index: string]: DeviceInfo } = {\n  'Windows': {\n    label: 'PC',\n    id: 'windows'\n  },\n  'OS X': {\n    label: 'Mac',\n    id: 'mac-os'\n  },\n  'Linux': {\n    label: 'Linux',\n    id: 'linux'\n  },\n  'iOS': {\n    label: 'iOS',\n    id: 'iphone'\n  },\n  'Android': {\n    label: 'Android',\n    id: 'android'\n  },\n  'Router': {\n    label: 'a router',\n    id: 'router'\n  }\n}\n\nfunction ref(ref: string): HTMLElement {\n  return <HTMLElement>document.querySelector(`[data-ref=\"${ref}\"]`)!\n}\n\nexport default function initInstructionPicker () {\n  const $el = {\n    instructionPicker: ref('instructionPicker'),\n    instructionChoices: Array.prototype.slice.call(ref('instructionPicker').querySelectorAll('.choice')),\n    deviceLabel: ref('deviceLabel'),\n    setupSection: ref('setup')\n  }\n\n  function chooseInstructions (platformId: string) {\n    $el.instructionChoices.forEach((choice: HTMLElement) => {\n      choice.classList.toggle('selected', choice.dataset.platform === platformId)\n    })\n\n    let device: DeviceInfo\n\n    for (let key in deviceInfo) {\n      const entry = deviceInfo[key]\n      if (platformId === entry.id) {\n        device = deviceInfo[key]\n        break\n      }\n    }\n\n    if (!device!) return\n\n    $el.setupSection.dataset.platform = platformId\n    $el.deviceLabel.textContent = $el.deviceLabel.dataset.label!.replace('{{device}}', device!.label)\n  }\n\n  Object.assign(window, {chooseInstructions})\n\n  $el.instructionChoices.forEach((choice: HTMLElement) => {\n    choice.addEventListener('click', chooseInstructions.bind(null, choice.dataset.platform))\n  })\n\n  let device: DeviceInfo = deviceInfo['OS X']\n\n  if (platform.os && platform.os.family && deviceInfo.hasOwnProperty(platform.os.family)) {\n    device = deviceInfo[platform.os.family]\n  }\n  chooseInstructions(device.id)\n}\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","/*! @preserve sweet-scroll v3.0.1 - tsuyoshiwada | MIT License */\n(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    (global.SweetScroll = factory());\n}(this, (function () { 'use strict';\n\n    /*! *****************************************************************************\r\n    Copyright (c) Microsoft Corporation. All rights reserved.\r\n    Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n    this file except in compliance with the License. You may obtain a copy of the\r\n    License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n    THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n    KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n    WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n    MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n    See the Apache Version 2.0 License for specific language governing permissions\r\n    and limitations under the License.\r\n    ***************************************************************************** */\r\n\r\n    var __assign = Object.assign || function __assign(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)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    };\n\n    // @link https://github.com/JedWatson/exenv/blob/master/index.js\n    var canUseDOM = !!(typeof window !== 'undefined' &&\n        window.document &&\n        window.document.createElement);\n    var canUseHistory = !canUseDOM\n        ? false\n        : (window.history &&\n            'pushState' in window.history &&\n            window.location.protocol !== 'file:');\n    var canUsePassiveOption = (function () {\n        var support = false;\n        if (!canUseDOM) {\n            return support;\n        }\n        /* tslint:disable:no-empty */\n        try {\n            window.addEventListener('test', null, Object.defineProperty({}, 'passive', {\n                get: function () {\n                    support = true;\n                },\n            }));\n        }\n        catch (e) { }\n        /* tslint:enable */\n        return support;\n    })();\n\n    var isString = function (obj) { return typeof obj === 'string'; };\n    var isFunction = function (obj) { return typeof obj === 'function'; };\n    var isArray = function (obj) { return Array.isArray(obj); };\n    var isNumeric = function (obj) { return !isArray(obj) && ((obj - parseFloat(obj)) + 1) >= 0; };\n    var isElement = function (obj) { return obj instanceof Element; };\n    var hasProp = function (obj, key) { return (obj && obj.hasOwnProperty(key)); };\n\n    var raf = canUseDOM ? window.requestAnimationFrame.bind(window) : null;\n    var caf = canUseDOM ? window.cancelAnimationFrame.bind(window) : null;\n\n    /* tslint:disable:curly */\n    /* tslint:disable:no-conditional-assignment */\n    var cos = Math.cos, sin = Math.sin, pow = Math.pow, sqrt = Math.sqrt, PI = Math.PI;\n    var easings = {\n        linear: function (p) { return p; },\n        easeInQuad: function (_, t, b, c, d) { return (c * (t /= d) * t + b); },\n        easeOutQuad: function (_, t, b, c, d) { return (-c * (t /= d) * (t - 2) + b); },\n        easeInOutQuad: function (_, t, b, c, d) { return ((t /= d / 2) < 1 ? c / 2 * t * t + b : -c / 2 * ((--t) * (t - 2) - 1) + b); },\n        easeInCubic: function (_, t, b, c, d) { return (c * (t /= d) * t * t + b); },\n        easeOutCubic: function (_, t, b, c, d) { return (c * ((t = t / d - 1) * t * t + 1) + b); },\n        easeInOutCubic: function (_, t, b, c, d) { return ((t /= d / 2) < 1 ? c / 2 * t * t * t + b : c / 2 * ((t -= 2) * t * t + 2) + b); },\n        easeInQuart: function (_, t, b, c, d) { return (c * (t /= d) * t * t * t + b); },\n        easeOutQuart: function (_, t, b, c, d) { return (-c * ((t = t / d - 1) * t * t * t - 1) + b); },\n        easeInOutQuart: function (_, t, b, c, d) { return ((t /= d / 2) < 1 ? c / 2 * t * t * t * t + b : -c / 2 * ((t -= 2) * t * t * t - 2) + b); },\n        easeInQuint: function (_, t, b, c, d) { return (c * (t /= d) * t * t * t * t + b); },\n        easeOutQuint: function (_, t, b, c, d) { return (c * ((t = t / d - 1) * t * t * t * t + 1) + b); },\n        easeInOutQuint: function (_, t, b, c, d) { return ((t /= d / 2) < 1 ? c / 2 * t * t * t * t * t + b : c / 2 * ((t -= 2) * t * t * t * t + 2) + b); },\n        easeInSine: function (_, t, b, c, d) { return (-c * cos(t / d * (PI / 2)) + c + b); },\n        easeOutSine: function (_, t, b, c, d) { return (c * sin(t / d * (PI / 2)) + b); },\n        easeInOutSine: function (_, t, b, c, d) { return (-c / 2 * (cos(PI * t / d) - 1) + b); },\n        easeInExpo: function (_, t, b, c, d) { return ((t === 0) ? b : c * pow(2, 10 * (t / d - 1)) + b); },\n        easeOutExpo: function (_, t, b, c, d) { return ((t === d) ? b + c : c * (-pow(2, -10 * t / d) + 1) + b); },\n        easeInOutExpo: function (_, t, b, c, d) {\n            if (t === 0)\n                return b;\n            if (t === d)\n                return b + c;\n            if ((t /= d / 2) < 1)\n                return c / 2 * pow(2, 10 * (t - 1)) + b;\n            return c / 2 * (-pow(2, -10 * --t) + 2) + b;\n        },\n        easeInCirc: function (_, t, b, c, d) { return (-c * (sqrt(1 - (t /= d) * t) - 1) + b); },\n        easeOutCirc: function (_, t, b, c, d) { return (c * sqrt(1 - (t = t / d - 1) * t) + b); },\n        easeInOutCirc: function (_, t, b, c, d) { return ((t /= d / 2) < 1 ? -c / 2 * (sqrt(1 - t * t) - 1) + b : c / 2 * (sqrt(1 - (t -= 2) * t) + 1) + b); },\n    };\n\n    var directionMethodMap = {\n        y: 'scrollTop',\n        x: 'scrollLeft',\n    };\n    var directionPropMap = {\n        y: 'pageYOffset',\n        x: 'pageXOffset',\n    };\n    var getScroll = function ($el, direction) { return ($el[directionMethodMap[direction]]); };\n    var setScroll = function ($el, offset, direction) {\n        $el[directionMethodMap[direction]] = offset;\n    };\n    var getOffset = function ($el, $context) {\n        var rect = $el.getBoundingClientRect();\n        if (rect.width || rect.height) {\n            var scroll_1 = { top: 0, left: 0 };\n            var $ctx = void 0;\n            if (isRootContainer($context)) {\n                $ctx = document.documentElement;\n                scroll_1.top = window[directionPropMap.y];\n                scroll_1.left = window[directionPropMap.x];\n            }\n            else {\n                $ctx = $context;\n                var cRect = $ctx.getBoundingClientRect();\n                scroll_1.top = (cRect.top * -1) + $ctx[directionMethodMap.y];\n                scroll_1.left = (cRect.left * -1) + $ctx[directionMethodMap.x];\n            }\n            return {\n                top: (rect.top + scroll_1.top) - $ctx.clientTop,\n                left: (rect.left + scroll_1.left) - $ctx.clientLeft,\n            };\n        }\n        return rect;\n    };\n\n    var $$ = function (selector) { return (Array.prototype.slice.call((!selector ? [] : document.querySelectorAll(selector)))); };\n    var $ = function (selector) { return ($$(selector).shift() || null); };\n    var matches = function ($el, selector) {\n        if (isElement(selector)) {\n            return $el === selector;\n        }\n        var results = $$(selector);\n        var i = results.length;\n        // tslint:disable-next-line no-empty\n        while (--i >= 0 && results[i] !== $el) { }\n        return i > -1;\n    };\n    var isRootContainer = function ($el) { return ($el === document.documentElement || $el === document.body); };\n    var findScrollable = function (selectors, direction) {\n        var method = directionMethodMap[direction];\n        var $elements = isElement(selectors) ? [selectors] : $$(selectors);\n        var $div = document.createElement('div');\n        for (var i = 0; i < $elements.length; i += 1) {\n            var $el = $elements[i];\n            var $result = null;\n            if ($el[method] > 0) {\n                $result = $el;\n            }\n            else {\n                var outerWidth_1 = window.outerWidth, innerWidth_1 = window.innerWidth;\n                var zoom = outerWidth_1 ? outerWidth_1 / innerWidth_1 : 1;\n                $div.style.width = $el.clientWidth + 1 + \"px\";\n                $div.style.height = $el.clientHeight + 1 + \"px\";\n                $el.appendChild($div);\n                $el[method] = Math.max(1, 1.5 / zoom);\n                if ($el[method] > 0) {\n                    $result = $el;\n                }\n                $el[method] = 0;\n                $el.removeChild($div);\n            }\n            if ($result) {\n                return $result;\n            }\n        }\n        return null;\n    };\n\n    var getHeight = function ($el) { return (Math.max($el.scrollHeight, $el.clientHeight, $el.offsetHeight)); };\n    var getWidth = function ($el) { return (Math.max($el.scrollWidth, $el.clientWidth, $el.offsetWidth)); };\n    var getSize = function ($el) { return ({\n        width: getWidth($el),\n        height: getHeight($el),\n    }); };\n    var getViewportAndElementSizes = function ($el) {\n        var isRoot = isRootContainer($el);\n        return {\n            viewport: {\n                width: isRoot\n                    ? Math.min(window.innerWidth, document.documentElement.clientWidth)\n                    : $el.clientWidth,\n                height: isRoot ? window.innerHeight : $el.clientHeight,\n            },\n            size: isRoot\n                ? {\n                    width: Math.max(getWidth(document.body), getWidth(document.documentElement)),\n                    height: Math.max(getHeight(document.body), getHeight(document.documentElement)),\n                }\n                : getSize($el),\n        };\n    };\n\n    var wheelEventName = (function () {\n        if (!canUseDOM) {\n            return 'wheel';\n        }\n        return 'onwheel' in document ? 'wheel' : 'mousewheel';\n    })();\n    var eventName = function (name) { return (name === 'wheel' ? wheelEventName : name); };\n    var apply = function ($el, method, event, listener, passive) {\n        event.split(' ').forEach(function (name) {\n            $el[method](eventName(name), listener, canUsePassiveOption ? { passive: passive } : false);\n        });\n    };\n    var addEvent = function ($el, event, listener, passive) {\n        apply($el, 'addEventListener', event, listener, passive);\n    };\n    var removeEvent = function ($el, event, listener, passive) {\n        apply($el, 'removeEventListener', event, listener, passive);\n    };\n\n    var reRelativeToken = /^(\\+|-)=(\\d+(?:\\.\\d+)?)$/;\n    var parseCoordinate = function (coordinate, enableVertical) {\n        var res = { top: 0, left: 0, relative: false };\n        // Object ({ top: {n}, left: {n} })\n        if (hasProp(coordinate, 'top') || hasProp(coordinate, 'left')) {\n            res = __assign({}, res, coordinate);\n            // Array ([{n}, [{n}])\n        }\n        else if (isArray(coordinate)) {\n            if (coordinate.length > 1) {\n                res.top = coordinate[0];\n                res.left = coordinate[1];\n            }\n            else if (coordinate.length === 1) {\n                res.top = enableVertical ? coordinate[0] : 0;\n                res.left = !enableVertical ? coordinate[0] : 0;\n            }\n            else {\n                return null;\n            }\n            // Number\n        }\n        else if (isNumeric(coordinate)) {\n            if (enableVertical) {\n                res.top = coordinate;\n            }\n            else {\n                res.left = coordinate;\n            }\n            // String ('+={n}', '-={n}')\n        }\n        else if (isString(coordinate)) {\n            var m = coordinate.trim().match(reRelativeToken);\n            if (!m) {\n                return null;\n            }\n            var op = m[1];\n            var val = parseInt(m[2], 10);\n            if (op === '+') {\n                res.top = enableVertical ? val : 0;\n                res.left = !enableVertical ? val : 0;\n            }\n            else {\n                res.top = enableVertical ? -val : 0;\n                res.left = !enableVertical ? -val : 0;\n            }\n            res.relative = true;\n        }\n        else {\n            return null;\n        }\n        return res;\n    };\n\n    var defaultOptions = {\n        trigger: '[data-scroll]',\n        header: '[data-scroll-header]',\n        duration: 1000,\n        easing: 'easeOutQuint',\n        offset: 0,\n        vertical: true,\n        horizontal: false,\n        cancellable: true,\n        updateURL: false,\n        preventDefault: true,\n        stopPropagation: true,\n        quickMode: false,\n        // Callbacks\n        before: null,\n        after: null,\n        cancel: null,\n        complete: null,\n        step: null,\n    };\n\n    var CONTAINER_CLICK_EVENT = 'click';\n    var CONTAINER_STOP_EVENT = 'wheel touchstart touchmove';\n    var SweetScroll = /** @class */ (function () {\n        /**\n         * Constructor\n         */\n        function SweetScroll(options, container) {\n            var _this = this;\n            this.ctx = {\n                $trigger: null,\n                opts: null,\n                progress: false,\n                pos: null,\n                startPos: null,\n                easing: null,\n                start: 0,\n                id: 0,\n                cancel: false,\n                hash: null,\n            };\n            /**\n             * Handle each frame of the animation.\n             */\n            this.loop = function (time) {\n                var _a = _this, $el = _a.$el, ctx = _a.ctx;\n                if (!ctx.start) {\n                    ctx.start = time;\n                }\n                if (!ctx.progress || !$el) {\n                    _this.stop();\n                    return;\n                }\n                var options = ctx.opts;\n                var offset = ctx.pos;\n                var start = ctx.start;\n                var startOffset = ctx.startPos;\n                var easing = ctx.easing;\n                var duration = options.duration;\n                var directionMap = { top: 'y', left: 'x' };\n                var timeElapsed = time - start;\n                var t = Math.min(1, Math.max(timeElapsed / duration, 0));\n                Object.keys(offset).forEach(function (key) {\n                    var value = offset[key];\n                    var initial = startOffset[key];\n                    var delta = value - initial;\n                    if (delta !== 0) {\n                        var val = easing(t, duration * t, 0, 1, duration);\n                        setScroll($el, Math.round(initial + delta * val), directionMap[key]);\n                    }\n                });\n                if (timeElapsed <= duration) {\n                    _this.hook(options, 'step', t);\n                    ctx.id = SweetScroll.raf(_this.loop);\n                }\n                else {\n                    _this.stop(true);\n                }\n            };\n            /**\n             * Handling of container click event.\n             */\n            this.handleClick = function (e) {\n                var opts = _this.opts;\n                var $el = e.target;\n                for (; $el && $el !== document; $el = $el.parentNode) {\n                    if (!matches($el, opts.trigger)) {\n                        continue;\n                    }\n                    var dataOptions = JSON.parse($el.getAttribute('data-scroll-options') || '{}');\n                    var data = $el.getAttribute('data-scroll');\n                    var to = data || $el.getAttribute('href');\n                    var options = __assign({}, opts, dataOptions);\n                    var preventDefault = options.preventDefault, stopPropagation = options.stopPropagation, vertical = options.vertical, horizontal = options.horizontal;\n                    if (preventDefault) {\n                        e.preventDefault();\n                    }\n                    if (stopPropagation) {\n                        e.stopPropagation();\n                    }\n                    // Passes the trigger element to callback\n                    _this.ctx.$trigger = $el;\n                    if (horizontal && vertical) {\n                        _this.to(to, options);\n                    }\n                    else if (vertical) {\n                        _this.toTop(to, options);\n                    }\n                    else if (horizontal) {\n                        _this.toLeft(to, options);\n                    }\n                }\n            };\n            /**\n             * Handling of container stop events.\n             */\n            this.handleStop = function (e) {\n                var ctx = _this.ctx;\n                var opts = ctx.opts;\n                if (opts && opts.cancellable) {\n                    ctx.cancel = true;\n                    _this.stop();\n                }\n                else {\n                    e.preventDefault();\n                }\n            };\n            var opts = __assign({}, defaultOptions, (options || {}));\n            var vertical = opts.vertical, horizontal = opts.horizontal;\n            var selector = container === undefined ? 'body,html' : container;\n            var $container = null;\n            if (canUseDOM) {\n                if (vertical) {\n                    $container = findScrollable(selector, 'y');\n                }\n                if (!$container && horizontal) {\n                    $container = findScrollable(selector, 'x');\n                }\n            }\n            if ($container) {\n                this.opts = opts;\n                this.$el = $container;\n                this.bind(true, false);\n            }\n        }\n        /**\n         * SweetScroll instance factory.\n         */\n        SweetScroll.create = function (options, container) {\n            return new SweetScroll(options, container);\n        };\n        /**\n         * Scroll animation to the specified position.\n         */\n        SweetScroll.prototype.to = function (distance, options) {\n            if (!canUseDOM) {\n                return;\n            }\n            var _a = this, $el = _a.$el, ctx = _a.ctx, currentOptions = _a.opts;\n            var $trigger = ctx.$trigger;\n            var opts = __assign({}, currentOptions, options || {});\n            var optOffset = opts.offset, vertical = opts.vertical, horizontal = opts.horizontal;\n            var $header = isElement(opts.header) ? opts.header : $(opts.header);\n            var hash = isString(distance) && /^#/.test(distance) ? distance : null;\n            ctx.opts = opts; // Temporary options\n            ctx.cancel = false; // Disable the call flag of `cancel`\n            ctx.hash = hash;\n            // Stop current animation\n            this.stop();\n            // Does not move if the container is not found\n            if (!$el) {\n                return;\n            }\n            // Get scroll offset\n            var offset = parseCoordinate(optOffset, vertical);\n            var coordinate = parseCoordinate(distance, vertical);\n            var scroll = { top: 0, left: 0 };\n            if (coordinate) {\n                if (coordinate.relative) {\n                    var current = getScroll($el, vertical ? 'y' : 'x');\n                    scroll.top = vertical ? current + coordinate.top : coordinate.top;\n                    scroll.left = !vertical ? current + coordinate.left : coordinate.left;\n                }\n                else {\n                    scroll = coordinate;\n                }\n            }\n            else if (isString(distance) && distance !== '#') {\n                var $target = $(distance);\n                if (!$target) {\n                    return;\n                }\n                scroll = getOffset($target, $el);\n            }\n            if (offset) {\n                scroll.top += offset.top;\n                scroll.left += offset.left;\n            }\n            if ($header) {\n                scroll.top = Math.max(0, scroll.top - getSize($header).height);\n            }\n            // Normalize scroll offset\n            var _b = getViewportAndElementSizes($el), viewport = _b.viewport, size = _b.size;\n            scroll.top = vertical\n                ? Math.max(0, Math.min(size.height - viewport.height, scroll.top))\n                : getScroll($el, 'y');\n            scroll.left = horizontal\n                ? Math.max(0, Math.min(size.width - viewport.width, scroll.left))\n                : getScroll($el, 'x');\n            // Call `before`\n            // Stop scrolling when it returns false\n            if (this.hook(opts, 'before', scroll, $trigger) === false) {\n                ctx.opts = null;\n                return;\n            }\n            // Set offset\n            ctx.pos = scroll;\n            // Run animation!!\n            this.start(opts);\n            // Bind stop events\n            this.bind(false, true);\n        };\n        /**\n         * Scroll animation to specified left position.\n         */\n        SweetScroll.prototype.toTop = function (distance, options) {\n            this.to(distance, __assign({}, options || {}, { vertical: true, horizontal: false }));\n        };\n        /**\n         * Scroll animation to specified top position.\n         */\n        SweetScroll.prototype.toLeft = function (distance, options) {\n            this.to(distance, __assign({}, options || {}, { vertical: false, horizontal: true }));\n        };\n        /**\n         * Scroll animation to specified element.\n         */\n        SweetScroll.prototype.toElement = function ($element, options) {\n            var $el = this.$el;\n            if (!canUseDOM || !$el) {\n                return;\n            }\n            this.to(getOffset($element, $el), options || {});\n        };\n        /**\n         * Stop the current scroll animation.\n         */\n        SweetScroll.prototype.stop = function (gotoEnd) {\n            if (gotoEnd === void 0) { gotoEnd = false; }\n            var _a = this, $el = _a.$el, ctx = _a.ctx;\n            var pos = ctx.pos;\n            if (!$el || !ctx.progress) {\n                return;\n            }\n            SweetScroll.caf(ctx.id);\n            ctx.progress = false;\n            ctx.start = 0;\n            ctx.id = 0;\n            if (gotoEnd && pos) {\n                setScroll($el, pos.left, 'x');\n                setScroll($el, pos.top, 'y');\n            }\n            this.complete();\n        };\n        /**\n         * Update options.\n         */\n        SweetScroll.prototype.update = function (options) {\n            if (this.$el) {\n                var opts = __assign({}, this.opts, options);\n                this.stop();\n                this.unbind(true, true);\n                this.opts = opts;\n                this.bind(true, false);\n            }\n        };\n        /**\n         * Destroy instance.\n         */\n        SweetScroll.prototype.destroy = function () {\n            if (this.$el) {\n                this.stop();\n                this.unbind(true, true);\n                this.$el = null;\n            }\n        };\n        /**\n         * Callback methods.\n         */\n        /* tslint:disable:no-empty */\n        SweetScroll.prototype.onBefore = function (_, __) { return true; };\n        SweetScroll.prototype.onStep = function (_) { };\n        SweetScroll.prototype.onAfter = function (_, __) { };\n        SweetScroll.prototype.onCancel = function () { };\n        SweetScroll.prototype.onComplete = function (_) { };\n        /* tslint:enable */\n        /**\n         * Start scrolling animation.\n         */\n        SweetScroll.prototype.start = function (opts) {\n            var ctx = this.ctx;\n            ctx.opts = opts;\n            ctx.progress = true;\n            ctx.easing = isFunction(opts.easing)\n                ? opts.easing\n                : easings[opts.easing];\n            // Update start offset.\n            var $container = this.$el;\n            var offset = ctx.pos;\n            var start = {\n                top: getScroll($container, 'y'),\n                left: getScroll($container, 'x'),\n            };\n            if (opts.quickMode) {\n                var _a = getViewportAndElementSizes($container).viewport, width = _a.width, height = _a.height;\n                if (Math.abs(start.top - offset.top) > height) {\n                    start.top = start.top > offset.top ? offset.top + height : offset.top - height;\n                }\n                if (Math.abs(start.left - offset.left) > width) {\n                    start.left = start.left > offset.left ? offset.left + width : offset.left - width;\n                }\n            }\n            ctx.startPos = start;\n            // Loop\n            ctx.id = SweetScroll.raf(this.loop);\n        };\n        /**\n         * Handle the completion of scrolling animation.\n         */\n        SweetScroll.prototype.complete = function () {\n            var _a = this, $el = _a.$el, ctx = _a.ctx;\n            var hash = ctx.hash, cancel = ctx.cancel, opts = ctx.opts, pos = ctx.pos, $trigger = ctx.$trigger;\n            if (!$el || !opts) {\n                return;\n            }\n            if (hash != null && hash !== window.location.hash) {\n                var updateURL = opts.updateURL;\n                if (canUseDOM && canUseHistory && updateURL !== false) {\n                    window.history[updateURL === 'replace' ? 'replaceState' : 'pushState'](null, '', hash);\n                }\n            }\n            this.unbind(false, true);\n            ctx.opts = null;\n            ctx.$trigger = null;\n            if (cancel) {\n                this.hook(opts, 'cancel');\n            }\n            else {\n                this.hook(opts, 'after', pos, $trigger);\n            }\n            this.hook(opts, 'complete', cancel);\n        };\n        /**\n         * Callback function and method call.\n         */\n        SweetScroll.prototype.hook = function (options, type) {\n            var args = [];\n            for (var _i = 2; _i < arguments.length; _i++) {\n                args[_i - 2] = arguments[_i];\n            }\n            var callback = options[type];\n            var callbackResult;\n            var methodResult;\n            // callback\n            if (isFunction(callback)) {\n                callbackResult = callback.apply(this, args.concat([this]));\n            }\n            // method\n            methodResult = this[\"on\" + (type[0].toUpperCase() + type.slice(1))].apply(this, args);\n            return callbackResult !== undefined ? callbackResult : methodResult;\n        };\n        /**\n         * Bind events of container element.\n         */\n        SweetScroll.prototype.bind = function (click, stop) {\n            var _a = this, $el = _a.$el, opts = _a.ctx.opts;\n            if ($el) {\n                if (click) {\n                    addEvent($el, CONTAINER_CLICK_EVENT, this.handleClick, false);\n                }\n                if (stop) {\n                    addEvent($el, CONTAINER_STOP_EVENT, this.handleStop, opts ? opts.cancellable : true);\n                }\n            }\n        };\n        /**\n         * Unbind events of container element.\n         */\n        SweetScroll.prototype.unbind = function (click, stop) {\n            var _a = this, $el = _a.$el, opts = _a.ctx.opts;\n            if ($el) {\n                if (click) {\n                    removeEvent($el, CONTAINER_CLICK_EVENT, this.handleClick, false);\n                }\n                if (stop) {\n                    removeEvent($el, CONTAINER_STOP_EVENT, this.handleStop, opts ? opts.cancellable : true);\n                }\n            }\n        };\n        /**\n         * You can set Polyfill (or Ponyfill) for browsers that do not support requestAnimationFrame.\n         */\n        SweetScroll.raf = raf;\n        SweetScroll.caf = caf;\n        return SweetScroll;\n    }());\n\n    return SweetScroll;\n\n})));\n","import \"../styles/index.css\";\nimport \"../styles/base.styl\";\nimport \"../styles/nav.styl\";\n\nimport SweetScroll from 'sweet-scroll';\nimport { logoBanner } from './console';\nimport initInstructionPicker from './instruction-picker';\n\nimport \"./language-selector\";\n\nfunction isElementPartiallyInViewport (element: HTMLElement) {\n  const { left, top, height, width } = element.getBoundingClientRect()\n  const windowHeight = window.innerHeight || document.documentElement.clientHeight\n  const windowWidth = window.innerWidth || document.documentElement.clientWidth\n\n  const inViewVertically = top <= windowHeight && top + height >= 0\n  const inViewHorizontally = left <= windowWidth && left + width >= 0\n\n  return inViewVertically && inViewHorizontally\n}\n\nfunction ref(ref: string): HTMLElement {\n  return <HTMLElement>document.querySelector(`[data-ref=\"${ref}\"]`)!\n}\n\nconsole.log(logoBanner)\nconsole.log(window.btoa('Join us and help build a better Internet https://cloudflare.com/careers?utm=1.1.1.1-DNS'))\n\nfunction init () {\n  const scroller = new SweetScroll() // Initialized for its DOM side effects.\n\n  const $el = {\n    slideshow: ref('slideshow'),\n    setupSection: ref('setup'),\n    statsChart: ref('statsChart'),\n  }\n\n  initInstructionPicker()\n\n  const slideCount = $el.slideshow.querySelectorAll('.background-slide').length\n\n  window.setInterval(() => {\n    const slideIndex = parseInt($el.slideshow.dataset.activeSlide!, 10)\n\n    $el.slideshow.dataset.activeSlide = (slideIndex > slideCount - 1 ? 1 : slideIndex + 1).toString()\n  }, 6000)\n\n\n  let hasAnimated = false\n\n  function animateChart () {\n    if (hasAnimated || !isElementPartiallyInViewport($el.statsChart)) return\n\n    setTimeout(() => {\n      $el.statsChart.style.opacity = '1'\n    }, 400)\n\n    Array.prototype.forEach.call($el.statsChart.querySelectorAll('.bar-chart'), (barChart: HTMLElement, index: number) => {\n      const innerBar = barChart.querySelector('.bar-chart-fill') as HTMLElement\n\n      innerBar.style.width = '0'\n\n      setTimeout(() => {\n        innerBar.style.width = `${barChart.dataset.total}%`\n      }, 400 + (index * 100))\n    })\n    hasAnimated = true\n  }\n\n  setTimeout(animateChart, 400)\n\n  document.addEventListener('scroll', animateChart)\n}\n\nif (document.readyState === 'loading') {\n  document.addEventListener('DOMContentLoaded', init)\n} else {\n  init()\n}\n","export const logoBanner = `\n............................................................\n.........1............1............1............1...........\n........11...........11...........11...........11...........\n.......111..........111..........111..........111...........\n......1111.........1111.........1111.........1111...........\n........11...........11...........11...........11...........\n........11...........11...........11...........11...........\n........11...........11...........11...........11...........\n........11...........11...........11...........11...........\n........11...........11...........11...........11...........\n........11...........11...........11...........11...........\n........11...........11...........11...........11...........\n........11...........11...........11...........11...........\n........11...........11...........11...........11...........\n........11....ooo....11....ooo....11....ooo....11...........\n......111111..ooo..111111..ooo..111111..ooo..111111.........\n............................................................\n`\n"],"sourceRoot":""}