diff --git a/packages/compiler-explorer-directives/dist/compiler-explorer-directives.cjs b/packages/compiler-explorer-directives/dist/compiler-explorer-directives.cjs index 015c4bf..c3cb29c 100644 --- a/packages/compiler-explorer-directives/dist/compiler-explorer-directives.cjs +++ b/packages/compiler-explorer-directives/dist/compiler-explorer-directives.cjs @@ -46,6 +46,10 @@ const langConfig = (() => { options: '-O2 -march=haswell -Wall -Wextra -pedantic -Wno-unused-variable -Wno-unused-parameter', mainRegex: /\bmain\(/ }], + ['c', { + options: '-O2 -march=haswell -Wall -Wextra -pedantic -Wno-unused-variable -Wno-unused-parameter', + mainRegex: /\bmain\(/ + }], ['d', { mainRegex: /\bmain\(/ }] diff --git a/packages/compiler-explorer-directives/dist/compiler-explorer-directives.cjs.map b/packages/compiler-explorer-directives/dist/compiler-explorer-directives.cjs.map index 9931e85..8a366a2 100644 --- a/packages/compiler-explorer-directives/dist/compiler-explorer-directives.cjs.map +++ b/packages/compiler-explorer-directives/dist/compiler-explorer-directives.cjs.map @@ -1 +1 @@ -{"version":3,"file":"compiler-explorer-directives.cjs","sources":["../src/compiler-explorer-directives.js"],"sourcesContent":["'use strict';\n\nimport bent from 'bent';\nimport promiseRetry from 'promise-retry';\nimport ansi_colors from 'ansi-colors';\nimport debug from 'debug';\nconst { unstyle } = ansi_colors;\n\nconst log = debug('reveal-compiler-explorer:compiler-explorer-directives');\n\n// https://github.com/highlightjs/highlight.js/blob/master/SUPPORTED_LANGUAGES.md\nconst langAliases = {\n 'cpp': 'c++', 'hpp': 'c++', 'cc': 'c++', 'hh': 'c++', 'h++': 'c++', 'cxx': 'c++', 'hxx': 'c++',\n 'ada': 'ada',\n 'x86asm': 'assembly',\n 'h': 'c',\n 'f90': 'fortran', 'f95': 'fortran',\n 'golang': 'go',\n 'hs': 'haskell',\n 'nimrod': 'nim',\n 'ml': 'ocaml',\n 'py': 'python', 'gyp': 'python',\n 'rs': 'rust'\n};\n\nconst GODBOLT_URL = 'https://godbolt.org';\nconst get = bent(`${GODBOLT_URL}/api`, 'GET', 'json', { 'Accept': 'application/json' });\nconst post = bent(`${GODBOLT_URL}/api`, 'POST', 'json');\n\nconst langConfig = (() => {\n let langConfig;\n return async function () {\n if (!langConfig) {\n const predefined = new Map([\n ['c++', {\n options: '-O2 -march=haswell -Wall -Wextra -pedantic -Wno-unused-variable -Wno-unused-parameter',\n mainRegex: /\\bmain\\(/\n }],\n ['d', {\n mainRegex: /\\bmain\\(/\n }]\n ]);\n log(`reading languages from ${GODBOLT_URL}`);\n const languages = await get('/languages?fields=id,defaultCompiler');\n langConfig = new Map(languages\n .map(({ id, defaultCompiler }) => [id, Object.assign({ 'compiler': defaultCompiler }, predefined.get(id))]));\n log('default language configuration is %o', langConfig);\n }\n return langConfig;\n };\n})();\n\nconst defaultConfig = {\n runMain: true,\n useLocal: false,\n localPort: 10240,\n directives: []\n};\n\nconst directive = pattern => new RegExp(`^\\\\s*\\\\/\\\\/\\\\/\\\\s*${pattern}$`);\n\nconst builtinDirectives = [\n ['compiler=(.*)', (matches, info) => matches.slice(1).forEach(match => {\n info.compiler = match;\n })],\n ['options=(.*)', (matches, info) => matches.slice(1).forEach(match => info.options = match)],\n ['options\\\\+=(.*)', (matches, info) => matches.slice(1).forEach(match => info.options += ' ' + match)],\n ['libs=(\\\\w+:\\\\w+(?:,\\\\w+:\\\\w+)*)', (matches, info) => matches.slice(1).forEach(match => {\n [...match.matchAll(/(\\w+):(\\w+)/g)].forEach(match => {\n info.libs.push({\n name: match[1],\n ver: match[2]\n });\n })\n })],\n ['(no)?execute', (matches, info) => matches.slice(1).forEach(match => info.execute = !match)],\n ['external', (matches, info) => matches.forEach(_ => info.forceExternal = true)],\n ['(un)?hide', (matches, info) => matches.slice(1).forEach(match => info.hide = !match)],\n];\n\nconst parseCode = async (code, language, config) => {\n log('parsing %o, language %s, config %o', code, language, config);\n language = langAliases[language] || language;\n const lg = await langConfig();\n if (!lg.has(language)) {\n log('language %s is not supported', language);\n return null;\n }\n\n config = Object.assign({}, defaultConfig, lg.get(language), config);\n const directives = builtinDirectives.concat(config.directives)\n .map(([regex, action]) => [directive(regex), action]);\n const lines = unescape(code).split('\\n');\n const matches = (line, regex) => line.match(regex) || [];\n\n const info = {\n source: [],\n displaySource: [],\n language: language,\n compiler: config.compiler,\n options: config.options || '',\n libs: config.libs || [],\n forceExternal: false,\n hide: false\n };\n\n for (const line of lines) {\n if (line.match(directive('.*'))) {\n directives.forEach(([regex, action]) => action(matches(line, regex), info))\n } else {\n if (config.runMain\n && config.mainRegex\n && line.match(config.mainRegex)\n && !info.hasOwnProperty('execute')) {\n info.execute = true;\n }\n info.source.push(line);\n if (!info.hide)\n info.displaySource.push(line);\n }\n }\n\n info.baseUrl = (config.useLocal && !info.forceExternal)\n ? `http://localhost:${config.localPort}`\n : GODBOLT_URL;\n info.source = info.source.join('\\n');\n info.displaySource = info.displaySource.join('\\n');\n delete info.hide;\n delete info.forceExternal;\n\n log('parse result %o', info);\n return info;\n};\n\nconst displayUrl = (info) => {\n let content = [\n {\n type: 'component',\n componentName: 'codeEditor',\n componentState: {\n id: 1,\n source: info.source,\n options: { compileOnChange: true, colouriseAsm: true },\n fontScale: 2.5\n }\n },\n {\n type: 'column',\n content: [{\n type: 'component',\n componentName: 'compiler',\n componentState: {\n source: 1,\n lang: info.language,\n compiler: info.compiler,\n options: info.options,\n libs: info.libs,\n fontScale: 3.0,\n filters: {\n commentOnly: true,\n directives: true,\n intel: true,\n labels: true,\n trim: true,\n execute: info.execute\n }\n }\n }, {\n type: 'component',\n componentName: 'output',\n componentState: {\n compiler: 1\n }\n }\n ]\n }\n ];\n let obj = {\n version: 4,\n content: [{ type: 'row', content: content }],\n settings: {\n theme: 'dark'\n }\n };\n\n let ceFragment = encodeURIComponent(JSON.stringify(obj));\n\n return `${info.baseUrl}/#${ceFragment}`;\n};\n\nclass CompileError extends Error {\n constructor(code, message) {\n super(message);\n this.name = 'CompileError';\n this.code = code;\n }\n}\n\nconst compile = async (info, retryOptions = {}) => {\n log('compiling %o', info);\n const data = {\n source: info.source,\n options: {\n userArguments: info.options || '',\n filters: {\n execute: info.execute || false\n },\n libraries: (info.libs || []).map(function (lib) {\n return {\n id: lib.name,\n version: lib.ver\n };\n })\n }\n };\n const response = await promiseRetry(retryOptions, async (retry) => {\n try {\n return await post(`/compiler/${info.compiler}/compile`, data);\n }\n catch (err) {\n log('compile error %o', err);\n if (Math.trunc(err.statusCode / 100) === 5) {\n log('retrying');\n retry(err);\n }\n\n throw err;\n }\n });\n\n log('response is %o', response);\n\n const text = (stream) => unstyle(stream.stderr.concat(stream.stdout).map(x => x.text).join('\\n'));\n\n if (response.code === 0) {\n if (info.execute) {\n if (response.execResult.buildResult.code === 0) {\n return text(response.execResult);\n }\n\n throw new CompileError(response.execResult.buildResult.code,\n text(response.execResult.buildResult));\n }\n\n return text(response);\n }\n\n throw new CompileError(response.code, text(response));\n};\n\nexport { parseCode, displayUrl, compile, CompileError };\n"],"names":["ansi_colors","debug","bent","promiseRetry"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"compiler-explorer-directives.cjs","sources":["../src/compiler-explorer-directives.js"],"sourcesContent":["'use strict';\n\nimport bent from 'bent';\nimport promiseRetry from 'promise-retry';\nimport ansi_colors from 'ansi-colors';\nimport debug from 'debug';\nconst { unstyle } = ansi_colors;\n\nconst log = debug('reveal-compiler-explorer:compiler-explorer-directives');\n\n// https://github.com/highlightjs/highlight.js/blob/master/SUPPORTED_LANGUAGES.md\nconst langAliases = {\n 'cpp': 'c++', 'hpp': 'c++', 'cc': 'c++', 'hh': 'c++', 'h++': 'c++', 'cxx': 'c++', 'hxx': 'c++',\n 'ada': 'ada',\n 'x86asm': 'assembly',\n 'h': 'c',\n 'f90': 'fortran', 'f95': 'fortran',\n 'golang': 'go',\n 'hs': 'haskell',\n 'nimrod': 'nim',\n 'ml': 'ocaml',\n 'py': 'python', 'gyp': 'python',\n 'rs': 'rust'\n};\n\nconst GODBOLT_URL = 'https://godbolt.org';\nconst get = bent(`${GODBOLT_URL}/api`, 'GET', 'json', { 'Accept': 'application/json' });\nconst post = bent(`${GODBOLT_URL}/api`, 'POST', 'json');\n\nconst langConfig = (() => {\n let langConfig;\n return async function () {\n if (!langConfig) {\n const predefined = new Map([\n ['c++', {\n options: '-O2 -march=haswell -Wall -Wextra -pedantic -Wno-unused-variable -Wno-unused-parameter',\n mainRegex: /\\bmain\\(/\n }],\n ['c', {\n options: '-O2 -march=haswell -Wall -Wextra -pedantic -Wno-unused-variable -Wno-unused-parameter',\n mainRegex: /\\bmain\\(/\n }],\n ['d', {\n mainRegex: /\\bmain\\(/\n }]\n ]);\n log(`reading languages from ${GODBOLT_URL}`);\n const languages = await get('/languages?fields=id,defaultCompiler');\n langConfig = new Map(languages\n .map(({ id, defaultCompiler }) => [id, Object.assign({ 'compiler': defaultCompiler }, predefined.get(id))]));\n log('default language configuration is %o', langConfig);\n }\n return langConfig;\n };\n})();\n\nconst defaultConfig = {\n runMain: true,\n useLocal: false,\n localPort: 10240,\n directives: []\n};\n\nconst directive = pattern => new RegExp(`^\\\\s*\\\\/\\\\/\\\\/\\\\s*${pattern}$`);\n\nconst builtinDirectives = [\n ['compiler=(.*)', (matches, info) => matches.slice(1).forEach(match => {\n info.compiler = match;\n })],\n ['options=(.*)', (matches, info) => matches.slice(1).forEach(match => info.options = match)],\n ['options\\\\+=(.*)', (matches, info) => matches.slice(1).forEach(match => info.options += ' ' + match)],\n ['libs=(\\\\w+:\\\\w+(?:,\\\\w+:\\\\w+)*)', (matches, info) => matches.slice(1).forEach(match => {\n [...match.matchAll(/(\\w+):(\\w+)/g)].forEach(match => {\n info.libs.push({\n name: match[1],\n ver: match[2]\n });\n })\n })],\n ['(no)?execute', (matches, info) => matches.slice(1).forEach(match => info.execute = !match)],\n ['external', (matches, info) => matches.forEach(_ => info.forceExternal = true)],\n ['(un)?hide', (matches, info) => matches.slice(1).forEach(match => info.hide = !match)],\n];\n\nconst parseCode = async (code, language, config) => {\n log('parsing %o, language %s, config %o', code, language, config);\n language = langAliases[language] || language;\n const lg = await langConfig();\n if (!lg.has(language)) {\n log('language %s is not supported', language);\n return null;\n }\n\n config = Object.assign({}, defaultConfig, lg.get(language), config);\n const directives = builtinDirectives.concat(config.directives)\n .map(([regex, action]) => [directive(regex), action]);\n const lines = unescape(code).split('\\n');\n const matches = (line, regex) => line.match(regex) || [];\n\n const info = {\n source: [],\n displaySource: [],\n language: language,\n compiler: config.compiler,\n options: config.options || '',\n libs: config.libs || [],\n forceExternal: false,\n hide: false\n };\n\n for (const line of lines) {\n if (line.match(directive('.*'))) {\n directives.forEach(([regex, action]) => action(matches(line, regex), info))\n } else {\n if (config.runMain\n && config.mainRegex\n && line.match(config.mainRegex)\n && !info.hasOwnProperty('execute')) {\n info.execute = true;\n }\n info.source.push(line);\n if (!info.hide)\n info.displaySource.push(line);\n }\n }\n\n info.baseUrl = (config.useLocal && !info.forceExternal)\n ? `http://localhost:${config.localPort}`\n : GODBOLT_URL;\n info.source = info.source.join('\\n');\n info.displaySource = info.displaySource.join('\\n');\n delete info.hide;\n delete info.forceExternal;\n\n log('parse result %o', info);\n return info;\n};\n\nconst displayUrl = (info) => {\n let content = [\n {\n type: 'component',\n componentName: 'codeEditor',\n componentState: {\n id: 1,\n source: info.source,\n options: { compileOnChange: true, colouriseAsm: true },\n fontScale: 2.5\n }\n },\n {\n type: 'column',\n content: [{\n type: 'component',\n componentName: 'compiler',\n componentState: {\n source: 1,\n lang: info.language,\n compiler: info.compiler,\n options: info.options,\n libs: info.libs,\n fontScale: 3.0,\n filters: {\n commentOnly: true,\n directives: true,\n intel: true,\n labels: true,\n trim: true,\n execute: info.execute\n }\n }\n }, {\n type: 'component',\n componentName: 'output',\n componentState: {\n compiler: 1\n }\n }\n ]\n }\n ];\n let obj = {\n version: 4,\n content: [{ type: 'row', content: content }],\n settings: {\n theme: 'dark'\n }\n };\n\n let ceFragment = encodeURIComponent(JSON.stringify(obj));\n\n return `${info.baseUrl}/#${ceFragment}`;\n};\n\nclass CompileError extends Error {\n constructor(code, message) {\n super(message);\n this.name = 'CompileError';\n this.code = code;\n }\n}\n\nconst compile = async (info, retryOptions = {}) => {\n log('compiling %o', info);\n const data = {\n source: info.source,\n options: {\n userArguments: info.options || '',\n filters: {\n execute: info.execute || false\n },\n libraries: (info.libs || []).map(function (lib) {\n return {\n id: lib.name,\n version: lib.ver\n };\n })\n }\n };\n const response = await promiseRetry(retryOptions, async (retry) => {\n try {\n return await post(`/compiler/${info.compiler}/compile`, data);\n }\n catch (err) {\n log('compile error %o', err);\n if (Math.trunc(err.statusCode / 100) === 5) {\n log('retrying');\n retry(err);\n }\n\n throw err;\n }\n });\n\n log('response is %o', response);\n\n const text = (stream) => unstyle(stream.stderr.concat(stream.stdout).map(x => x.text).join('\\n'));\n\n if (response.code === 0) {\n if (info.execute) {\n if (response.execResult.buildResult.code === 0) {\n return text(response.execResult);\n }\n\n throw new CompileError(response.execResult.buildResult.code,\n text(response.execResult.buildResult));\n }\n\n return text(response);\n }\n\n throw new CompileError(response.code, text(response));\n};\n\nexport { parseCode, displayUrl, compile, CompileError };\n"],"names":["ansi_colors","debug","bent","promiseRetry"],"mappings":"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"} \ No newline at end of file diff --git a/packages/compiler-explorer-directives/src/compiler-explorer-directives.js b/packages/compiler-explorer-directives/src/compiler-explorer-directives.js index f9d81b3..aba1160 100644 --- a/packages/compiler-explorer-directives/src/compiler-explorer-directives.js +++ b/packages/compiler-explorer-directives/src/compiler-explorer-directives.js @@ -36,6 +36,10 @@ const langConfig = (() => { options: '-O2 -march=haswell -Wall -Wextra -pedantic -Wno-unused-variable -Wno-unused-parameter', mainRegex: /\bmain\(/ }], + ['c', { + options: '-O2 -march=haswell -Wall -Wextra -pedantic -Wno-unused-variable -Wno-unused-parameter', + mainRegex: /\bmain\(/ + }], ['d', { mainRegex: /\bmain\(/ }] diff --git a/packages/reveal-compiler-explorer/dist/reveal-compiler-explorer.cjs b/packages/reveal-compiler-explorer/dist/reveal-compiler-explorer.cjs index e23b251..dfc0a7f 100644 --- a/packages/reveal-compiler-explorer/dist/reveal-compiler-explorer.cjs +++ b/packages/reveal-compiler-explorer/dist/reveal-compiler-explorer.cjs @@ -1709,6 +1709,10 @@ const langConfig = (() => { options: '-O2 -march=haswell -Wall -Wextra -pedantic -Wno-unused-variable -Wno-unused-parameter', mainRegex: /\bmain\(/ }], + ['c', { + options: '-O2 -march=haswell -Wall -Wextra -pedantic -Wno-unused-variable -Wno-unused-parameter', + mainRegex: /\bmain\(/ + }], ['d', { mainRegex: /\bmain\(/ }] diff --git a/packages/reveal-compiler-explorer/dist/reveal-compiler-explorer.cjs.map b/packages/reveal-compiler-explorer/dist/reveal-compiler-explorer.cjs.map index 4557902..f6e20e5 100644 --- a/packages/reveal-compiler-explorer/dist/reveal-compiler-explorer.cjs.map +++ b/packages/reveal-compiler-explorer/dist/reveal-compiler-explorer.cjs.map @@ -1 +1 @@ -{"version":3,"file":"reveal-compiler-explorer.cjs","sources":["../../../node_modules/bent/src/core.js","../../../node_modules/bent/src/browser.js","../../compiler-explorer-directives/node_modules/err-code/index.js","../../compiler-explorer-directives/node_modules/retry/lib/retry_operation.js","../../compiler-explorer-directives/node_modules/retry/lib/retry.js","../../compiler-explorer-directives/node_modules/retry/index.js","../../compiler-explorer-directives/node_modules/promise-retry/index.js","../../../node_modules/rollup-plugin-node-globals/src/global.js","../../../node_modules/process-es6/browser.js","../../../node_modules/ansi-colors/symbols.js","../../../node_modules/ansi-colors/index.js","../../../node_modules/ms/index.js","../../compiler-explorer-directives/node_modules/debug/src/common.js","../../compiler-explorer-directives/node_modules/debug/src/browser.js","../../compiler-explorer-directives/dist/compiler-explorer-directives.cjs","../../../node_modules/hammerjs/hammer.js","../../../node_modules/reveal.js/js/utils/device.js","../src/reveal-compiler-explorer.js"],"sourcesContent":["'use strict'\nconst encodings = new Set(['json', 'buffer', 'string'])\n\nmodule.exports = mkrequest => (...args) => {\n const statusCodes = new Set()\n let method\n let encoding\n let headers\n let baseurl = ''\n\n args.forEach(arg => {\n if (typeof arg === 'string') {\n if (arg.toUpperCase() === arg) {\n if (method) {\n const msg = `Can't set method to ${arg}, already set to ${method}.`\n throw new Error(msg)\n } else {\n method = arg\n }\n } else if (arg.startsWith('http:') || arg.startsWith('https:')) {\n baseurl = arg\n } else {\n if (encodings.has(arg)) {\n encoding = arg\n } else {\n throw new Error(`Unknown encoding, ${arg}`)\n }\n }\n } else if (typeof arg === 'number') {\n statusCodes.add(arg)\n } else if (typeof arg === 'object') {\n if (Array.isArray(arg) || arg instanceof Set) {\n arg.forEach(code => statusCodes.add(code))\n } else {\n if (headers) {\n throw new Error('Cannot set headers twice.')\n }\n headers = arg\n }\n } else {\n throw new Error(`Unknown type: ${typeof arg}`)\n }\n })\n\n if (!method) method = 'GET'\n if (statusCodes.size === 0) {\n statusCodes.add(200)\n }\n\n return mkrequest(statusCodes, method, encoding, headers, baseurl)\n}\n","'use strict'\n/* global fetch, btoa, Headers */\nconst core = require('./core')\n\nclass StatusError extends Error {\n constructor (res, ...params) {\n super(...params)\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, StatusError)\n }\n\n this.name = 'StatusError'\n this.message = res.statusMessage\n this.statusCode = res.status\n this.res = res\n this.json = res.json.bind(res)\n this.text = res.text.bind(res)\n this.arrayBuffer = res.arrayBuffer.bind(res)\n let buffer\n const get = () => {\n if (!buffer) buffer = this.arrayBuffer()\n return buffer\n }\n Object.defineProperty(this, 'responseBody', { get })\n // match Node.js headers object\n this.headers = {}\n for (const [key, value] of res.headers.entries()) {\n this.headers[key.toLowerCase()] = value\n }\n }\n}\n\nconst mkrequest = (statusCodes, method, encoding, headers, baseurl) => async (_url, body, _headers = {}) => {\n _url = baseurl + (_url || '')\n let parsed = new URL(_url)\n\n if (!headers) headers = {}\n if (parsed.username) {\n headers.Authorization = 'Basic ' + btoa(parsed.username + ':' + parsed.password)\n parsed = new URL(parsed.protocol + '//' + parsed.host + parsed.pathname + parsed.search)\n }\n if (parsed.protocol !== 'https:' && parsed.protocol !== 'http:') {\n throw new Error(`Unknown protocol, ${parsed.protocol}`)\n }\n\n if (body) {\n if (body instanceof ArrayBuffer ||\n ArrayBuffer.isView(body) ||\n typeof body === 'string'\n ) {\n // noop\n } else if (typeof body === 'object') {\n body = JSON.stringify(body)\n headers['Content-Type'] = 'application/json'\n } else {\n throw new Error('Unknown body type.')\n }\n }\n\n _headers = new Headers({ ...(headers || {}), ..._headers })\n\n const resp = await fetch(parsed, { method, headers: _headers, body })\n resp.statusCode = resp.status\n\n if (!statusCodes.has(resp.status)) {\n throw new StatusError(resp)\n }\n\n if (encoding === 'json') return resp.json()\n else if (encoding === 'buffer') return resp.arrayBuffer()\n else if (encoding === 'string') return resp.text()\n else return resp\n}\n\nmodule.exports = core(mkrequest)\n","'use strict';\n\nfunction assign(obj, props) {\n for (const key in props) {\n Object.defineProperty(obj, key, {\n value: props[key],\n enumerable: true,\n configurable: true,\n });\n }\n\n return obj;\n}\n\nfunction createError(err, code, props) {\n if (!err || typeof err === 'string') {\n throw new TypeError('Please pass an Error to err-code');\n }\n\n if (!props) {\n props = {};\n }\n\n if (typeof code === 'object') {\n props = code;\n code = undefined;\n }\n\n if (code != null) {\n props.code = code;\n }\n\n try {\n return assign(err, props);\n } catch (_) {\n props.message = err.message;\n props.stack = err.stack;\n\n const ErrClass = function () {};\n\n ErrClass.prototype = Object.create(Object.getPrototypeOf(err));\n\n return assign(new ErrClass(), props);\n }\n}\n\nmodule.exports = createError;\n","function RetryOperation(timeouts, options) {\n // Compatibility for the old (timeouts, retryForever) signature\n if (typeof options === 'boolean') {\n options = { forever: options };\n }\n\n this._originalTimeouts = JSON.parse(JSON.stringify(timeouts));\n this._timeouts = timeouts;\n this._options = options || {};\n this._maxRetryTime = options && options.maxRetryTime || Infinity;\n this._fn = null;\n this._errors = [];\n this._attempts = 1;\n this._operationTimeout = null;\n this._operationTimeoutCb = null;\n this._timeout = null;\n this._operationStart = null;\n\n if (this._options.forever) {\n this._cachedTimeouts = this._timeouts.slice(0);\n }\n}\nmodule.exports = RetryOperation;\n\nRetryOperation.prototype.reset = function() {\n this._attempts = 1;\n this._timeouts = this._originalTimeouts;\n}\n\nRetryOperation.prototype.stop = function() {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n\n this._timeouts = [];\n this._cachedTimeouts = null;\n};\n\nRetryOperation.prototype.retry = function(err) {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n\n if (!err) {\n return false;\n }\n var currentTime = new Date().getTime();\n if (err && currentTime - this._operationStart >= this._maxRetryTime) {\n this._errors.unshift(new Error('RetryOperation timeout occurred'));\n return false;\n }\n\n this._errors.push(err);\n\n var timeout = this._timeouts.shift();\n if (timeout === undefined) {\n if (this._cachedTimeouts) {\n // retry forever, only keep last error\n this._errors.splice(this._errors.length - 1, this._errors.length);\n this._timeouts = this._cachedTimeouts.slice(0);\n timeout = this._timeouts.shift();\n } else {\n return false;\n }\n }\n\n var self = this;\n var timer = setTimeout(function() {\n self._attempts++;\n\n if (self._operationTimeoutCb) {\n self._timeout = setTimeout(function() {\n self._operationTimeoutCb(self._attempts);\n }, self._operationTimeout);\n\n if (self._options.unref) {\n self._timeout.unref();\n }\n }\n\n self._fn(self._attempts);\n }, timeout);\n\n if (this._options.unref) {\n timer.unref();\n }\n\n return true;\n};\n\nRetryOperation.prototype.attempt = function(fn, timeoutOps) {\n this._fn = fn;\n\n if (timeoutOps) {\n if (timeoutOps.timeout) {\n this._operationTimeout = timeoutOps.timeout;\n }\n if (timeoutOps.cb) {\n this._operationTimeoutCb = timeoutOps.cb;\n }\n }\n\n var self = this;\n if (this._operationTimeoutCb) {\n this._timeout = setTimeout(function() {\n self._operationTimeoutCb();\n }, self._operationTimeout);\n }\n\n this._operationStart = new Date().getTime();\n\n this._fn(this._attempts);\n};\n\nRetryOperation.prototype.try = function(fn) {\n console.log('Using RetryOperation.try() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = function(fn) {\n console.log('Using RetryOperation.start() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = RetryOperation.prototype.try;\n\nRetryOperation.prototype.errors = function() {\n return this._errors;\n};\n\nRetryOperation.prototype.attempts = function() {\n return this._attempts;\n};\n\nRetryOperation.prototype.mainError = function() {\n if (this._errors.length === 0) {\n return null;\n }\n\n var counts = {};\n var mainError = null;\n var mainErrorCount = 0;\n\n for (var i = 0; i < this._errors.length; i++) {\n var error = this._errors[i];\n var message = error.message;\n var count = (counts[message] || 0) + 1;\n\n counts[message] = count;\n\n if (count >= mainErrorCount) {\n mainError = error;\n mainErrorCount = count;\n }\n }\n\n return mainError;\n};\n","var RetryOperation = require('./retry_operation');\n\nexports.operation = function(options) {\n var timeouts = exports.timeouts(options);\n return new RetryOperation(timeouts, {\n forever: options && options.forever,\n unref: options && options.unref,\n maxRetryTime: options && options.maxRetryTime\n });\n};\n\nexports.timeouts = function(options) {\n if (options instanceof Array) {\n return [].concat(options);\n }\n\n var opts = {\n retries: 10,\n factor: 2,\n minTimeout: 1 * 1000,\n maxTimeout: Infinity,\n randomize: false\n };\n for (var key in options) {\n opts[key] = options[key];\n }\n\n if (opts.minTimeout > opts.maxTimeout) {\n throw new Error('minTimeout is greater than maxTimeout');\n }\n\n var timeouts = [];\n for (var i = 0; i < opts.retries; i++) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n if (options && options.forever && !timeouts.length) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n // sort the array numerically ascending\n timeouts.sort(function(a,b) {\n return a - b;\n });\n\n return timeouts;\n};\n\nexports.createTimeout = function(attempt, opts) {\n var random = (opts.randomize)\n ? (Math.random() + 1)\n : 1;\n\n var timeout = Math.round(random * opts.minTimeout * Math.pow(opts.factor, attempt));\n timeout = Math.min(timeout, opts.maxTimeout);\n\n return timeout;\n};\n\nexports.wrap = function(obj, options, methods) {\n if (options instanceof Array) {\n methods = options;\n options = null;\n }\n\n if (!methods) {\n methods = [];\n for (var key in obj) {\n if (typeof obj[key] === 'function') {\n methods.push(key);\n }\n }\n }\n\n for (var i = 0; i < methods.length; i++) {\n var method = methods[i];\n var original = obj[method];\n\n obj[method] = function retryWrapper(original) {\n var op = exports.operation(options);\n var args = Array.prototype.slice.call(arguments, 1);\n var callback = args.pop();\n\n args.push(function(err) {\n if (op.retry(err)) {\n return;\n }\n if (err) {\n arguments[0] = op.mainError();\n }\n callback.apply(this, arguments);\n });\n\n op.attempt(function() {\n original.apply(obj, args);\n });\n }.bind(obj, original);\n obj[method].options = options;\n }\n};\n","module.exports = require('./lib/retry');","'use strict';\n\nvar errcode = require('err-code');\nvar retry = require('retry');\n\nvar hasOwn = Object.prototype.hasOwnProperty;\n\nfunction isRetryError(err) {\n return err && err.code === 'EPROMISERETRY' && hasOwn.call(err, 'retried');\n}\n\nfunction promiseRetry(fn, options) {\n var temp;\n var operation;\n\n if (typeof fn === 'object' && typeof options === 'function') {\n // Swap options and fn when using alternate signature (options, fn)\n temp = options;\n options = fn;\n fn = temp;\n }\n\n operation = retry.operation(options);\n\n return new Promise(function (resolve, reject) {\n operation.attempt(function (number) {\n Promise.resolve()\n .then(function () {\n return fn(function (err) {\n if (isRetryError(err)) {\n err = err.retried;\n }\n\n throw errcode(new Error('Retrying'), 'EPROMISERETRY', { retried: err });\n }, number);\n })\n .then(resolve, function (err) {\n if (isRetryError(err)) {\n err = err.retried;\n\n if (operation.retry(err || new Error())) {\n return;\n }\n }\n\n reject(err);\n });\n });\n });\n}\n\nmodule.exports = promiseRetry;\n","export default (typeof global !== \"undefined\" ? global :\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window : {});\n","// shim for using process in browser\n// based off https://github.com/defunctzombie/node-process/blob/master/browser.js\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}\nvar cachedSetTimeout = defaultSetTimout;\nvar cachedClearTimeout = defaultClearTimeout;\nif (typeof global.setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n}\nif (typeof global.clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\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}\nexport function nextTick(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// 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};\nexport var title = 'browser';\nexport var platform = 'browser';\nexport var browser = true;\nexport var env = {};\nexport var argv = [];\nexport var version = ''; // empty string to avoid regexp issues\nexport var versions = {};\nexport var release = {};\nexport var config = {};\n\nfunction noop() {}\n\nexport var on = noop;\nexport var addListener = noop;\nexport var once = noop;\nexport var off = noop;\nexport var removeListener = noop;\nexport var removeAllListeners = noop;\nexport var emit = noop;\n\nexport function binding(name) {\n throw new Error('process.binding is not supported');\n}\n\nexport function cwd () { return '/' }\nexport function chdir (dir) {\n throw new Error('process.chdir is not supported');\n};\nexport function umask() { return 0; }\n\n// from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js\nvar performance = global.performance || {}\nvar performanceNow =\n performance.now ||\n performance.mozNow ||\n performance.msNow ||\n performance.oNow ||\n performance.webkitNow ||\n function(){ return (new Date()).getTime() }\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nexport function hrtime(previousTimestamp){\n var clocktime = performanceNow.call(performance)*1e-3\n var seconds = Math.floor(clocktime)\n var nanoseconds = Math.floor((clocktime%1)*1e9)\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0]\n nanoseconds = nanoseconds - previousTimestamp[1]\n if (nanoseconds<0) {\n seconds--\n nanoseconds += 1e9\n }\n }\n return [seconds,nanoseconds]\n}\n\nvar startTime = new Date();\nexport function uptime() {\n var currentTime = new Date();\n var dif = currentTime - startTime;\n return dif / 1000;\n}\n\nexport default {\n nextTick: nextTick,\n title: title,\n browser: browser,\n env: env,\n argv: argv,\n version: version,\n versions: versions,\n on: on,\n addListener: addListener,\n once: once,\n off: off,\n removeListener: removeListener,\n removeAllListeners: removeAllListeners,\n emit: emit,\n binding: binding,\n cwd: cwd,\n chdir: chdir,\n umask: umask,\n hrtime: hrtime,\n platform: platform,\n release: release,\n config: config,\n uptime: uptime\n};\n","'use strict';\n\nconst isHyper = process.env.TERM_PROGRAM === 'Hyper';\nconst isWindows = process.platform === 'win32';\nconst isLinux = process.platform === 'linux';\n\nconst common = {\n ballotDisabled: '☒',\n ballotOff: '☐',\n ballotOn: '☑',\n bullet: '•',\n bulletWhite: '◦',\n fullBlock: '█',\n heart: '❤',\n identicalTo: '≡',\n line: '─',\n mark: '※',\n middot: '·',\n minus: '-',\n multiplication: '×',\n obelus: '÷',\n pencilDownRight: '✎',\n pencilRight: '✏',\n pencilUpRight: '✐',\n percent: '%',\n pilcrow2: '❡',\n pilcrow: '¶',\n plusMinus: '±',\n section: '§',\n starsOff: '☆',\n starsOn: '★',\n upDownArrow: '↕'\n};\n\nconst windows = Object.assign({}, common, {\n check: '√',\n cross: '×',\n ellipsisLarge: '...',\n ellipsis: '...',\n info: 'i',\n question: '?',\n questionSmall: '?',\n pointer: '>',\n pointerSmall: '»',\n radioOff: '( )',\n radioOn: '(*)',\n warning: '‼'\n});\n\nconst other = Object.assign({}, common, {\n ballotCross: '✘',\n check: '✔',\n cross: '✖',\n ellipsisLarge: '⋯',\n ellipsis: '…',\n info: 'ℹ',\n question: '?',\n questionFull: '?',\n questionSmall: '﹖',\n pointer: isLinux ? '▸' : '❯',\n pointerSmall: isLinux ? '‣' : '›',\n radioOff: '◯',\n radioOn: '◉',\n warning: '⚠'\n});\n\nmodule.exports = (isWindows && !isHyper) ? windows : other;\nReflect.defineProperty(module.exports, 'common', { enumerable: false, value: common });\nReflect.defineProperty(module.exports, 'windows', { enumerable: false, value: windows });\nReflect.defineProperty(module.exports, 'other', { enumerable: false, value: other });\n","'use strict';\n\nconst isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\nconst identity = val => val;\n\n/* eslint-disable no-control-regex */\n// this is a modified version of https://github.com/chalk/ansi-regex (MIT License)\nconst ANSI_REGEX = /[\\u001b\\u009b][[\\]#;?()]*(?:(?:(?:[^\\W_]*;?[^\\W_]*)\\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g;\n\nconst create = () => {\n const colors = { enabled: true, visible: true, styles: {}, keys: {} };\n\n if ('FORCE_COLOR' in process.env) {\n colors.enabled = process.env.FORCE_COLOR !== '0';\n }\n\n const ansi = style => {\n let open = style.open = `\\u001b[${style.codes[0]}m`;\n let close = style.close = `\\u001b[${style.codes[1]}m`;\n let regex = style.regex = new RegExp(`\\\\u001b\\\\[${style.codes[1]}m`, 'g');\n style.wrap = (input, newline) => {\n if (input.includes(close)) input = input.replace(regex, close + open);\n let output = open + input + close;\n // see https://github.com/chalk/chalk/pull/92, thanks to the\n // chalk contributors for this fix. However, we've confirmed that\n // this issue is also present in Windows terminals\n return newline ? output.replace(/\\r*\\n/g, `${close}$&${open}`) : output;\n };\n return style;\n };\n\n const wrap = (style, input, newline) => {\n return typeof style === 'function' ? style(input) : style.wrap(input, newline);\n };\n\n const style = (input, stack) => {\n if (input === '' || input == null) return '';\n if (colors.enabled === false) return input;\n if (colors.visible === false) return '';\n let str = '' + input;\n let nl = str.includes('\\n');\n let n = stack.length;\n if (n > 0 && stack.includes('unstyle')) {\n stack = [...new Set(['unstyle', ...stack])].reverse();\n }\n while (n-- > 0) str = wrap(colors.styles[stack[n]], str, nl);\n return str;\n };\n\n const define = (name, codes, type) => {\n colors.styles[name] = ansi({ name, codes });\n let keys = colors.keys[type] || (colors.keys[type] = []);\n keys.push(name);\n\n Reflect.defineProperty(colors, name, {\n configurable: true,\n enumerable: true,\n set(value) {\n colors.alias(name, value);\n },\n get() {\n let color = input => style(input, color.stack);\n Reflect.setPrototypeOf(color, colors);\n color.stack = this.stack ? this.stack.concat(name) : [name];\n return color;\n }\n });\n };\n\n define('reset', [0, 0], 'modifier');\n define('bold', [1, 22], 'modifier');\n define('dim', [2, 22], 'modifier');\n define('italic', [3, 23], 'modifier');\n define('underline', [4, 24], 'modifier');\n define('inverse', [7, 27], 'modifier');\n define('hidden', [8, 28], 'modifier');\n define('strikethrough', [9, 29], 'modifier');\n\n define('black', [30, 39], 'color');\n define('red', [31, 39], 'color');\n define('green', [32, 39], 'color');\n define('yellow', [33, 39], 'color');\n define('blue', [34, 39], 'color');\n define('magenta', [35, 39], 'color');\n define('cyan', [36, 39], 'color');\n define('white', [37, 39], 'color');\n define('gray', [90, 39], 'color');\n define('grey', [90, 39], 'color');\n\n define('bgBlack', [40, 49], 'bg');\n define('bgRed', [41, 49], 'bg');\n define('bgGreen', [42, 49], 'bg');\n define('bgYellow', [43, 49], 'bg');\n define('bgBlue', [44, 49], 'bg');\n define('bgMagenta', [45, 49], 'bg');\n define('bgCyan', [46, 49], 'bg');\n define('bgWhite', [47, 49], 'bg');\n\n define('blackBright', [90, 39], 'bright');\n define('redBright', [91, 39], 'bright');\n define('greenBright', [92, 39], 'bright');\n define('yellowBright', [93, 39], 'bright');\n define('blueBright', [94, 39], 'bright');\n define('magentaBright', [95, 39], 'bright');\n define('cyanBright', [96, 39], 'bright');\n define('whiteBright', [97, 39], 'bright');\n\n define('bgBlackBright', [100, 49], 'bgBright');\n define('bgRedBright', [101, 49], 'bgBright');\n define('bgGreenBright', [102, 49], 'bgBright');\n define('bgYellowBright', [103, 49], 'bgBright');\n define('bgBlueBright', [104, 49], 'bgBright');\n define('bgMagentaBright', [105, 49], 'bgBright');\n define('bgCyanBright', [106, 49], 'bgBright');\n define('bgWhiteBright', [107, 49], 'bgBright');\n\n colors.ansiRegex = ANSI_REGEX;\n colors.hasColor = colors.hasAnsi = str => {\n colors.ansiRegex.lastIndex = 0;\n return typeof str === 'string' && str !== '' && colors.ansiRegex.test(str);\n };\n\n colors.alias = (name, color) => {\n let fn = typeof color === 'string' ? colors[color] : color;\n\n if (typeof fn !== 'function') {\n throw new TypeError('Expected alias to be the name of an existing color (string) or a function');\n }\n\n if (!fn.stack) {\n Reflect.defineProperty(fn, 'name', { value: name });\n colors.styles[name] = fn;\n fn.stack = [name];\n }\n\n Reflect.defineProperty(colors, name, {\n configurable: true,\n enumerable: true,\n set(value) {\n colors.alias(name, value);\n },\n get() {\n let color = input => style(input, color.stack);\n Reflect.setPrototypeOf(color, colors);\n color.stack = this.stack ? this.stack.concat(fn.stack) : fn.stack;\n return color;\n }\n });\n };\n\n colors.theme = custom => {\n if (!isObject(custom)) throw new TypeError('Expected theme to be an object');\n for (let name of Object.keys(custom)) {\n colors.alias(name, custom[name]);\n }\n return colors;\n };\n\n colors.alias('unstyle', str => {\n if (typeof str === 'string' && str !== '') {\n colors.ansiRegex.lastIndex = 0;\n return str.replace(colors.ansiRegex, '');\n }\n return '';\n });\n\n colors.alias('noop', str => str);\n colors.none = colors.clear = colors.noop;\n\n colors.stripColor = colors.unstyle;\n colors.symbols = require('./symbols');\n colors.define = define;\n return colors;\n};\n\nmodule.exports = create();\nmodule.exports.create = create;\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\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' && isFinite(val)) {\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|weeks?|w|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 'weeks':\n case 'week':\n case 'w':\n return n * w;\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 var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= 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 var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => enableOverride === null ? createDebug.enabled(namespace) : enableOverride,\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\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\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar bent = require('bent');\nvar promiseRetry = require('promise-retry');\nvar ansi_colors = require('ansi-colors');\nvar debug = require('debug');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar bent__default = /*#__PURE__*/_interopDefaultLegacy(bent);\nvar promiseRetry__default = /*#__PURE__*/_interopDefaultLegacy(promiseRetry);\nvar ansi_colors__default = /*#__PURE__*/_interopDefaultLegacy(ansi_colors);\nvar debug__default = /*#__PURE__*/_interopDefaultLegacy(debug);\n\nconst { unstyle } = ansi_colors__default['default'];\n\nconst log = debug__default['default']('reveal-compiler-explorer:compiler-explorer-directives');\n\n// https://github.com/highlightjs/highlight.js/blob/master/SUPPORTED_LANGUAGES.md\nconst langAliases = {\n 'cpp': 'c++', 'hpp': 'c++', 'cc': 'c++', 'hh': 'c++', 'h++': 'c++', 'cxx': 'c++', 'hxx': 'c++',\n 'ada': 'ada',\n 'x86asm': 'assembly',\n 'h': 'c',\n 'f90': 'fortran', 'f95': 'fortran',\n 'golang': 'go',\n 'hs': 'haskell',\n 'nimrod': 'nim',\n 'ml': 'ocaml',\n 'py': 'python', 'gyp': 'python',\n 'rs': 'rust'\n};\n\nconst GODBOLT_URL = 'https://godbolt.org';\nconst get = bent__default['default'](`${GODBOLT_URL}/api`, 'GET', 'json', { 'Accept': 'application/json' });\nconst post = bent__default['default'](`${GODBOLT_URL}/api`, 'POST', 'json');\n\nconst langConfig = (() => {\n let langConfig;\n return async function () {\n if (!langConfig) {\n const predefined = new Map([\n ['c++', {\n options: '-O2 -march=haswell -Wall -Wextra -pedantic -Wno-unused-variable -Wno-unused-parameter',\n mainRegex: /\\bmain\\(/\n }],\n ['d', {\n mainRegex: /\\bmain\\(/\n }]\n ]);\n log(`reading languages from ${GODBOLT_URL}`);\n const languages = await get('/languages?fields=id,defaultCompiler');\n langConfig = new Map(languages\n .map(({ id, defaultCompiler }) => [id, Object.assign({ 'compiler': defaultCompiler }, predefined.get(id))]));\n log('default language configuration is %o', langConfig);\n }\n return langConfig;\n };\n})();\n\nconst defaultConfig = {\n runMain: true,\n useLocal: false,\n localPort: 10240,\n directives: []\n};\n\nconst directive = pattern => new RegExp(`^\\\\s*\\\\/\\\\/\\\\/\\\\s*${pattern}$`);\n\nconst builtinDirectives = [\n ['compiler=(.*)', (matches, info) => matches.slice(1).forEach(match => {\n info.compiler = match;\n })],\n ['options=(.*)', (matches, info) => matches.slice(1).forEach(match => info.options = match)],\n ['options\\\\+=(.*)', (matches, info) => matches.slice(1).forEach(match => info.options += ' ' + match)],\n ['libs=(\\\\w+:\\\\w+(?:,\\\\w+:\\\\w+)*)', (matches, info) => matches.slice(1).forEach(match => {\n [...match.matchAll(/(\\w+):(\\w+)/g)].forEach(match => {\n info.libs.push({\n name: match[1],\n ver: match[2]\n });\n });\n })],\n ['(no)?execute', (matches, info) => matches.slice(1).forEach(match => info.execute = !match)],\n ['external', (matches, info) => matches.forEach(_ => info.forceExternal = true)],\n ['(un)?hide', (matches, info) => matches.slice(1).forEach(match => info.hide = !match)],\n];\n\nconst parseCode = async (code, language, config) => {\n log('parsing %o, language %s, config %o', code, language, config);\n language = langAliases[language] || language;\n const lg = await langConfig();\n if (!lg.has(language)) {\n log('language %s is not supported', language);\n return null;\n }\n\n config = Object.assign({}, defaultConfig, lg.get(language), config);\n const directives = builtinDirectives.concat(config.directives)\n .map(([regex, action]) => [directive(regex), action]);\n const lines = unescape(code).split('\\n');\n const matches = (line, regex) => line.match(regex) || [];\n\n const info = {\n source: [],\n displaySource: [],\n language: language,\n compiler: config.compiler,\n options: config.options || '',\n libs: config.libs || [],\n forceExternal: false,\n hide: false\n };\n\n for (const line of lines) {\n if (line.match(directive('.*'))) {\n directives.forEach(([regex, action]) => action(matches(line, regex), info));\n } else {\n if (config.runMain\n && config.mainRegex\n && line.match(config.mainRegex)\n && !info.hasOwnProperty('execute')) {\n info.execute = true;\n }\n info.source.push(line);\n if (!info.hide)\n info.displaySource.push(line);\n }\n }\n\n info.baseUrl = (config.useLocal && !info.forceExternal)\n ? `http://localhost:${config.localPort}`\n : GODBOLT_URL;\n info.source = info.source.join('\\n');\n info.displaySource = info.displaySource.join('\\n');\n delete info.hide;\n delete info.forceExternal;\n\n log('parse result %o', info);\n return info;\n};\n\nconst displayUrl = (info) => {\n let content = [\n {\n type: 'component',\n componentName: 'codeEditor',\n componentState: {\n id: 1,\n source: info.source,\n options: { compileOnChange: true, colouriseAsm: true },\n fontScale: 2.5\n }\n },\n {\n type: 'column',\n content: [{\n type: 'component',\n componentName: 'compiler',\n componentState: {\n source: 1,\n lang: info.language,\n compiler: info.compiler,\n options: info.options,\n libs: info.libs,\n fontScale: 3.0,\n filters: {\n commentOnly: true,\n directives: true,\n intel: true,\n labels: true,\n trim: true,\n execute: info.execute\n }\n }\n }, {\n type: 'component',\n componentName: 'output',\n componentState: {\n compiler: 1\n }\n }\n ]\n }\n ];\n let obj = {\n version: 4,\n content: [{ type: 'row', content: content }],\n settings: {\n theme: 'dark'\n }\n };\n\n let ceFragment = encodeURIComponent(JSON.stringify(obj));\n\n return `${info.baseUrl}/#${ceFragment}`;\n};\n\nclass CompileError extends Error {\n constructor(code, message) {\n super(message);\n this.name = 'CompileError';\n this.code = code;\n }\n}\n\nconst compile = async (info, retryOptions = {}) => {\n log('compiling %o', info);\n const data = {\n source: info.source,\n options: {\n userArguments: info.options || '',\n filters: {\n execute: info.execute || false\n },\n libraries: (info.libs || []).map(function (lib) {\n return {\n id: lib.name,\n version: lib.ver\n };\n })\n }\n };\n const response = await promiseRetry__default['default'](retryOptions, async (retry) => {\n try {\n return await post(`/compiler/${info.compiler}/compile`, data);\n }\n catch (err) {\n log('compile error %o', err);\n if (Math.trunc(err.statusCode / 100) === 5) {\n log('retrying');\n retry(err);\n }\n\n throw err;\n }\n });\n\n log('response is %o', response);\n\n const text = (stream) => unstyle(stream.stderr.concat(stream.stdout).map(x => x.text).join('\\n'));\n\n if (response.code === 0) {\n if (info.execute) {\n if (response.execResult.buildResult.code === 0) {\n return text(response.execResult);\n }\n\n throw new CompileError(response.execResult.buildResult.code,\n text(response.execResult.buildResult));\n }\n\n return text(response);\n }\n\n throw new CompileError(response.code, text(response));\n};\n\nexports.CompileError = CompileError;\nexports.compile = compile;\nexports.displayUrl = displayUrl;\nexports.parseCode = parseCode;\n//# sourceMappingURL=compiler-explorer-directives.cjs.map\n","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n 'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n var i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function() {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^Object.\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || (merge && dest[keys[i]] === undefined)) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.addEventListener(type, handler, false);\n });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.removeEventListener(type, handler, false);\n });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n return i;\n }\n i++;\n }\n return -1;\n }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = (prefix) ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n\n}\n\nInput.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function() { },\n\n /**\n * bind the events\n */\n init: function() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n\n /**\n * unbind the events\n */\n destroy: function() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity, velocityX, velocityY, direction;\n\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n var x = 0, y = 0, i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n\n return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n});\n\nvar POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n\n Input.apply(this, arguments);\n\n this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n\n Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n\n Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function(touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n changedTargetTouches\n ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n Input.apply(this, arguments);\n\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n\n this.primaryTouch = null;\n this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n\n this.callback(manager, inputEvent, inputData);\n },\n\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n});\n\nfunction recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n}\n\nfunction setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {x: touch.clientX, y: touch.clientY};\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function() {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n}\n\nfunction isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n}\n\nTouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function(value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n\n /**\n * just re-set the touchAction value\n */\n update: function() {\n this.set(this.manager.options.touchAction);\n },\n\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function() {\n var actions = [];\n each(this.manager.recognizers, function(recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone ||\n (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n (hasPanX && direction & DIRECTION_VERTICAL)) {\n return this.preventSrc(srcEvent);\n }\n },\n\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n\n this.id = uniqueId();\n\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n\n this.state = STATE_POSSIBLE;\n\n this.simultaneous = {};\n this.requireFail = [];\n}\n\nRecognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function(options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function() {\n return this.requireFail.length > 0;\n },\n\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function(input) {\n var self = this;\n var state = this.state;\n\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function() {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function(inputData) { }, // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function() { },\n\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function(input) {\n var state = this.state;\n var eventType = input.eventType;\n\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n\n this.pX = null;\n this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n\n getTouchAction: function() {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n\n directionTest: function(input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n\n attrTest: function(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) &&\n (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n },\n\n emit: function(input) {\n\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n\n var direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n\n emit: function(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n Recognizer.apply(this, arguments);\n\n this._timer = null;\n this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251, // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_AUTO];\n },\n\n process: function(input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && (input.eventType & INPUT_END)) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n\n getTouchAction: function() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n\n attrTest: function(input) {\n var direction = this.options.direction;\n var velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return this._super.attrTest.call(this, input) &&\n direction & input.offsetDirection &&\n input.distance > this.options.threshold &&\n input.maxPointers == this.options.pointers &&\n abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n\n emit: function(input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n\n this._timer = null;\n this._input = null;\n this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300, // max time between the multi-tap taps\n time: 250, // max time of the pointer to be down (like finger on the screen)\n threshold: 9, // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_MANIPULATION];\n },\n\n process: function(input) {\n var options = this.options;\n\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n\n this.reset();\n\n if ((input.eventType & INPUT_START) && (this.count === 0)) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n\n var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n\n failTimeout: function() {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function() {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {enable: false}],\n [PinchRecognizer, {enable: false}, ['rotate']],\n [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n [TapRecognizer],\n [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n [PressRecognizer]\n ],\n\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n\n this.options.inputTarget = this.options.inputTarget || element;\n\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n\n toggleCssProps(this, true);\n\n each(this.options.recognizers, function(item) {\n var recognizer = this.add(new (item[0])(item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n}\n\nManager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function(options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n curRecognizer = session.curRecognizer = null;\n }\n\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && ( // 1\n !curRecognizer || recognizer == curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) { // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function(recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n\n this.touchAction.update();\n return recognizer;\n },\n\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function(recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n },\n\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function(events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function(events, handler) {\n if (events === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n data.preventDefault = function() {\n data.srcEvent.preventDefault();\n };\n\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function() {\n this.element && toggleCssProps(this, false);\n\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function(value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n// style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n define(function() {\n return Hammer;\n });\n} else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n} else {\n window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","const UA = navigator.userAgent;\nconst testElement = document.createElement( 'div' );\n\nexport const isMobile = /(iphone|ipod|ipad|android)/gi.test( UA ) ||\n\t\t\t\t\t\t( navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 ); // iPadOS\n\nexport const isChrome = /chrome/i.test( UA ) && !/edge/i.test( UA );\n\nexport const isAndroid = /android/gi.test( UA );\n\n// Flags if we should use zoom instead of transform to scale\n// up slides. Zoom produces crisper results but has a lot of\n// xbrowser quirks so we only use it in whitelisted browsers.\nexport const supportsZoom = 'zoom' in testElement.style && !isMobile &&\n\t\t\t\t( isChrome || /Version\\/[\\d\\.]+.*Safari/.test( UA ) );","import { parseCode, displayUrl, compile } from 'compiler-explorer-directives';\nimport Hammer from 'hammerjs';\nimport { isMobile } from 'reveal.js/js/utils/device';\n\nasync function parseBlock(block, config) {\n const lang = block.classList.length > 0 ? block.classList[0].replace('language-', '') : config.language;\n // highlighting line numbers removes line break so we need to restore them\n const code = block.hasAttribute( 'data-line-numbers' ) && block.classList.contains('hljs')\n ? Array.from(block.querySelectorAll('tr').values()).map(v => v.textContent).join('\\n')\n : block.textContent;\n const info = await parseCode(code, lang, config);\n if (!info) {\n return;\n }\n const url = displayUrl(info);\n\n if (isMobile) {\n delete Hammer.defaults.cssProps.userSelect; // keep default behavior\n var hammer = new Hammer.Manager(block.parentNode);\n hammer.add(new Hammer.Tap({ event: 'doubletap', taps: 2 }));\n hammer.on('doubletap', e => {\n window.open(url, 'ce');\n });\n } else {\n block.parentNode.onclick = (evt) => {\n if (evt.ctrlKey || evt.metaKey) {\n window.open(url, 'ce');\n }\n };\n }\n\n block.textContent = info.displaySource;\n}\n\nexport default {\n id: 'compiler-explorer',\n init: (reveal) => {\n const highlighPlugin = reveal.getPlugin('highlight');\n const highlightConfig = reveal.getConfig().highlight || {};\n const highlightOnLoad = typeof highlightConfig.highlightOnLoad === 'boolean' ? highlightConfig.highlightOnLoad : true;\n const config = reveal.getConfig().compilerExplorer;\n\n return Promise.all([].slice.call(reveal.getRevealElement().querySelectorAll('pre code')).map(async (block) => {\n await parseBlock(block, config);\n if (highlightOnLoad) {\n highlighPlugin.highlightBlock(block);\n }\n }));\n },\n compile: compile\n};\n"],"names":["RetryOperation","require$$0","retry","errcode","global","browser","bent","promiseRetry","ansi_colors","debug","undefined","define","parseCode","displayUrl","Hammer","hammer","compile"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"reveal-compiler-explorer.cjs","sources":["../../../node_modules/bent/src/core.js","../../../node_modules/bent/src/browser.js","../../compiler-explorer-directives/node_modules/err-code/index.js","../../compiler-explorer-directives/node_modules/retry/lib/retry_operation.js","../../compiler-explorer-directives/node_modules/retry/lib/retry.js","../../compiler-explorer-directives/node_modules/retry/index.js","../../compiler-explorer-directives/node_modules/promise-retry/index.js","../../../node_modules/rollup-plugin-node-globals/src/global.js","../../../node_modules/process-es6/browser.js","../../../node_modules/ansi-colors/symbols.js","../../../node_modules/ansi-colors/index.js","../../../node_modules/ms/index.js","../../compiler-explorer-directives/node_modules/debug/src/common.js","../../compiler-explorer-directives/node_modules/debug/src/browser.js","../../compiler-explorer-directives/dist/compiler-explorer-directives.cjs","../../../node_modules/hammerjs/hammer.js","../../../node_modules/reveal.js/js/utils/device.js","../src/reveal-compiler-explorer.js"],"sourcesContent":["'use strict'\nconst encodings = new Set(['json', 'buffer', 'string'])\n\nmodule.exports = mkrequest => (...args) => {\n const statusCodes = new Set()\n let method\n let encoding\n let headers\n let baseurl = ''\n\n args.forEach(arg => {\n if (typeof arg === 'string') {\n if (arg.toUpperCase() === arg) {\n if (method) {\n const msg = `Can't set method to ${arg}, already set to ${method}.`\n throw new Error(msg)\n } else {\n method = arg\n }\n } else if (arg.startsWith('http:') || arg.startsWith('https:')) {\n baseurl = arg\n } else {\n if (encodings.has(arg)) {\n encoding = arg\n } else {\n throw new Error(`Unknown encoding, ${arg}`)\n }\n }\n } else if (typeof arg === 'number') {\n statusCodes.add(arg)\n } else if (typeof arg === 'object') {\n if (Array.isArray(arg) || arg instanceof Set) {\n arg.forEach(code => statusCodes.add(code))\n } else {\n if (headers) {\n throw new Error('Cannot set headers twice.')\n }\n headers = arg\n }\n } else {\n throw new Error(`Unknown type: ${typeof arg}`)\n }\n })\n\n if (!method) method = 'GET'\n if (statusCodes.size === 0) {\n statusCodes.add(200)\n }\n\n return mkrequest(statusCodes, method, encoding, headers, baseurl)\n}\n","'use strict'\n/* global fetch, btoa, Headers */\nconst core = require('./core')\n\nclass StatusError extends Error {\n constructor (res, ...params) {\n super(...params)\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, StatusError)\n }\n\n this.name = 'StatusError'\n this.message = res.statusMessage\n this.statusCode = res.status\n this.res = res\n this.json = res.json.bind(res)\n this.text = res.text.bind(res)\n this.arrayBuffer = res.arrayBuffer.bind(res)\n let buffer\n const get = () => {\n if (!buffer) buffer = this.arrayBuffer()\n return buffer\n }\n Object.defineProperty(this, 'responseBody', { get })\n // match Node.js headers object\n this.headers = {}\n for (const [key, value] of res.headers.entries()) {\n this.headers[key.toLowerCase()] = value\n }\n }\n}\n\nconst mkrequest = (statusCodes, method, encoding, headers, baseurl) => async (_url, body, _headers = {}) => {\n _url = baseurl + (_url || '')\n let parsed = new URL(_url)\n\n if (!headers) headers = {}\n if (parsed.username) {\n headers.Authorization = 'Basic ' + btoa(parsed.username + ':' + parsed.password)\n parsed = new URL(parsed.protocol + '//' + parsed.host + parsed.pathname + parsed.search)\n }\n if (parsed.protocol !== 'https:' && parsed.protocol !== 'http:') {\n throw new Error(`Unknown protocol, ${parsed.protocol}`)\n }\n\n if (body) {\n if (body instanceof ArrayBuffer ||\n ArrayBuffer.isView(body) ||\n typeof body === 'string'\n ) {\n // noop\n } else if (typeof body === 'object') {\n body = JSON.stringify(body)\n headers['Content-Type'] = 'application/json'\n } else {\n throw new Error('Unknown body type.')\n }\n }\n\n _headers = new Headers({ ...(headers || {}), ..._headers })\n\n const resp = await fetch(parsed, { method, headers: _headers, body })\n resp.statusCode = resp.status\n\n if (!statusCodes.has(resp.status)) {\n throw new StatusError(resp)\n }\n\n if (encoding === 'json') return resp.json()\n else if (encoding === 'buffer') return resp.arrayBuffer()\n else if (encoding === 'string') return resp.text()\n else return resp\n}\n\nmodule.exports = core(mkrequest)\n","'use strict';\n\nfunction assign(obj, props) {\n for (const key in props) {\n Object.defineProperty(obj, key, {\n value: props[key],\n enumerable: true,\n configurable: true,\n });\n }\n\n return obj;\n}\n\nfunction createError(err, code, props) {\n if (!err || typeof err === 'string') {\n throw new TypeError('Please pass an Error to err-code');\n }\n\n if (!props) {\n props = {};\n }\n\n if (typeof code === 'object') {\n props = code;\n code = undefined;\n }\n\n if (code != null) {\n props.code = code;\n }\n\n try {\n return assign(err, props);\n } catch (_) {\n props.message = err.message;\n props.stack = err.stack;\n\n const ErrClass = function () {};\n\n ErrClass.prototype = Object.create(Object.getPrototypeOf(err));\n\n return assign(new ErrClass(), props);\n }\n}\n\nmodule.exports = createError;\n","function RetryOperation(timeouts, options) {\n // Compatibility for the old (timeouts, retryForever) signature\n if (typeof options === 'boolean') {\n options = { forever: options };\n }\n\n this._originalTimeouts = JSON.parse(JSON.stringify(timeouts));\n this._timeouts = timeouts;\n this._options = options || {};\n this._maxRetryTime = options && options.maxRetryTime || Infinity;\n this._fn = null;\n this._errors = [];\n this._attempts = 1;\n this._operationTimeout = null;\n this._operationTimeoutCb = null;\n this._timeout = null;\n this._operationStart = null;\n\n if (this._options.forever) {\n this._cachedTimeouts = this._timeouts.slice(0);\n }\n}\nmodule.exports = RetryOperation;\n\nRetryOperation.prototype.reset = function() {\n this._attempts = 1;\n this._timeouts = this._originalTimeouts;\n}\n\nRetryOperation.prototype.stop = function() {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n\n this._timeouts = [];\n this._cachedTimeouts = null;\n};\n\nRetryOperation.prototype.retry = function(err) {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n\n if (!err) {\n return false;\n }\n var currentTime = new Date().getTime();\n if (err && currentTime - this._operationStart >= this._maxRetryTime) {\n this._errors.unshift(new Error('RetryOperation timeout occurred'));\n return false;\n }\n\n this._errors.push(err);\n\n var timeout = this._timeouts.shift();\n if (timeout === undefined) {\n if (this._cachedTimeouts) {\n // retry forever, only keep last error\n this._errors.splice(this._errors.length - 1, this._errors.length);\n this._timeouts = this._cachedTimeouts.slice(0);\n timeout = this._timeouts.shift();\n } else {\n return false;\n }\n }\n\n var self = this;\n var timer = setTimeout(function() {\n self._attempts++;\n\n if (self._operationTimeoutCb) {\n self._timeout = setTimeout(function() {\n self._operationTimeoutCb(self._attempts);\n }, self._operationTimeout);\n\n if (self._options.unref) {\n self._timeout.unref();\n }\n }\n\n self._fn(self._attempts);\n }, timeout);\n\n if (this._options.unref) {\n timer.unref();\n }\n\n return true;\n};\n\nRetryOperation.prototype.attempt = function(fn, timeoutOps) {\n this._fn = fn;\n\n if (timeoutOps) {\n if (timeoutOps.timeout) {\n this._operationTimeout = timeoutOps.timeout;\n }\n if (timeoutOps.cb) {\n this._operationTimeoutCb = timeoutOps.cb;\n }\n }\n\n var self = this;\n if (this._operationTimeoutCb) {\n this._timeout = setTimeout(function() {\n self._operationTimeoutCb();\n }, self._operationTimeout);\n }\n\n this._operationStart = new Date().getTime();\n\n this._fn(this._attempts);\n};\n\nRetryOperation.prototype.try = function(fn) {\n console.log('Using RetryOperation.try() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = function(fn) {\n console.log('Using RetryOperation.start() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = RetryOperation.prototype.try;\n\nRetryOperation.prototype.errors = function() {\n return this._errors;\n};\n\nRetryOperation.prototype.attempts = function() {\n return this._attempts;\n};\n\nRetryOperation.prototype.mainError = function() {\n if (this._errors.length === 0) {\n return null;\n }\n\n var counts = {};\n var mainError = null;\n var mainErrorCount = 0;\n\n for (var i = 0; i < this._errors.length; i++) {\n var error = this._errors[i];\n var message = error.message;\n var count = (counts[message] || 0) + 1;\n\n counts[message] = count;\n\n if (count >= mainErrorCount) {\n mainError = error;\n mainErrorCount = count;\n }\n }\n\n return mainError;\n};\n","var RetryOperation = require('./retry_operation');\n\nexports.operation = function(options) {\n var timeouts = exports.timeouts(options);\n return new RetryOperation(timeouts, {\n forever: options && options.forever,\n unref: options && options.unref,\n maxRetryTime: options && options.maxRetryTime\n });\n};\n\nexports.timeouts = function(options) {\n if (options instanceof Array) {\n return [].concat(options);\n }\n\n var opts = {\n retries: 10,\n factor: 2,\n minTimeout: 1 * 1000,\n maxTimeout: Infinity,\n randomize: false\n };\n for (var key in options) {\n opts[key] = options[key];\n }\n\n if (opts.minTimeout > opts.maxTimeout) {\n throw new Error('minTimeout is greater than maxTimeout');\n }\n\n var timeouts = [];\n for (var i = 0; i < opts.retries; i++) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n if (options && options.forever && !timeouts.length) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n // sort the array numerically ascending\n timeouts.sort(function(a,b) {\n return a - b;\n });\n\n return timeouts;\n};\n\nexports.createTimeout = function(attempt, opts) {\n var random = (opts.randomize)\n ? (Math.random() + 1)\n : 1;\n\n var timeout = Math.round(random * opts.minTimeout * Math.pow(opts.factor, attempt));\n timeout = Math.min(timeout, opts.maxTimeout);\n\n return timeout;\n};\n\nexports.wrap = function(obj, options, methods) {\n if (options instanceof Array) {\n methods = options;\n options = null;\n }\n\n if (!methods) {\n methods = [];\n for (var key in obj) {\n if (typeof obj[key] === 'function') {\n methods.push(key);\n }\n }\n }\n\n for (var i = 0; i < methods.length; i++) {\n var method = methods[i];\n var original = obj[method];\n\n obj[method] = function retryWrapper(original) {\n var op = exports.operation(options);\n var args = Array.prototype.slice.call(arguments, 1);\n var callback = args.pop();\n\n args.push(function(err) {\n if (op.retry(err)) {\n return;\n }\n if (err) {\n arguments[0] = op.mainError();\n }\n callback.apply(this, arguments);\n });\n\n op.attempt(function() {\n original.apply(obj, args);\n });\n }.bind(obj, original);\n obj[method].options = options;\n }\n};\n","module.exports = require('./lib/retry');","'use strict';\n\nvar errcode = require('err-code');\nvar retry = require('retry');\n\nvar hasOwn = Object.prototype.hasOwnProperty;\n\nfunction isRetryError(err) {\n return err && err.code === 'EPROMISERETRY' && hasOwn.call(err, 'retried');\n}\n\nfunction promiseRetry(fn, options) {\n var temp;\n var operation;\n\n if (typeof fn === 'object' && typeof options === 'function') {\n // Swap options and fn when using alternate signature (options, fn)\n temp = options;\n options = fn;\n fn = temp;\n }\n\n operation = retry.operation(options);\n\n return new Promise(function (resolve, reject) {\n operation.attempt(function (number) {\n Promise.resolve()\n .then(function () {\n return fn(function (err) {\n if (isRetryError(err)) {\n err = err.retried;\n }\n\n throw errcode(new Error('Retrying'), 'EPROMISERETRY', { retried: err });\n }, number);\n })\n .then(resolve, function (err) {\n if (isRetryError(err)) {\n err = err.retried;\n\n if (operation.retry(err || new Error())) {\n return;\n }\n }\n\n reject(err);\n });\n });\n });\n}\n\nmodule.exports = promiseRetry;\n","export default (typeof global !== \"undefined\" ? global :\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window : {});\n","// shim for using process in browser\n// based off https://github.com/defunctzombie/node-process/blob/master/browser.js\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}\nvar cachedSetTimeout = defaultSetTimout;\nvar cachedClearTimeout = defaultClearTimeout;\nif (typeof global.setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n}\nif (typeof global.clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\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}\nexport function nextTick(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// 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};\nexport var title = 'browser';\nexport var platform = 'browser';\nexport var browser = true;\nexport var env = {};\nexport var argv = [];\nexport var version = ''; // empty string to avoid regexp issues\nexport var versions = {};\nexport var release = {};\nexport var config = {};\n\nfunction noop() {}\n\nexport var on = noop;\nexport var addListener = noop;\nexport var once = noop;\nexport var off = noop;\nexport var removeListener = noop;\nexport var removeAllListeners = noop;\nexport var emit = noop;\n\nexport function binding(name) {\n throw new Error('process.binding is not supported');\n}\n\nexport function cwd () { return '/' }\nexport function chdir (dir) {\n throw new Error('process.chdir is not supported');\n};\nexport function umask() { return 0; }\n\n// from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js\nvar performance = global.performance || {}\nvar performanceNow =\n performance.now ||\n performance.mozNow ||\n performance.msNow ||\n performance.oNow ||\n performance.webkitNow ||\n function(){ return (new Date()).getTime() }\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nexport function hrtime(previousTimestamp){\n var clocktime = performanceNow.call(performance)*1e-3\n var seconds = Math.floor(clocktime)\n var nanoseconds = Math.floor((clocktime%1)*1e9)\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0]\n nanoseconds = nanoseconds - previousTimestamp[1]\n if (nanoseconds<0) {\n seconds--\n nanoseconds += 1e9\n }\n }\n return [seconds,nanoseconds]\n}\n\nvar startTime = new Date();\nexport function uptime() {\n var currentTime = new Date();\n var dif = currentTime - startTime;\n return dif / 1000;\n}\n\nexport default {\n nextTick: nextTick,\n title: title,\n browser: browser,\n env: env,\n argv: argv,\n version: version,\n versions: versions,\n on: on,\n addListener: addListener,\n once: once,\n off: off,\n removeListener: removeListener,\n removeAllListeners: removeAllListeners,\n emit: emit,\n binding: binding,\n cwd: cwd,\n chdir: chdir,\n umask: umask,\n hrtime: hrtime,\n platform: platform,\n release: release,\n config: config,\n uptime: uptime\n};\n","'use strict';\n\nconst isHyper = process.env.TERM_PROGRAM === 'Hyper';\nconst isWindows = process.platform === 'win32';\nconst isLinux = process.platform === 'linux';\n\nconst common = {\n ballotDisabled: '☒',\n ballotOff: '☐',\n ballotOn: '☑',\n bullet: '•',\n bulletWhite: '◦',\n fullBlock: '█',\n heart: '❤',\n identicalTo: '≡',\n line: '─',\n mark: '※',\n middot: '·',\n minus: '-',\n multiplication: '×',\n obelus: '÷',\n pencilDownRight: '✎',\n pencilRight: '✏',\n pencilUpRight: '✐',\n percent: '%',\n pilcrow2: '❡',\n pilcrow: '¶',\n plusMinus: '±',\n section: '§',\n starsOff: '☆',\n starsOn: '★',\n upDownArrow: '↕'\n};\n\nconst windows = Object.assign({}, common, {\n check: '√',\n cross: '×',\n ellipsisLarge: '...',\n ellipsis: '...',\n info: 'i',\n question: '?',\n questionSmall: '?',\n pointer: '>',\n pointerSmall: '»',\n radioOff: '( )',\n radioOn: '(*)',\n warning: '‼'\n});\n\nconst other = Object.assign({}, common, {\n ballotCross: '✘',\n check: '✔',\n cross: '✖',\n ellipsisLarge: '⋯',\n ellipsis: '…',\n info: 'ℹ',\n question: '?',\n questionFull: '?',\n questionSmall: '﹖',\n pointer: isLinux ? '▸' : '❯',\n pointerSmall: isLinux ? '‣' : '›',\n radioOff: '◯',\n radioOn: '◉',\n warning: '⚠'\n});\n\nmodule.exports = (isWindows && !isHyper) ? windows : other;\nReflect.defineProperty(module.exports, 'common', { enumerable: false, value: common });\nReflect.defineProperty(module.exports, 'windows', { enumerable: false, value: windows });\nReflect.defineProperty(module.exports, 'other', { enumerable: false, value: other });\n","'use strict';\n\nconst isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\nconst identity = val => val;\n\n/* eslint-disable no-control-regex */\n// this is a modified version of https://github.com/chalk/ansi-regex (MIT License)\nconst ANSI_REGEX = /[\\u001b\\u009b][[\\]#;?()]*(?:(?:(?:[^\\W_]*;?[^\\W_]*)\\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g;\n\nconst create = () => {\n const colors = { enabled: true, visible: true, styles: {}, keys: {} };\n\n if ('FORCE_COLOR' in process.env) {\n colors.enabled = process.env.FORCE_COLOR !== '0';\n }\n\n const ansi = style => {\n let open = style.open = `\\u001b[${style.codes[0]}m`;\n let close = style.close = `\\u001b[${style.codes[1]}m`;\n let regex = style.regex = new RegExp(`\\\\u001b\\\\[${style.codes[1]}m`, 'g');\n style.wrap = (input, newline) => {\n if (input.includes(close)) input = input.replace(regex, close + open);\n let output = open + input + close;\n // see https://github.com/chalk/chalk/pull/92, thanks to the\n // chalk contributors for this fix. However, we've confirmed that\n // this issue is also present in Windows terminals\n return newline ? output.replace(/\\r*\\n/g, `${close}$&${open}`) : output;\n };\n return style;\n };\n\n const wrap = (style, input, newline) => {\n return typeof style === 'function' ? style(input) : style.wrap(input, newline);\n };\n\n const style = (input, stack) => {\n if (input === '' || input == null) return '';\n if (colors.enabled === false) return input;\n if (colors.visible === false) return '';\n let str = '' + input;\n let nl = str.includes('\\n');\n let n = stack.length;\n if (n > 0 && stack.includes('unstyle')) {\n stack = [...new Set(['unstyle', ...stack])].reverse();\n }\n while (n-- > 0) str = wrap(colors.styles[stack[n]], str, nl);\n return str;\n };\n\n const define = (name, codes, type) => {\n colors.styles[name] = ansi({ name, codes });\n let keys = colors.keys[type] || (colors.keys[type] = []);\n keys.push(name);\n\n Reflect.defineProperty(colors, name, {\n configurable: true,\n enumerable: true,\n set(value) {\n colors.alias(name, value);\n },\n get() {\n let color = input => style(input, color.stack);\n Reflect.setPrototypeOf(color, colors);\n color.stack = this.stack ? this.stack.concat(name) : [name];\n return color;\n }\n });\n };\n\n define('reset', [0, 0], 'modifier');\n define('bold', [1, 22], 'modifier');\n define('dim', [2, 22], 'modifier');\n define('italic', [3, 23], 'modifier');\n define('underline', [4, 24], 'modifier');\n define('inverse', [7, 27], 'modifier');\n define('hidden', [8, 28], 'modifier');\n define('strikethrough', [9, 29], 'modifier');\n\n define('black', [30, 39], 'color');\n define('red', [31, 39], 'color');\n define('green', [32, 39], 'color');\n define('yellow', [33, 39], 'color');\n define('blue', [34, 39], 'color');\n define('magenta', [35, 39], 'color');\n define('cyan', [36, 39], 'color');\n define('white', [37, 39], 'color');\n define('gray', [90, 39], 'color');\n define('grey', [90, 39], 'color');\n\n define('bgBlack', [40, 49], 'bg');\n define('bgRed', [41, 49], 'bg');\n define('bgGreen', [42, 49], 'bg');\n define('bgYellow', [43, 49], 'bg');\n define('bgBlue', [44, 49], 'bg');\n define('bgMagenta', [45, 49], 'bg');\n define('bgCyan', [46, 49], 'bg');\n define('bgWhite', [47, 49], 'bg');\n\n define('blackBright', [90, 39], 'bright');\n define('redBright', [91, 39], 'bright');\n define('greenBright', [92, 39], 'bright');\n define('yellowBright', [93, 39], 'bright');\n define('blueBright', [94, 39], 'bright');\n define('magentaBright', [95, 39], 'bright');\n define('cyanBright', [96, 39], 'bright');\n define('whiteBright', [97, 39], 'bright');\n\n define('bgBlackBright', [100, 49], 'bgBright');\n define('bgRedBright', [101, 49], 'bgBright');\n define('bgGreenBright', [102, 49], 'bgBright');\n define('bgYellowBright', [103, 49], 'bgBright');\n define('bgBlueBright', [104, 49], 'bgBright');\n define('bgMagentaBright', [105, 49], 'bgBright');\n define('bgCyanBright', [106, 49], 'bgBright');\n define('bgWhiteBright', [107, 49], 'bgBright');\n\n colors.ansiRegex = ANSI_REGEX;\n colors.hasColor = colors.hasAnsi = str => {\n colors.ansiRegex.lastIndex = 0;\n return typeof str === 'string' && str !== '' && colors.ansiRegex.test(str);\n };\n\n colors.alias = (name, color) => {\n let fn = typeof color === 'string' ? colors[color] : color;\n\n if (typeof fn !== 'function') {\n throw new TypeError('Expected alias to be the name of an existing color (string) or a function');\n }\n\n if (!fn.stack) {\n Reflect.defineProperty(fn, 'name', { value: name });\n colors.styles[name] = fn;\n fn.stack = [name];\n }\n\n Reflect.defineProperty(colors, name, {\n configurable: true,\n enumerable: true,\n set(value) {\n colors.alias(name, value);\n },\n get() {\n let color = input => style(input, color.stack);\n Reflect.setPrototypeOf(color, colors);\n color.stack = this.stack ? this.stack.concat(fn.stack) : fn.stack;\n return color;\n }\n });\n };\n\n colors.theme = custom => {\n if (!isObject(custom)) throw new TypeError('Expected theme to be an object');\n for (let name of Object.keys(custom)) {\n colors.alias(name, custom[name]);\n }\n return colors;\n };\n\n colors.alias('unstyle', str => {\n if (typeof str === 'string' && str !== '') {\n colors.ansiRegex.lastIndex = 0;\n return str.replace(colors.ansiRegex, '');\n }\n return '';\n });\n\n colors.alias('noop', str => str);\n colors.none = colors.clear = colors.noop;\n\n colors.stripColor = colors.unstyle;\n colors.symbols = require('./symbols');\n colors.define = define;\n return colors;\n};\n\nmodule.exports = create();\nmodule.exports.create = create;\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\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' && isFinite(val)) {\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|weeks?|w|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 'weeks':\n case 'week':\n case 'w':\n return n * w;\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 var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= 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 var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => enableOverride === null ? createDebug.enabled(namespace) : enableOverride,\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\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\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar bent = require('bent');\nvar promiseRetry = require('promise-retry');\nvar ansi_colors = require('ansi-colors');\nvar debug = require('debug');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar bent__default = /*#__PURE__*/_interopDefaultLegacy(bent);\nvar promiseRetry__default = /*#__PURE__*/_interopDefaultLegacy(promiseRetry);\nvar ansi_colors__default = /*#__PURE__*/_interopDefaultLegacy(ansi_colors);\nvar debug__default = /*#__PURE__*/_interopDefaultLegacy(debug);\n\nconst { unstyle } = ansi_colors__default['default'];\n\nconst log = debug__default['default']('reveal-compiler-explorer:compiler-explorer-directives');\n\n// https://github.com/highlightjs/highlight.js/blob/master/SUPPORTED_LANGUAGES.md\nconst langAliases = {\n 'cpp': 'c++', 'hpp': 'c++', 'cc': 'c++', 'hh': 'c++', 'h++': 'c++', 'cxx': 'c++', 'hxx': 'c++',\n 'ada': 'ada',\n 'x86asm': 'assembly',\n 'h': 'c',\n 'f90': 'fortran', 'f95': 'fortran',\n 'golang': 'go',\n 'hs': 'haskell',\n 'nimrod': 'nim',\n 'ml': 'ocaml',\n 'py': 'python', 'gyp': 'python',\n 'rs': 'rust'\n};\n\nconst GODBOLT_URL = 'https://godbolt.org';\nconst get = bent__default['default'](`${GODBOLT_URL}/api`, 'GET', 'json', { 'Accept': 'application/json' });\nconst post = bent__default['default'](`${GODBOLT_URL}/api`, 'POST', 'json');\n\nconst langConfig = (() => {\n let langConfig;\n return async function () {\n if (!langConfig) {\n const predefined = new Map([\n ['c++', {\n options: '-O2 -march=haswell -Wall -Wextra -pedantic -Wno-unused-variable -Wno-unused-parameter',\n mainRegex: /\\bmain\\(/\n }],\n ['c', {\n options: '-O2 -march=haswell -Wall -Wextra -pedantic -Wno-unused-variable -Wno-unused-parameter',\n mainRegex: /\\bmain\\(/\n }],\n ['d', {\n mainRegex: /\\bmain\\(/\n }]\n ]);\n log(`reading languages from ${GODBOLT_URL}`);\n const languages = await get('/languages?fields=id,defaultCompiler');\n langConfig = new Map(languages\n .map(({ id, defaultCompiler }) => [id, Object.assign({ 'compiler': defaultCompiler }, predefined.get(id))]));\n log('default language configuration is %o', langConfig);\n }\n return langConfig;\n };\n})();\n\nconst defaultConfig = {\n runMain: true,\n useLocal: false,\n localPort: 10240,\n directives: []\n};\n\nconst directive = pattern => new RegExp(`^\\\\s*\\\\/\\\\/\\\\/\\\\s*${pattern}$`);\n\nconst builtinDirectives = [\n ['compiler=(.*)', (matches, info) => matches.slice(1).forEach(match => {\n info.compiler = match;\n })],\n ['options=(.*)', (matches, info) => matches.slice(1).forEach(match => info.options = match)],\n ['options\\\\+=(.*)', (matches, info) => matches.slice(1).forEach(match => info.options += ' ' + match)],\n ['libs=(\\\\w+:\\\\w+(?:,\\\\w+:\\\\w+)*)', (matches, info) => matches.slice(1).forEach(match => {\n [...match.matchAll(/(\\w+):(\\w+)/g)].forEach(match => {\n info.libs.push({\n name: match[1],\n ver: match[2]\n });\n });\n })],\n ['(no)?execute', (matches, info) => matches.slice(1).forEach(match => info.execute = !match)],\n ['external', (matches, info) => matches.forEach(_ => info.forceExternal = true)],\n ['(un)?hide', (matches, info) => matches.slice(1).forEach(match => info.hide = !match)],\n];\n\nconst parseCode = async (code, language, config) => {\n log('parsing %o, language %s, config %o', code, language, config);\n language = langAliases[language] || language;\n const lg = await langConfig();\n if (!lg.has(language)) {\n log('language %s is not supported', language);\n return null;\n }\n\n config = Object.assign({}, defaultConfig, lg.get(language), config);\n const directives = builtinDirectives.concat(config.directives)\n .map(([regex, action]) => [directive(regex), action]);\n const lines = unescape(code).split('\\n');\n const matches = (line, regex) => line.match(regex) || [];\n\n const info = {\n source: [],\n displaySource: [],\n language: language,\n compiler: config.compiler,\n options: config.options || '',\n libs: config.libs || [],\n forceExternal: false,\n hide: false\n };\n\n for (const line of lines) {\n if (line.match(directive('.*'))) {\n directives.forEach(([regex, action]) => action(matches(line, regex), info));\n } else {\n if (config.runMain\n && config.mainRegex\n && line.match(config.mainRegex)\n && !info.hasOwnProperty('execute')) {\n info.execute = true;\n }\n info.source.push(line);\n if (!info.hide)\n info.displaySource.push(line);\n }\n }\n\n info.baseUrl = (config.useLocal && !info.forceExternal)\n ? `http://localhost:${config.localPort}`\n : GODBOLT_URL;\n info.source = info.source.join('\\n');\n info.displaySource = info.displaySource.join('\\n');\n delete info.hide;\n delete info.forceExternal;\n\n log('parse result %o', info);\n return info;\n};\n\nconst displayUrl = (info) => {\n let content = [\n {\n type: 'component',\n componentName: 'codeEditor',\n componentState: {\n id: 1,\n source: info.source,\n options: { compileOnChange: true, colouriseAsm: true },\n fontScale: 2.5\n }\n },\n {\n type: 'column',\n content: [{\n type: 'component',\n componentName: 'compiler',\n componentState: {\n source: 1,\n lang: info.language,\n compiler: info.compiler,\n options: info.options,\n libs: info.libs,\n fontScale: 3.0,\n filters: {\n commentOnly: true,\n directives: true,\n intel: true,\n labels: true,\n trim: true,\n execute: info.execute\n }\n }\n }, {\n type: 'component',\n componentName: 'output',\n componentState: {\n compiler: 1\n }\n }\n ]\n }\n ];\n let obj = {\n version: 4,\n content: [{ type: 'row', content: content }],\n settings: {\n theme: 'dark'\n }\n };\n\n let ceFragment = encodeURIComponent(JSON.stringify(obj));\n\n return `${info.baseUrl}/#${ceFragment}`;\n};\n\nclass CompileError extends Error {\n constructor(code, message) {\n super(message);\n this.name = 'CompileError';\n this.code = code;\n }\n}\n\nconst compile = async (info, retryOptions = {}) => {\n log('compiling %o', info);\n const data = {\n source: info.source,\n options: {\n userArguments: info.options || '',\n filters: {\n execute: info.execute || false\n },\n libraries: (info.libs || []).map(function (lib) {\n return {\n id: lib.name,\n version: lib.ver\n };\n })\n }\n };\n const response = await promiseRetry__default['default'](retryOptions, async (retry) => {\n try {\n return await post(`/compiler/${info.compiler}/compile`, data);\n }\n catch (err) {\n log('compile error %o', err);\n if (Math.trunc(err.statusCode / 100) === 5) {\n log('retrying');\n retry(err);\n }\n\n throw err;\n }\n });\n\n log('response is %o', response);\n\n const text = (stream) => unstyle(stream.stderr.concat(stream.stdout).map(x => x.text).join('\\n'));\n\n if (response.code === 0) {\n if (info.execute) {\n if (response.execResult.buildResult.code === 0) {\n return text(response.execResult);\n }\n\n throw new CompileError(response.execResult.buildResult.code,\n text(response.execResult.buildResult));\n }\n\n return text(response);\n }\n\n throw new CompileError(response.code, text(response));\n};\n\nexports.CompileError = CompileError;\nexports.compile = compile;\nexports.displayUrl = displayUrl;\nexports.parseCode = parseCode;\n//# sourceMappingURL=compiler-explorer-directives.cjs.map\n","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n 'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n var i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function() {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^Object.\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || (merge && dest[keys[i]] === undefined)) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.addEventListener(type, handler, false);\n });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.removeEventListener(type, handler, false);\n });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n return i;\n }\n i++;\n }\n return -1;\n }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = (prefix) ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n\n}\n\nInput.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function() { },\n\n /**\n * bind the events\n */\n init: function() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n\n /**\n * unbind the events\n */\n destroy: function() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity, velocityX, velocityY, direction;\n\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n var x = 0, y = 0, i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n\n return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n});\n\nvar POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n\n Input.apply(this, arguments);\n\n this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n\n Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n\n Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function(touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n changedTargetTouches\n ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n Input.apply(this, arguments);\n\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n\n this.primaryTouch = null;\n this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n\n this.callback(manager, inputEvent, inputData);\n },\n\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n});\n\nfunction recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n}\n\nfunction setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {x: touch.clientX, y: touch.clientY};\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function() {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n}\n\nfunction isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n}\n\nTouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function(value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n\n /**\n * just re-set the touchAction value\n */\n update: function() {\n this.set(this.manager.options.touchAction);\n },\n\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function() {\n var actions = [];\n each(this.manager.recognizers, function(recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone ||\n (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n (hasPanX && direction & DIRECTION_VERTICAL)) {\n return this.preventSrc(srcEvent);\n }\n },\n\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n\n this.id = uniqueId();\n\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n\n this.state = STATE_POSSIBLE;\n\n this.simultaneous = {};\n this.requireFail = [];\n}\n\nRecognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function(options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function() {\n return this.requireFail.length > 0;\n },\n\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function(input) {\n var self = this;\n var state = this.state;\n\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function() {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function(inputData) { }, // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function() { },\n\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function(input) {\n var state = this.state;\n var eventType = input.eventType;\n\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n\n this.pX = null;\n this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n\n getTouchAction: function() {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n\n directionTest: function(input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n\n attrTest: function(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) &&\n (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n },\n\n emit: function(input) {\n\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n\n var direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n\n emit: function(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n Recognizer.apply(this, arguments);\n\n this._timer = null;\n this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251, // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_AUTO];\n },\n\n process: function(input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && (input.eventType & INPUT_END)) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n\n getTouchAction: function() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n\n attrTest: function(input) {\n var direction = this.options.direction;\n var velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return this._super.attrTest.call(this, input) &&\n direction & input.offsetDirection &&\n input.distance > this.options.threshold &&\n input.maxPointers == this.options.pointers &&\n abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n\n emit: function(input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n\n this._timer = null;\n this._input = null;\n this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300, // max time between the multi-tap taps\n time: 250, // max time of the pointer to be down (like finger on the screen)\n threshold: 9, // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_MANIPULATION];\n },\n\n process: function(input) {\n var options = this.options;\n\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n\n this.reset();\n\n if ((input.eventType & INPUT_START) && (this.count === 0)) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n\n var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n\n failTimeout: function() {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function() {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {enable: false}],\n [PinchRecognizer, {enable: false}, ['rotate']],\n [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n [TapRecognizer],\n [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n [PressRecognizer]\n ],\n\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n\n this.options.inputTarget = this.options.inputTarget || element;\n\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n\n toggleCssProps(this, true);\n\n each(this.options.recognizers, function(item) {\n var recognizer = this.add(new (item[0])(item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n}\n\nManager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function(options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n curRecognizer = session.curRecognizer = null;\n }\n\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && ( // 1\n !curRecognizer || recognizer == curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) { // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function(recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n\n this.touchAction.update();\n return recognizer;\n },\n\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function(recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n },\n\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function(events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function(events, handler) {\n if (events === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n data.preventDefault = function() {\n data.srcEvent.preventDefault();\n };\n\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function() {\n this.element && toggleCssProps(this, false);\n\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function(value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n// style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n define(function() {\n return Hammer;\n });\n} else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n} else {\n window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","const UA = navigator.userAgent;\nconst testElement = document.createElement( 'div' );\n\nexport const isMobile = /(iphone|ipod|ipad|android)/gi.test( UA ) ||\n\t\t\t\t\t\t( navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 ); // iPadOS\n\nexport const isChrome = /chrome/i.test( UA ) && !/edge/i.test( UA );\n\nexport const isAndroid = /android/gi.test( UA );\n\n// Flags if we should use zoom instead of transform to scale\n// up slides. Zoom produces crisper results but has a lot of\n// xbrowser quirks so we only use it in whitelisted browsers.\nexport const supportsZoom = 'zoom' in testElement.style && !isMobile &&\n\t\t\t\t( isChrome || /Version\\/[\\d\\.]+.*Safari/.test( UA ) );","import { parseCode, displayUrl, compile } from 'compiler-explorer-directives';\nimport Hammer from 'hammerjs';\nimport { isMobile } from 'reveal.js/js/utils/device';\n\nasync function parseBlock(block, config) {\n const lang = block.classList.length > 0 ? block.classList[0].replace('language-', '') : config.language;\n // highlighting line numbers removes line break so we need to restore them\n const code = block.hasAttribute( 'data-line-numbers' ) && block.classList.contains('hljs')\n ? Array.from(block.querySelectorAll('tr').values()).map(v => v.textContent).join('\\n')\n : block.textContent;\n const info = await parseCode(code, lang, config);\n if (!info) {\n return;\n }\n const url = displayUrl(info);\n\n if (isMobile) {\n delete Hammer.defaults.cssProps.userSelect; // keep default behavior\n var hammer = new Hammer.Manager(block.parentNode);\n hammer.add(new Hammer.Tap({ event: 'doubletap', taps: 2 }));\n hammer.on('doubletap', e => {\n window.open(url, 'ce');\n });\n } else {\n block.parentNode.onclick = (evt) => {\n if (evt.ctrlKey || evt.metaKey) {\n window.open(url, 'ce');\n }\n };\n }\n\n block.textContent = info.displaySource;\n}\n\nexport default {\n id: 'compiler-explorer',\n init: (reveal) => {\n const highlighPlugin = reveal.getPlugin('highlight');\n const highlightConfig = reveal.getConfig().highlight || {};\n const highlightOnLoad = typeof highlightConfig.highlightOnLoad === 'boolean' ? highlightConfig.highlightOnLoad : true;\n const config = reveal.getConfig().compilerExplorer;\n\n return Promise.all([].slice.call(reveal.getRevealElement().querySelectorAll('pre code')).map(async (block) => {\n await parseBlock(block, config);\n if (highlightOnLoad) {\n highlighPlugin.highlightBlock(block);\n }\n }));\n },\n compile: compile\n};\n"],"names":["RetryOperation","require$$0","retry","errcode","global","browser","bent","promiseRetry","ansi_colors","debug","undefined","define","parseCode","displayUrl","Hammer","hammer","compile"],"mappings":"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"} \ No newline at end of file diff --git a/packages/reveal-compiler-explorer/dist/reveal-compiler-explorer.js b/packages/reveal-compiler-explorer/dist/reveal-compiler-explorer.js index d7c0ccb..3eae04f 100644 --- a/packages/reveal-compiler-explorer/dist/reveal-compiler-explorer.js +++ b/packages/reveal-compiler-explorer/dist/reveal-compiler-explorer.js @@ -1710,6 +1710,10 @@ var RevealCompilerExplorer = (function () { options: '-O2 -march=haswell -Wall -Wextra -pedantic -Wno-unused-variable -Wno-unused-parameter', mainRegex: /\bmain\(/ }], + ['c', { + options: '-O2 -march=haswell -Wall -Wextra -pedantic -Wno-unused-variable -Wno-unused-parameter', + mainRegex: /\bmain\(/ + }], ['d', { mainRegex: /\bmain\(/ }] diff --git a/packages/reveal-compiler-explorer/dist/reveal-compiler-explorer.js.map b/packages/reveal-compiler-explorer/dist/reveal-compiler-explorer.js.map index f9eab96..0629619 100644 --- a/packages/reveal-compiler-explorer/dist/reveal-compiler-explorer.js.map +++ b/packages/reveal-compiler-explorer/dist/reveal-compiler-explorer.js.map @@ -1 +1 @@ -{"version":3,"file":"reveal-compiler-explorer.js","sources":["../../../node_modules/bent/src/core.js","../../../node_modules/bent/src/browser.js","../../compiler-explorer-directives/node_modules/err-code/index.js","../../compiler-explorer-directives/node_modules/retry/lib/retry_operation.js","../../compiler-explorer-directives/node_modules/retry/lib/retry.js","../../compiler-explorer-directives/node_modules/retry/index.js","../../compiler-explorer-directives/node_modules/promise-retry/index.js","../../../node_modules/rollup-plugin-node-globals/src/global.js","../../../node_modules/process-es6/browser.js","../../../node_modules/ansi-colors/symbols.js","../../../node_modules/ansi-colors/index.js","../../../node_modules/ms/index.js","../../compiler-explorer-directives/node_modules/debug/src/common.js","../../compiler-explorer-directives/node_modules/debug/src/browser.js","../../compiler-explorer-directives/dist/compiler-explorer-directives.cjs","../../../node_modules/hammerjs/hammer.js","../../../node_modules/reveal.js/js/utils/device.js","../src/reveal-compiler-explorer.js"],"sourcesContent":["'use strict'\nconst encodings = new Set(['json', 'buffer', 'string'])\n\nmodule.exports = mkrequest => (...args) => {\n const statusCodes = new Set()\n let method\n let encoding\n let headers\n let baseurl = ''\n\n args.forEach(arg => {\n if (typeof arg === 'string') {\n if (arg.toUpperCase() === arg) {\n if (method) {\n const msg = `Can't set method to ${arg}, already set to ${method}.`\n throw new Error(msg)\n } else {\n method = arg\n }\n } else if (arg.startsWith('http:') || arg.startsWith('https:')) {\n baseurl = arg\n } else {\n if (encodings.has(arg)) {\n encoding = arg\n } else {\n throw new Error(`Unknown encoding, ${arg}`)\n }\n }\n } else if (typeof arg === 'number') {\n statusCodes.add(arg)\n } else if (typeof arg === 'object') {\n if (Array.isArray(arg) || arg instanceof Set) {\n arg.forEach(code => statusCodes.add(code))\n } else {\n if (headers) {\n throw new Error('Cannot set headers twice.')\n }\n headers = arg\n }\n } else {\n throw new Error(`Unknown type: ${typeof arg}`)\n }\n })\n\n if (!method) method = 'GET'\n if (statusCodes.size === 0) {\n statusCodes.add(200)\n }\n\n return mkrequest(statusCodes, method, encoding, headers, baseurl)\n}\n","'use strict'\n/* global fetch, btoa, Headers */\nconst core = require('./core')\n\nclass StatusError extends Error {\n constructor (res, ...params) {\n super(...params)\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, StatusError)\n }\n\n this.name = 'StatusError'\n this.message = res.statusMessage\n this.statusCode = res.status\n this.res = res\n this.json = res.json.bind(res)\n this.text = res.text.bind(res)\n this.arrayBuffer = res.arrayBuffer.bind(res)\n let buffer\n const get = () => {\n if (!buffer) buffer = this.arrayBuffer()\n return buffer\n }\n Object.defineProperty(this, 'responseBody', { get })\n // match Node.js headers object\n this.headers = {}\n for (const [key, value] of res.headers.entries()) {\n this.headers[key.toLowerCase()] = value\n }\n }\n}\n\nconst mkrequest = (statusCodes, method, encoding, headers, baseurl) => async (_url, body, _headers = {}) => {\n _url = baseurl + (_url || '')\n let parsed = new URL(_url)\n\n if (!headers) headers = {}\n if (parsed.username) {\n headers.Authorization = 'Basic ' + btoa(parsed.username + ':' + parsed.password)\n parsed = new URL(parsed.protocol + '//' + parsed.host + parsed.pathname + parsed.search)\n }\n if (parsed.protocol !== 'https:' && parsed.protocol !== 'http:') {\n throw new Error(`Unknown protocol, ${parsed.protocol}`)\n }\n\n if (body) {\n if (body instanceof ArrayBuffer ||\n ArrayBuffer.isView(body) ||\n typeof body === 'string'\n ) {\n // noop\n } else if (typeof body === 'object') {\n body = JSON.stringify(body)\n headers['Content-Type'] = 'application/json'\n } else {\n throw new Error('Unknown body type.')\n }\n }\n\n _headers = new Headers({ ...(headers || {}), ..._headers })\n\n const resp = await fetch(parsed, { method, headers: _headers, body })\n resp.statusCode = resp.status\n\n if (!statusCodes.has(resp.status)) {\n throw new StatusError(resp)\n }\n\n if (encoding === 'json') return resp.json()\n else if (encoding === 'buffer') return resp.arrayBuffer()\n else if (encoding === 'string') return resp.text()\n else return resp\n}\n\nmodule.exports = core(mkrequest)\n","'use strict';\n\nfunction assign(obj, props) {\n for (const key in props) {\n Object.defineProperty(obj, key, {\n value: props[key],\n enumerable: true,\n configurable: true,\n });\n }\n\n return obj;\n}\n\nfunction createError(err, code, props) {\n if (!err || typeof err === 'string') {\n throw new TypeError('Please pass an Error to err-code');\n }\n\n if (!props) {\n props = {};\n }\n\n if (typeof code === 'object') {\n props = code;\n code = undefined;\n }\n\n if (code != null) {\n props.code = code;\n }\n\n try {\n return assign(err, props);\n } catch (_) {\n props.message = err.message;\n props.stack = err.stack;\n\n const ErrClass = function () {};\n\n ErrClass.prototype = Object.create(Object.getPrototypeOf(err));\n\n return assign(new ErrClass(), props);\n }\n}\n\nmodule.exports = createError;\n","function RetryOperation(timeouts, options) {\n // Compatibility for the old (timeouts, retryForever) signature\n if (typeof options === 'boolean') {\n options = { forever: options };\n }\n\n this._originalTimeouts = JSON.parse(JSON.stringify(timeouts));\n this._timeouts = timeouts;\n this._options = options || {};\n this._maxRetryTime = options && options.maxRetryTime || Infinity;\n this._fn = null;\n this._errors = [];\n this._attempts = 1;\n this._operationTimeout = null;\n this._operationTimeoutCb = null;\n this._timeout = null;\n this._operationStart = null;\n\n if (this._options.forever) {\n this._cachedTimeouts = this._timeouts.slice(0);\n }\n}\nmodule.exports = RetryOperation;\n\nRetryOperation.prototype.reset = function() {\n this._attempts = 1;\n this._timeouts = this._originalTimeouts;\n}\n\nRetryOperation.prototype.stop = function() {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n\n this._timeouts = [];\n this._cachedTimeouts = null;\n};\n\nRetryOperation.prototype.retry = function(err) {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n\n if (!err) {\n return false;\n }\n var currentTime = new Date().getTime();\n if (err && currentTime - this._operationStart >= this._maxRetryTime) {\n this._errors.unshift(new Error('RetryOperation timeout occurred'));\n return false;\n }\n\n this._errors.push(err);\n\n var timeout = this._timeouts.shift();\n if (timeout === undefined) {\n if (this._cachedTimeouts) {\n // retry forever, only keep last error\n this._errors.splice(this._errors.length - 1, this._errors.length);\n this._timeouts = this._cachedTimeouts.slice(0);\n timeout = this._timeouts.shift();\n } else {\n return false;\n }\n }\n\n var self = this;\n var timer = setTimeout(function() {\n self._attempts++;\n\n if (self._operationTimeoutCb) {\n self._timeout = setTimeout(function() {\n self._operationTimeoutCb(self._attempts);\n }, self._operationTimeout);\n\n if (self._options.unref) {\n self._timeout.unref();\n }\n }\n\n self._fn(self._attempts);\n }, timeout);\n\n if (this._options.unref) {\n timer.unref();\n }\n\n return true;\n};\n\nRetryOperation.prototype.attempt = function(fn, timeoutOps) {\n this._fn = fn;\n\n if (timeoutOps) {\n if (timeoutOps.timeout) {\n this._operationTimeout = timeoutOps.timeout;\n }\n if (timeoutOps.cb) {\n this._operationTimeoutCb = timeoutOps.cb;\n }\n }\n\n var self = this;\n if (this._operationTimeoutCb) {\n this._timeout = setTimeout(function() {\n self._operationTimeoutCb();\n }, self._operationTimeout);\n }\n\n this._operationStart = new Date().getTime();\n\n this._fn(this._attempts);\n};\n\nRetryOperation.prototype.try = function(fn) {\n console.log('Using RetryOperation.try() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = function(fn) {\n console.log('Using RetryOperation.start() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = RetryOperation.prototype.try;\n\nRetryOperation.prototype.errors = function() {\n return this._errors;\n};\n\nRetryOperation.prototype.attempts = function() {\n return this._attempts;\n};\n\nRetryOperation.prototype.mainError = function() {\n if (this._errors.length === 0) {\n return null;\n }\n\n var counts = {};\n var mainError = null;\n var mainErrorCount = 0;\n\n for (var i = 0; i < this._errors.length; i++) {\n var error = this._errors[i];\n var message = error.message;\n var count = (counts[message] || 0) + 1;\n\n counts[message] = count;\n\n if (count >= mainErrorCount) {\n mainError = error;\n mainErrorCount = count;\n }\n }\n\n return mainError;\n};\n","var RetryOperation = require('./retry_operation');\n\nexports.operation = function(options) {\n var timeouts = exports.timeouts(options);\n return new RetryOperation(timeouts, {\n forever: options && options.forever,\n unref: options && options.unref,\n maxRetryTime: options && options.maxRetryTime\n });\n};\n\nexports.timeouts = function(options) {\n if (options instanceof Array) {\n return [].concat(options);\n }\n\n var opts = {\n retries: 10,\n factor: 2,\n minTimeout: 1 * 1000,\n maxTimeout: Infinity,\n randomize: false\n };\n for (var key in options) {\n opts[key] = options[key];\n }\n\n if (opts.minTimeout > opts.maxTimeout) {\n throw new Error('minTimeout is greater than maxTimeout');\n }\n\n var timeouts = [];\n for (var i = 0; i < opts.retries; i++) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n if (options && options.forever && !timeouts.length) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n // sort the array numerically ascending\n timeouts.sort(function(a,b) {\n return a - b;\n });\n\n return timeouts;\n};\n\nexports.createTimeout = function(attempt, opts) {\n var random = (opts.randomize)\n ? (Math.random() + 1)\n : 1;\n\n var timeout = Math.round(random * opts.minTimeout * Math.pow(opts.factor, attempt));\n timeout = Math.min(timeout, opts.maxTimeout);\n\n return timeout;\n};\n\nexports.wrap = function(obj, options, methods) {\n if (options instanceof Array) {\n methods = options;\n options = null;\n }\n\n if (!methods) {\n methods = [];\n for (var key in obj) {\n if (typeof obj[key] === 'function') {\n methods.push(key);\n }\n }\n }\n\n for (var i = 0; i < methods.length; i++) {\n var method = methods[i];\n var original = obj[method];\n\n obj[method] = function retryWrapper(original) {\n var op = exports.operation(options);\n var args = Array.prototype.slice.call(arguments, 1);\n var callback = args.pop();\n\n args.push(function(err) {\n if (op.retry(err)) {\n return;\n }\n if (err) {\n arguments[0] = op.mainError();\n }\n callback.apply(this, arguments);\n });\n\n op.attempt(function() {\n original.apply(obj, args);\n });\n }.bind(obj, original);\n obj[method].options = options;\n }\n};\n","module.exports = require('./lib/retry');","'use strict';\n\nvar errcode = require('err-code');\nvar retry = require('retry');\n\nvar hasOwn = Object.prototype.hasOwnProperty;\n\nfunction isRetryError(err) {\n return err && err.code === 'EPROMISERETRY' && hasOwn.call(err, 'retried');\n}\n\nfunction promiseRetry(fn, options) {\n var temp;\n var operation;\n\n if (typeof fn === 'object' && typeof options === 'function') {\n // Swap options and fn when using alternate signature (options, fn)\n temp = options;\n options = fn;\n fn = temp;\n }\n\n operation = retry.operation(options);\n\n return new Promise(function (resolve, reject) {\n operation.attempt(function (number) {\n Promise.resolve()\n .then(function () {\n return fn(function (err) {\n if (isRetryError(err)) {\n err = err.retried;\n }\n\n throw errcode(new Error('Retrying'), 'EPROMISERETRY', { retried: err });\n }, number);\n })\n .then(resolve, function (err) {\n if (isRetryError(err)) {\n err = err.retried;\n\n if (operation.retry(err || new Error())) {\n return;\n }\n }\n\n reject(err);\n });\n });\n });\n}\n\nmodule.exports = promiseRetry;\n","export default (typeof global !== \"undefined\" ? global :\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window : {});\n","// shim for using process in browser\n// based off https://github.com/defunctzombie/node-process/blob/master/browser.js\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}\nvar cachedSetTimeout = defaultSetTimout;\nvar cachedClearTimeout = defaultClearTimeout;\nif (typeof global.setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n}\nif (typeof global.clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\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}\nexport function nextTick(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// 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};\nexport var title = 'browser';\nexport var platform = 'browser';\nexport var browser = true;\nexport var env = {};\nexport var argv = [];\nexport var version = ''; // empty string to avoid regexp issues\nexport var versions = {};\nexport var release = {};\nexport var config = {};\n\nfunction noop() {}\n\nexport var on = noop;\nexport var addListener = noop;\nexport var once = noop;\nexport var off = noop;\nexport var removeListener = noop;\nexport var removeAllListeners = noop;\nexport var emit = noop;\n\nexport function binding(name) {\n throw new Error('process.binding is not supported');\n}\n\nexport function cwd () { return '/' }\nexport function chdir (dir) {\n throw new Error('process.chdir is not supported');\n};\nexport function umask() { return 0; }\n\n// from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js\nvar performance = global.performance || {}\nvar performanceNow =\n performance.now ||\n performance.mozNow ||\n performance.msNow ||\n performance.oNow ||\n performance.webkitNow ||\n function(){ return (new Date()).getTime() }\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nexport function hrtime(previousTimestamp){\n var clocktime = performanceNow.call(performance)*1e-3\n var seconds = Math.floor(clocktime)\n var nanoseconds = Math.floor((clocktime%1)*1e9)\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0]\n nanoseconds = nanoseconds - previousTimestamp[1]\n if (nanoseconds<0) {\n seconds--\n nanoseconds += 1e9\n }\n }\n return [seconds,nanoseconds]\n}\n\nvar startTime = new Date();\nexport function uptime() {\n var currentTime = new Date();\n var dif = currentTime - startTime;\n return dif / 1000;\n}\n\nexport default {\n nextTick: nextTick,\n title: title,\n browser: browser,\n env: env,\n argv: argv,\n version: version,\n versions: versions,\n on: on,\n addListener: addListener,\n once: once,\n off: off,\n removeListener: removeListener,\n removeAllListeners: removeAllListeners,\n emit: emit,\n binding: binding,\n cwd: cwd,\n chdir: chdir,\n umask: umask,\n hrtime: hrtime,\n platform: platform,\n release: release,\n config: config,\n uptime: uptime\n};\n","'use strict';\n\nconst isHyper = process.env.TERM_PROGRAM === 'Hyper';\nconst isWindows = process.platform === 'win32';\nconst isLinux = process.platform === 'linux';\n\nconst common = {\n ballotDisabled: '☒',\n ballotOff: '☐',\n ballotOn: '☑',\n bullet: '•',\n bulletWhite: '◦',\n fullBlock: '█',\n heart: '❤',\n identicalTo: '≡',\n line: '─',\n mark: '※',\n middot: '·',\n minus: '-',\n multiplication: '×',\n obelus: '÷',\n pencilDownRight: '✎',\n pencilRight: '✏',\n pencilUpRight: '✐',\n percent: '%',\n pilcrow2: '❡',\n pilcrow: '¶',\n plusMinus: '±',\n section: '§',\n starsOff: '☆',\n starsOn: '★',\n upDownArrow: '↕'\n};\n\nconst windows = Object.assign({}, common, {\n check: '√',\n cross: '×',\n ellipsisLarge: '...',\n ellipsis: '...',\n info: 'i',\n question: '?',\n questionSmall: '?',\n pointer: '>',\n pointerSmall: '»',\n radioOff: '( )',\n radioOn: '(*)',\n warning: '‼'\n});\n\nconst other = Object.assign({}, common, {\n ballotCross: '✘',\n check: '✔',\n cross: '✖',\n ellipsisLarge: '⋯',\n ellipsis: '…',\n info: 'ℹ',\n question: '?',\n questionFull: '?',\n questionSmall: '﹖',\n pointer: isLinux ? '▸' : '❯',\n pointerSmall: isLinux ? '‣' : '›',\n radioOff: '◯',\n radioOn: '◉',\n warning: '⚠'\n});\n\nmodule.exports = (isWindows && !isHyper) ? windows : other;\nReflect.defineProperty(module.exports, 'common', { enumerable: false, value: common });\nReflect.defineProperty(module.exports, 'windows', { enumerable: false, value: windows });\nReflect.defineProperty(module.exports, 'other', { enumerable: false, value: other });\n","'use strict';\n\nconst isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\nconst identity = val => val;\n\n/* eslint-disable no-control-regex */\n// this is a modified version of https://github.com/chalk/ansi-regex (MIT License)\nconst ANSI_REGEX = /[\\u001b\\u009b][[\\]#;?()]*(?:(?:(?:[^\\W_]*;?[^\\W_]*)\\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g;\n\nconst create = () => {\n const colors = { enabled: true, visible: true, styles: {}, keys: {} };\n\n if ('FORCE_COLOR' in process.env) {\n colors.enabled = process.env.FORCE_COLOR !== '0';\n }\n\n const ansi = style => {\n let open = style.open = `\\u001b[${style.codes[0]}m`;\n let close = style.close = `\\u001b[${style.codes[1]}m`;\n let regex = style.regex = new RegExp(`\\\\u001b\\\\[${style.codes[1]}m`, 'g');\n style.wrap = (input, newline) => {\n if (input.includes(close)) input = input.replace(regex, close + open);\n let output = open + input + close;\n // see https://github.com/chalk/chalk/pull/92, thanks to the\n // chalk contributors for this fix. However, we've confirmed that\n // this issue is also present in Windows terminals\n return newline ? output.replace(/\\r*\\n/g, `${close}$&${open}`) : output;\n };\n return style;\n };\n\n const wrap = (style, input, newline) => {\n return typeof style === 'function' ? style(input) : style.wrap(input, newline);\n };\n\n const style = (input, stack) => {\n if (input === '' || input == null) return '';\n if (colors.enabled === false) return input;\n if (colors.visible === false) return '';\n let str = '' + input;\n let nl = str.includes('\\n');\n let n = stack.length;\n if (n > 0 && stack.includes('unstyle')) {\n stack = [...new Set(['unstyle', ...stack])].reverse();\n }\n while (n-- > 0) str = wrap(colors.styles[stack[n]], str, nl);\n return str;\n };\n\n const define = (name, codes, type) => {\n colors.styles[name] = ansi({ name, codes });\n let keys = colors.keys[type] || (colors.keys[type] = []);\n keys.push(name);\n\n Reflect.defineProperty(colors, name, {\n configurable: true,\n enumerable: true,\n set(value) {\n colors.alias(name, value);\n },\n get() {\n let color = input => style(input, color.stack);\n Reflect.setPrototypeOf(color, colors);\n color.stack = this.stack ? this.stack.concat(name) : [name];\n return color;\n }\n });\n };\n\n define('reset', [0, 0], 'modifier');\n define('bold', [1, 22], 'modifier');\n define('dim', [2, 22], 'modifier');\n define('italic', [3, 23], 'modifier');\n define('underline', [4, 24], 'modifier');\n define('inverse', [7, 27], 'modifier');\n define('hidden', [8, 28], 'modifier');\n define('strikethrough', [9, 29], 'modifier');\n\n define('black', [30, 39], 'color');\n define('red', [31, 39], 'color');\n define('green', [32, 39], 'color');\n define('yellow', [33, 39], 'color');\n define('blue', [34, 39], 'color');\n define('magenta', [35, 39], 'color');\n define('cyan', [36, 39], 'color');\n define('white', [37, 39], 'color');\n define('gray', [90, 39], 'color');\n define('grey', [90, 39], 'color');\n\n define('bgBlack', [40, 49], 'bg');\n define('bgRed', [41, 49], 'bg');\n define('bgGreen', [42, 49], 'bg');\n define('bgYellow', [43, 49], 'bg');\n define('bgBlue', [44, 49], 'bg');\n define('bgMagenta', [45, 49], 'bg');\n define('bgCyan', [46, 49], 'bg');\n define('bgWhite', [47, 49], 'bg');\n\n define('blackBright', [90, 39], 'bright');\n define('redBright', [91, 39], 'bright');\n define('greenBright', [92, 39], 'bright');\n define('yellowBright', [93, 39], 'bright');\n define('blueBright', [94, 39], 'bright');\n define('magentaBright', [95, 39], 'bright');\n define('cyanBright', [96, 39], 'bright');\n define('whiteBright', [97, 39], 'bright');\n\n define('bgBlackBright', [100, 49], 'bgBright');\n define('bgRedBright', [101, 49], 'bgBright');\n define('bgGreenBright', [102, 49], 'bgBright');\n define('bgYellowBright', [103, 49], 'bgBright');\n define('bgBlueBright', [104, 49], 'bgBright');\n define('bgMagentaBright', [105, 49], 'bgBright');\n define('bgCyanBright', [106, 49], 'bgBright');\n define('bgWhiteBright', [107, 49], 'bgBright');\n\n colors.ansiRegex = ANSI_REGEX;\n colors.hasColor = colors.hasAnsi = str => {\n colors.ansiRegex.lastIndex = 0;\n return typeof str === 'string' && str !== '' && colors.ansiRegex.test(str);\n };\n\n colors.alias = (name, color) => {\n let fn = typeof color === 'string' ? colors[color] : color;\n\n if (typeof fn !== 'function') {\n throw new TypeError('Expected alias to be the name of an existing color (string) or a function');\n }\n\n if (!fn.stack) {\n Reflect.defineProperty(fn, 'name', { value: name });\n colors.styles[name] = fn;\n fn.stack = [name];\n }\n\n Reflect.defineProperty(colors, name, {\n configurable: true,\n enumerable: true,\n set(value) {\n colors.alias(name, value);\n },\n get() {\n let color = input => style(input, color.stack);\n Reflect.setPrototypeOf(color, colors);\n color.stack = this.stack ? this.stack.concat(fn.stack) : fn.stack;\n return color;\n }\n });\n };\n\n colors.theme = custom => {\n if (!isObject(custom)) throw new TypeError('Expected theme to be an object');\n for (let name of Object.keys(custom)) {\n colors.alias(name, custom[name]);\n }\n return colors;\n };\n\n colors.alias('unstyle', str => {\n if (typeof str === 'string' && str !== '') {\n colors.ansiRegex.lastIndex = 0;\n return str.replace(colors.ansiRegex, '');\n }\n return '';\n });\n\n colors.alias('noop', str => str);\n colors.none = colors.clear = colors.noop;\n\n colors.stripColor = colors.unstyle;\n colors.symbols = require('./symbols');\n colors.define = define;\n return colors;\n};\n\nmodule.exports = create();\nmodule.exports.create = create;\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\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' && isFinite(val)) {\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|weeks?|w|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 'weeks':\n case 'week':\n case 'w':\n return n * w;\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 var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= 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 var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => enableOverride === null ? createDebug.enabled(namespace) : enableOverride,\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\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\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar bent = require('bent');\nvar promiseRetry = require('promise-retry');\nvar ansi_colors = require('ansi-colors');\nvar debug = require('debug');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar bent__default = /*#__PURE__*/_interopDefaultLegacy(bent);\nvar promiseRetry__default = /*#__PURE__*/_interopDefaultLegacy(promiseRetry);\nvar ansi_colors__default = /*#__PURE__*/_interopDefaultLegacy(ansi_colors);\nvar debug__default = /*#__PURE__*/_interopDefaultLegacy(debug);\n\nconst { unstyle } = ansi_colors__default['default'];\n\nconst log = debug__default['default']('reveal-compiler-explorer:compiler-explorer-directives');\n\n// https://github.com/highlightjs/highlight.js/blob/master/SUPPORTED_LANGUAGES.md\nconst langAliases = {\n 'cpp': 'c++', 'hpp': 'c++', 'cc': 'c++', 'hh': 'c++', 'h++': 'c++', 'cxx': 'c++', 'hxx': 'c++',\n 'ada': 'ada',\n 'x86asm': 'assembly',\n 'h': 'c',\n 'f90': 'fortran', 'f95': 'fortran',\n 'golang': 'go',\n 'hs': 'haskell',\n 'nimrod': 'nim',\n 'ml': 'ocaml',\n 'py': 'python', 'gyp': 'python',\n 'rs': 'rust'\n};\n\nconst GODBOLT_URL = 'https://godbolt.org';\nconst get = bent__default['default'](`${GODBOLT_URL}/api`, 'GET', 'json', { 'Accept': 'application/json' });\nconst post = bent__default['default'](`${GODBOLT_URL}/api`, 'POST', 'json');\n\nconst langConfig = (() => {\n let langConfig;\n return async function () {\n if (!langConfig) {\n const predefined = new Map([\n ['c++', {\n options: '-O2 -march=haswell -Wall -Wextra -pedantic -Wno-unused-variable -Wno-unused-parameter',\n mainRegex: /\\bmain\\(/\n }],\n ['d', {\n mainRegex: /\\bmain\\(/\n }]\n ]);\n log(`reading languages from ${GODBOLT_URL}`);\n const languages = await get('/languages?fields=id,defaultCompiler');\n langConfig = new Map(languages\n .map(({ id, defaultCompiler }) => [id, Object.assign({ 'compiler': defaultCompiler }, predefined.get(id))]));\n log('default language configuration is %o', langConfig);\n }\n return langConfig;\n };\n})();\n\nconst defaultConfig = {\n runMain: true,\n useLocal: false,\n localPort: 10240,\n directives: []\n};\n\nconst directive = pattern => new RegExp(`^\\\\s*\\\\/\\\\/\\\\/\\\\s*${pattern}$`);\n\nconst builtinDirectives = [\n ['compiler=(.*)', (matches, info) => matches.slice(1).forEach(match => {\n info.compiler = match;\n })],\n ['options=(.*)', (matches, info) => matches.slice(1).forEach(match => info.options = match)],\n ['options\\\\+=(.*)', (matches, info) => matches.slice(1).forEach(match => info.options += ' ' + match)],\n ['libs=(\\\\w+:\\\\w+(?:,\\\\w+:\\\\w+)*)', (matches, info) => matches.slice(1).forEach(match => {\n [...match.matchAll(/(\\w+):(\\w+)/g)].forEach(match => {\n info.libs.push({\n name: match[1],\n ver: match[2]\n });\n });\n })],\n ['(no)?execute', (matches, info) => matches.slice(1).forEach(match => info.execute = !match)],\n ['external', (matches, info) => matches.forEach(_ => info.forceExternal = true)],\n ['(un)?hide', (matches, info) => matches.slice(1).forEach(match => info.hide = !match)],\n];\n\nconst parseCode = async (code, language, config) => {\n log('parsing %o, language %s, config %o', code, language, config);\n language = langAliases[language] || language;\n const lg = await langConfig();\n if (!lg.has(language)) {\n log('language %s is not supported', language);\n return null;\n }\n\n config = Object.assign({}, defaultConfig, lg.get(language), config);\n const directives = builtinDirectives.concat(config.directives)\n .map(([regex, action]) => [directive(regex), action]);\n const lines = unescape(code).split('\\n');\n const matches = (line, regex) => line.match(regex) || [];\n\n const info = {\n source: [],\n displaySource: [],\n language: language,\n compiler: config.compiler,\n options: config.options || '',\n libs: config.libs || [],\n forceExternal: false,\n hide: false\n };\n\n for (const line of lines) {\n if (line.match(directive('.*'))) {\n directives.forEach(([regex, action]) => action(matches(line, regex), info));\n } else {\n if (config.runMain\n && config.mainRegex\n && line.match(config.mainRegex)\n && !info.hasOwnProperty('execute')) {\n info.execute = true;\n }\n info.source.push(line);\n if (!info.hide)\n info.displaySource.push(line);\n }\n }\n\n info.baseUrl = (config.useLocal && !info.forceExternal)\n ? `http://localhost:${config.localPort}`\n : GODBOLT_URL;\n info.source = info.source.join('\\n');\n info.displaySource = info.displaySource.join('\\n');\n delete info.hide;\n delete info.forceExternal;\n\n log('parse result %o', info);\n return info;\n};\n\nconst displayUrl = (info) => {\n let content = [\n {\n type: 'component',\n componentName: 'codeEditor',\n componentState: {\n id: 1,\n source: info.source,\n options: { compileOnChange: true, colouriseAsm: true },\n fontScale: 2.5\n }\n },\n {\n type: 'column',\n content: [{\n type: 'component',\n componentName: 'compiler',\n componentState: {\n source: 1,\n lang: info.language,\n compiler: info.compiler,\n options: info.options,\n libs: info.libs,\n fontScale: 3.0,\n filters: {\n commentOnly: true,\n directives: true,\n intel: true,\n labels: true,\n trim: true,\n execute: info.execute\n }\n }\n }, {\n type: 'component',\n componentName: 'output',\n componentState: {\n compiler: 1\n }\n }\n ]\n }\n ];\n let obj = {\n version: 4,\n content: [{ type: 'row', content: content }],\n settings: {\n theme: 'dark'\n }\n };\n\n let ceFragment = encodeURIComponent(JSON.stringify(obj));\n\n return `${info.baseUrl}/#${ceFragment}`;\n};\n\nclass CompileError extends Error {\n constructor(code, message) {\n super(message);\n this.name = 'CompileError';\n this.code = code;\n }\n}\n\nconst compile = async (info, retryOptions = {}) => {\n log('compiling %o', info);\n const data = {\n source: info.source,\n options: {\n userArguments: info.options || '',\n filters: {\n execute: info.execute || false\n },\n libraries: (info.libs || []).map(function (lib) {\n return {\n id: lib.name,\n version: lib.ver\n };\n })\n }\n };\n const response = await promiseRetry__default['default'](retryOptions, async (retry) => {\n try {\n return await post(`/compiler/${info.compiler}/compile`, data);\n }\n catch (err) {\n log('compile error %o', err);\n if (Math.trunc(err.statusCode / 100) === 5) {\n log('retrying');\n retry(err);\n }\n\n throw err;\n }\n });\n\n log('response is %o', response);\n\n const text = (stream) => unstyle(stream.stderr.concat(stream.stdout).map(x => x.text).join('\\n'));\n\n if (response.code === 0) {\n if (info.execute) {\n if (response.execResult.buildResult.code === 0) {\n return text(response.execResult);\n }\n\n throw new CompileError(response.execResult.buildResult.code,\n text(response.execResult.buildResult));\n }\n\n return text(response);\n }\n\n throw new CompileError(response.code, text(response));\n};\n\nexports.CompileError = CompileError;\nexports.compile = compile;\nexports.displayUrl = displayUrl;\nexports.parseCode = parseCode;\n//# sourceMappingURL=compiler-explorer-directives.cjs.map\n","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n 'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n var i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function() {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^Object.\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || (merge && dest[keys[i]] === undefined)) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.addEventListener(type, handler, false);\n });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.removeEventListener(type, handler, false);\n });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n return i;\n }\n i++;\n }\n return -1;\n }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = (prefix) ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n\n}\n\nInput.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function() { },\n\n /**\n * bind the events\n */\n init: function() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n\n /**\n * unbind the events\n */\n destroy: function() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity, velocityX, velocityY, direction;\n\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n var x = 0, y = 0, i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n\n return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n});\n\nvar POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n\n Input.apply(this, arguments);\n\n this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n\n Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n\n Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function(touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n changedTargetTouches\n ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n Input.apply(this, arguments);\n\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n\n this.primaryTouch = null;\n this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n\n this.callback(manager, inputEvent, inputData);\n },\n\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n});\n\nfunction recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n}\n\nfunction setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {x: touch.clientX, y: touch.clientY};\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function() {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n}\n\nfunction isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n}\n\nTouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function(value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n\n /**\n * just re-set the touchAction value\n */\n update: function() {\n this.set(this.manager.options.touchAction);\n },\n\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function() {\n var actions = [];\n each(this.manager.recognizers, function(recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone ||\n (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n (hasPanX && direction & DIRECTION_VERTICAL)) {\n return this.preventSrc(srcEvent);\n }\n },\n\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n\n this.id = uniqueId();\n\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n\n this.state = STATE_POSSIBLE;\n\n this.simultaneous = {};\n this.requireFail = [];\n}\n\nRecognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function(options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function() {\n return this.requireFail.length > 0;\n },\n\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function(input) {\n var self = this;\n var state = this.state;\n\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function() {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function(inputData) { }, // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function() { },\n\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function(input) {\n var state = this.state;\n var eventType = input.eventType;\n\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n\n this.pX = null;\n this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n\n getTouchAction: function() {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n\n directionTest: function(input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n\n attrTest: function(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) &&\n (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n },\n\n emit: function(input) {\n\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n\n var direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n\n emit: function(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n Recognizer.apply(this, arguments);\n\n this._timer = null;\n this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251, // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_AUTO];\n },\n\n process: function(input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && (input.eventType & INPUT_END)) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n\n getTouchAction: function() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n\n attrTest: function(input) {\n var direction = this.options.direction;\n var velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return this._super.attrTest.call(this, input) &&\n direction & input.offsetDirection &&\n input.distance > this.options.threshold &&\n input.maxPointers == this.options.pointers &&\n abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n\n emit: function(input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n\n this._timer = null;\n this._input = null;\n this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300, // max time between the multi-tap taps\n time: 250, // max time of the pointer to be down (like finger on the screen)\n threshold: 9, // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_MANIPULATION];\n },\n\n process: function(input) {\n var options = this.options;\n\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n\n this.reset();\n\n if ((input.eventType & INPUT_START) && (this.count === 0)) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n\n var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n\n failTimeout: function() {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function() {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {enable: false}],\n [PinchRecognizer, {enable: false}, ['rotate']],\n [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n [TapRecognizer],\n [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n [PressRecognizer]\n ],\n\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n\n this.options.inputTarget = this.options.inputTarget || element;\n\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n\n toggleCssProps(this, true);\n\n each(this.options.recognizers, function(item) {\n var recognizer = this.add(new (item[0])(item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n}\n\nManager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function(options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n curRecognizer = session.curRecognizer = null;\n }\n\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && ( // 1\n !curRecognizer || recognizer == curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) { // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function(recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n\n this.touchAction.update();\n return recognizer;\n },\n\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function(recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n },\n\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function(events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function(events, handler) {\n if (events === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n data.preventDefault = function() {\n data.srcEvent.preventDefault();\n };\n\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function() {\n this.element && toggleCssProps(this, false);\n\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function(value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n// style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n define(function() {\n return Hammer;\n });\n} else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n} else {\n window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","const UA = navigator.userAgent;\nconst testElement = document.createElement( 'div' );\n\nexport const isMobile = /(iphone|ipod|ipad|android)/gi.test( UA ) ||\n\t\t\t\t\t\t( navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 ); // iPadOS\n\nexport const isChrome = /chrome/i.test( UA ) && !/edge/i.test( UA );\n\nexport const isAndroid = /android/gi.test( UA );\n\n// Flags if we should use zoom instead of transform to scale\n// up slides. Zoom produces crisper results but has a lot of\n// xbrowser quirks so we only use it in whitelisted browsers.\nexport const supportsZoom = 'zoom' in testElement.style && !isMobile &&\n\t\t\t\t( isChrome || /Version\\/[\\d\\.]+.*Safari/.test( UA ) );","import { parseCode, displayUrl, compile } from 'compiler-explorer-directives';\nimport Hammer from 'hammerjs';\nimport { isMobile } from 'reveal.js/js/utils/device';\n\nasync function parseBlock(block, config) {\n const lang = block.classList.length > 0 ? block.classList[0].replace('language-', '') : config.language;\n // highlighting line numbers removes line break so we need to restore them\n const code = block.hasAttribute( 'data-line-numbers' ) && block.classList.contains('hljs')\n ? Array.from(block.querySelectorAll('tr').values()).map(v => v.textContent).join('\\n')\n : block.textContent;\n const info = await parseCode(code, lang, config);\n if (!info) {\n return;\n }\n const url = displayUrl(info);\n\n if (isMobile) {\n delete Hammer.defaults.cssProps.userSelect; // keep default behavior\n var hammer = new Hammer.Manager(block.parentNode);\n hammer.add(new Hammer.Tap({ event: 'doubletap', taps: 2 }));\n hammer.on('doubletap', e => {\n window.open(url, 'ce');\n });\n } else {\n block.parentNode.onclick = (evt) => {\n if (evt.ctrlKey || evt.metaKey) {\n window.open(url, 'ce');\n }\n };\n }\n\n block.textContent = info.displaySource;\n}\n\nexport default {\n id: 'compiler-explorer',\n init: (reveal) => {\n const highlighPlugin = reveal.getPlugin('highlight');\n const highlightConfig = reveal.getConfig().highlight || {};\n const highlightOnLoad = typeof highlightConfig.highlightOnLoad === 'boolean' ? highlightConfig.highlightOnLoad : true;\n const config = reveal.getConfig().compilerExplorer;\n\n return Promise.all([].slice.call(reveal.getRevealElement().querySelectorAll('pre code')).map(async (block) => {\n await parseBlock(block, config);\n if (highlightOnLoad) {\n highlighPlugin.highlightBlock(block);\n }\n }));\n },\n compile: compile\n};\n"],"names":["RetryOperation","require$$0","retry","errcode","global","browser","bent","promiseRetry","ansi_colors","debug","undefined","define","parseCode","displayUrl","Hammer","hammer","compile"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"reveal-compiler-explorer.js","sources":["../../../node_modules/bent/src/core.js","../../../node_modules/bent/src/browser.js","../../compiler-explorer-directives/node_modules/err-code/index.js","../../compiler-explorer-directives/node_modules/retry/lib/retry_operation.js","../../compiler-explorer-directives/node_modules/retry/lib/retry.js","../../compiler-explorer-directives/node_modules/retry/index.js","../../compiler-explorer-directives/node_modules/promise-retry/index.js","../../../node_modules/rollup-plugin-node-globals/src/global.js","../../../node_modules/process-es6/browser.js","../../../node_modules/ansi-colors/symbols.js","../../../node_modules/ansi-colors/index.js","../../../node_modules/ms/index.js","../../compiler-explorer-directives/node_modules/debug/src/common.js","../../compiler-explorer-directives/node_modules/debug/src/browser.js","../../compiler-explorer-directives/dist/compiler-explorer-directives.cjs","../../../node_modules/hammerjs/hammer.js","../../../node_modules/reveal.js/js/utils/device.js","../src/reveal-compiler-explorer.js"],"sourcesContent":["'use strict'\nconst encodings = new Set(['json', 'buffer', 'string'])\n\nmodule.exports = mkrequest => (...args) => {\n const statusCodes = new Set()\n let method\n let encoding\n let headers\n let baseurl = ''\n\n args.forEach(arg => {\n if (typeof arg === 'string') {\n if (arg.toUpperCase() === arg) {\n if (method) {\n const msg = `Can't set method to ${arg}, already set to ${method}.`\n throw new Error(msg)\n } else {\n method = arg\n }\n } else if (arg.startsWith('http:') || arg.startsWith('https:')) {\n baseurl = arg\n } else {\n if (encodings.has(arg)) {\n encoding = arg\n } else {\n throw new Error(`Unknown encoding, ${arg}`)\n }\n }\n } else if (typeof arg === 'number') {\n statusCodes.add(arg)\n } else if (typeof arg === 'object') {\n if (Array.isArray(arg) || arg instanceof Set) {\n arg.forEach(code => statusCodes.add(code))\n } else {\n if (headers) {\n throw new Error('Cannot set headers twice.')\n }\n headers = arg\n }\n } else {\n throw new Error(`Unknown type: ${typeof arg}`)\n }\n })\n\n if (!method) method = 'GET'\n if (statusCodes.size === 0) {\n statusCodes.add(200)\n }\n\n return mkrequest(statusCodes, method, encoding, headers, baseurl)\n}\n","'use strict'\n/* global fetch, btoa, Headers */\nconst core = require('./core')\n\nclass StatusError extends Error {\n constructor (res, ...params) {\n super(...params)\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, StatusError)\n }\n\n this.name = 'StatusError'\n this.message = res.statusMessage\n this.statusCode = res.status\n this.res = res\n this.json = res.json.bind(res)\n this.text = res.text.bind(res)\n this.arrayBuffer = res.arrayBuffer.bind(res)\n let buffer\n const get = () => {\n if (!buffer) buffer = this.arrayBuffer()\n return buffer\n }\n Object.defineProperty(this, 'responseBody', { get })\n // match Node.js headers object\n this.headers = {}\n for (const [key, value] of res.headers.entries()) {\n this.headers[key.toLowerCase()] = value\n }\n }\n}\n\nconst mkrequest = (statusCodes, method, encoding, headers, baseurl) => async (_url, body, _headers = {}) => {\n _url = baseurl + (_url || '')\n let parsed = new URL(_url)\n\n if (!headers) headers = {}\n if (parsed.username) {\n headers.Authorization = 'Basic ' + btoa(parsed.username + ':' + parsed.password)\n parsed = new URL(parsed.protocol + '//' + parsed.host + parsed.pathname + parsed.search)\n }\n if (parsed.protocol !== 'https:' && parsed.protocol !== 'http:') {\n throw new Error(`Unknown protocol, ${parsed.protocol}`)\n }\n\n if (body) {\n if (body instanceof ArrayBuffer ||\n ArrayBuffer.isView(body) ||\n typeof body === 'string'\n ) {\n // noop\n } else if (typeof body === 'object') {\n body = JSON.stringify(body)\n headers['Content-Type'] = 'application/json'\n } else {\n throw new Error('Unknown body type.')\n }\n }\n\n _headers = new Headers({ ...(headers || {}), ..._headers })\n\n const resp = await fetch(parsed, { method, headers: _headers, body })\n resp.statusCode = resp.status\n\n if (!statusCodes.has(resp.status)) {\n throw new StatusError(resp)\n }\n\n if (encoding === 'json') return resp.json()\n else if (encoding === 'buffer') return resp.arrayBuffer()\n else if (encoding === 'string') return resp.text()\n else return resp\n}\n\nmodule.exports = core(mkrequest)\n","'use strict';\n\nfunction assign(obj, props) {\n for (const key in props) {\n Object.defineProperty(obj, key, {\n value: props[key],\n enumerable: true,\n configurable: true,\n });\n }\n\n return obj;\n}\n\nfunction createError(err, code, props) {\n if (!err || typeof err === 'string') {\n throw new TypeError('Please pass an Error to err-code');\n }\n\n if (!props) {\n props = {};\n }\n\n if (typeof code === 'object') {\n props = code;\n code = undefined;\n }\n\n if (code != null) {\n props.code = code;\n }\n\n try {\n return assign(err, props);\n } catch (_) {\n props.message = err.message;\n props.stack = err.stack;\n\n const ErrClass = function () {};\n\n ErrClass.prototype = Object.create(Object.getPrototypeOf(err));\n\n return assign(new ErrClass(), props);\n }\n}\n\nmodule.exports = createError;\n","function RetryOperation(timeouts, options) {\n // Compatibility for the old (timeouts, retryForever) signature\n if (typeof options === 'boolean') {\n options = { forever: options };\n }\n\n this._originalTimeouts = JSON.parse(JSON.stringify(timeouts));\n this._timeouts = timeouts;\n this._options = options || {};\n this._maxRetryTime = options && options.maxRetryTime || Infinity;\n this._fn = null;\n this._errors = [];\n this._attempts = 1;\n this._operationTimeout = null;\n this._operationTimeoutCb = null;\n this._timeout = null;\n this._operationStart = null;\n\n if (this._options.forever) {\n this._cachedTimeouts = this._timeouts.slice(0);\n }\n}\nmodule.exports = RetryOperation;\n\nRetryOperation.prototype.reset = function() {\n this._attempts = 1;\n this._timeouts = this._originalTimeouts;\n}\n\nRetryOperation.prototype.stop = function() {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n\n this._timeouts = [];\n this._cachedTimeouts = null;\n};\n\nRetryOperation.prototype.retry = function(err) {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n\n if (!err) {\n return false;\n }\n var currentTime = new Date().getTime();\n if (err && currentTime - this._operationStart >= this._maxRetryTime) {\n this._errors.unshift(new Error('RetryOperation timeout occurred'));\n return false;\n }\n\n this._errors.push(err);\n\n var timeout = this._timeouts.shift();\n if (timeout === undefined) {\n if (this._cachedTimeouts) {\n // retry forever, only keep last error\n this._errors.splice(this._errors.length - 1, this._errors.length);\n this._timeouts = this._cachedTimeouts.slice(0);\n timeout = this._timeouts.shift();\n } else {\n return false;\n }\n }\n\n var self = this;\n var timer = setTimeout(function() {\n self._attempts++;\n\n if (self._operationTimeoutCb) {\n self._timeout = setTimeout(function() {\n self._operationTimeoutCb(self._attempts);\n }, self._operationTimeout);\n\n if (self._options.unref) {\n self._timeout.unref();\n }\n }\n\n self._fn(self._attempts);\n }, timeout);\n\n if (this._options.unref) {\n timer.unref();\n }\n\n return true;\n};\n\nRetryOperation.prototype.attempt = function(fn, timeoutOps) {\n this._fn = fn;\n\n if (timeoutOps) {\n if (timeoutOps.timeout) {\n this._operationTimeout = timeoutOps.timeout;\n }\n if (timeoutOps.cb) {\n this._operationTimeoutCb = timeoutOps.cb;\n }\n }\n\n var self = this;\n if (this._operationTimeoutCb) {\n this._timeout = setTimeout(function() {\n self._operationTimeoutCb();\n }, self._operationTimeout);\n }\n\n this._operationStart = new Date().getTime();\n\n this._fn(this._attempts);\n};\n\nRetryOperation.prototype.try = function(fn) {\n console.log('Using RetryOperation.try() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = function(fn) {\n console.log('Using RetryOperation.start() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = RetryOperation.prototype.try;\n\nRetryOperation.prototype.errors = function() {\n return this._errors;\n};\n\nRetryOperation.prototype.attempts = function() {\n return this._attempts;\n};\n\nRetryOperation.prototype.mainError = function() {\n if (this._errors.length === 0) {\n return null;\n }\n\n var counts = {};\n var mainError = null;\n var mainErrorCount = 0;\n\n for (var i = 0; i < this._errors.length; i++) {\n var error = this._errors[i];\n var message = error.message;\n var count = (counts[message] || 0) + 1;\n\n counts[message] = count;\n\n if (count >= mainErrorCount) {\n mainError = error;\n mainErrorCount = count;\n }\n }\n\n return mainError;\n};\n","var RetryOperation = require('./retry_operation');\n\nexports.operation = function(options) {\n var timeouts = exports.timeouts(options);\n return new RetryOperation(timeouts, {\n forever: options && options.forever,\n unref: options && options.unref,\n maxRetryTime: options && options.maxRetryTime\n });\n};\n\nexports.timeouts = function(options) {\n if (options instanceof Array) {\n return [].concat(options);\n }\n\n var opts = {\n retries: 10,\n factor: 2,\n minTimeout: 1 * 1000,\n maxTimeout: Infinity,\n randomize: false\n };\n for (var key in options) {\n opts[key] = options[key];\n }\n\n if (opts.minTimeout > opts.maxTimeout) {\n throw new Error('minTimeout is greater than maxTimeout');\n }\n\n var timeouts = [];\n for (var i = 0; i < opts.retries; i++) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n if (options && options.forever && !timeouts.length) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n // sort the array numerically ascending\n timeouts.sort(function(a,b) {\n return a - b;\n });\n\n return timeouts;\n};\n\nexports.createTimeout = function(attempt, opts) {\n var random = (opts.randomize)\n ? (Math.random() + 1)\n : 1;\n\n var timeout = Math.round(random * opts.minTimeout * Math.pow(opts.factor, attempt));\n timeout = Math.min(timeout, opts.maxTimeout);\n\n return timeout;\n};\n\nexports.wrap = function(obj, options, methods) {\n if (options instanceof Array) {\n methods = options;\n options = null;\n }\n\n if (!methods) {\n methods = [];\n for (var key in obj) {\n if (typeof obj[key] === 'function') {\n methods.push(key);\n }\n }\n }\n\n for (var i = 0; i < methods.length; i++) {\n var method = methods[i];\n var original = obj[method];\n\n obj[method] = function retryWrapper(original) {\n var op = exports.operation(options);\n var args = Array.prototype.slice.call(arguments, 1);\n var callback = args.pop();\n\n args.push(function(err) {\n if (op.retry(err)) {\n return;\n }\n if (err) {\n arguments[0] = op.mainError();\n }\n callback.apply(this, arguments);\n });\n\n op.attempt(function() {\n original.apply(obj, args);\n });\n }.bind(obj, original);\n obj[method].options = options;\n }\n};\n","module.exports = require('./lib/retry');","'use strict';\n\nvar errcode = require('err-code');\nvar retry = require('retry');\n\nvar hasOwn = Object.prototype.hasOwnProperty;\n\nfunction isRetryError(err) {\n return err && err.code === 'EPROMISERETRY' && hasOwn.call(err, 'retried');\n}\n\nfunction promiseRetry(fn, options) {\n var temp;\n var operation;\n\n if (typeof fn === 'object' && typeof options === 'function') {\n // Swap options and fn when using alternate signature (options, fn)\n temp = options;\n options = fn;\n fn = temp;\n }\n\n operation = retry.operation(options);\n\n return new Promise(function (resolve, reject) {\n operation.attempt(function (number) {\n Promise.resolve()\n .then(function () {\n return fn(function (err) {\n if (isRetryError(err)) {\n err = err.retried;\n }\n\n throw errcode(new Error('Retrying'), 'EPROMISERETRY', { retried: err });\n }, number);\n })\n .then(resolve, function (err) {\n if (isRetryError(err)) {\n err = err.retried;\n\n if (operation.retry(err || new Error())) {\n return;\n }\n }\n\n reject(err);\n });\n });\n });\n}\n\nmodule.exports = promiseRetry;\n","export default (typeof global !== \"undefined\" ? global :\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window : {});\n","// shim for using process in browser\n// based off https://github.com/defunctzombie/node-process/blob/master/browser.js\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}\nvar cachedSetTimeout = defaultSetTimout;\nvar cachedClearTimeout = defaultClearTimeout;\nif (typeof global.setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n}\nif (typeof global.clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\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}\nexport function nextTick(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// 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};\nexport var title = 'browser';\nexport var platform = 'browser';\nexport var browser = true;\nexport var env = {};\nexport var argv = [];\nexport var version = ''; // empty string to avoid regexp issues\nexport var versions = {};\nexport var release = {};\nexport var config = {};\n\nfunction noop() {}\n\nexport var on = noop;\nexport var addListener = noop;\nexport var once = noop;\nexport var off = noop;\nexport var removeListener = noop;\nexport var removeAllListeners = noop;\nexport var emit = noop;\n\nexport function binding(name) {\n throw new Error('process.binding is not supported');\n}\n\nexport function cwd () { return '/' }\nexport function chdir (dir) {\n throw new Error('process.chdir is not supported');\n};\nexport function umask() { return 0; }\n\n// from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js\nvar performance = global.performance || {}\nvar performanceNow =\n performance.now ||\n performance.mozNow ||\n performance.msNow ||\n performance.oNow ||\n performance.webkitNow ||\n function(){ return (new Date()).getTime() }\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nexport function hrtime(previousTimestamp){\n var clocktime = performanceNow.call(performance)*1e-3\n var seconds = Math.floor(clocktime)\n var nanoseconds = Math.floor((clocktime%1)*1e9)\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0]\n nanoseconds = nanoseconds - previousTimestamp[1]\n if (nanoseconds<0) {\n seconds--\n nanoseconds += 1e9\n }\n }\n return [seconds,nanoseconds]\n}\n\nvar startTime = new Date();\nexport function uptime() {\n var currentTime = new Date();\n var dif = currentTime - startTime;\n return dif / 1000;\n}\n\nexport default {\n nextTick: nextTick,\n title: title,\n browser: browser,\n env: env,\n argv: argv,\n version: version,\n versions: versions,\n on: on,\n addListener: addListener,\n once: once,\n off: off,\n removeListener: removeListener,\n removeAllListeners: removeAllListeners,\n emit: emit,\n binding: binding,\n cwd: cwd,\n chdir: chdir,\n umask: umask,\n hrtime: hrtime,\n platform: platform,\n release: release,\n config: config,\n uptime: uptime\n};\n","'use strict';\n\nconst isHyper = process.env.TERM_PROGRAM === 'Hyper';\nconst isWindows = process.platform === 'win32';\nconst isLinux = process.platform === 'linux';\n\nconst common = {\n ballotDisabled: '☒',\n ballotOff: '☐',\n ballotOn: '☑',\n bullet: '•',\n bulletWhite: '◦',\n fullBlock: '█',\n heart: '❤',\n identicalTo: '≡',\n line: '─',\n mark: '※',\n middot: '·',\n minus: '-',\n multiplication: '×',\n obelus: '÷',\n pencilDownRight: '✎',\n pencilRight: '✏',\n pencilUpRight: '✐',\n percent: '%',\n pilcrow2: '❡',\n pilcrow: '¶',\n plusMinus: '±',\n section: '§',\n starsOff: '☆',\n starsOn: '★',\n upDownArrow: '↕'\n};\n\nconst windows = Object.assign({}, common, {\n check: '√',\n cross: '×',\n ellipsisLarge: '...',\n ellipsis: '...',\n info: 'i',\n question: '?',\n questionSmall: '?',\n pointer: '>',\n pointerSmall: '»',\n radioOff: '( )',\n radioOn: '(*)',\n warning: '‼'\n});\n\nconst other = Object.assign({}, common, {\n ballotCross: '✘',\n check: '✔',\n cross: '✖',\n ellipsisLarge: '⋯',\n ellipsis: '…',\n info: 'ℹ',\n question: '?',\n questionFull: '?',\n questionSmall: '﹖',\n pointer: isLinux ? '▸' : '❯',\n pointerSmall: isLinux ? '‣' : '›',\n radioOff: '◯',\n radioOn: '◉',\n warning: '⚠'\n});\n\nmodule.exports = (isWindows && !isHyper) ? windows : other;\nReflect.defineProperty(module.exports, 'common', { enumerable: false, value: common });\nReflect.defineProperty(module.exports, 'windows', { enumerable: false, value: windows });\nReflect.defineProperty(module.exports, 'other', { enumerable: false, value: other });\n","'use strict';\n\nconst isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\nconst identity = val => val;\n\n/* eslint-disable no-control-regex */\n// this is a modified version of https://github.com/chalk/ansi-regex (MIT License)\nconst ANSI_REGEX = /[\\u001b\\u009b][[\\]#;?()]*(?:(?:(?:[^\\W_]*;?[^\\W_]*)\\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g;\n\nconst create = () => {\n const colors = { enabled: true, visible: true, styles: {}, keys: {} };\n\n if ('FORCE_COLOR' in process.env) {\n colors.enabled = process.env.FORCE_COLOR !== '0';\n }\n\n const ansi = style => {\n let open = style.open = `\\u001b[${style.codes[0]}m`;\n let close = style.close = `\\u001b[${style.codes[1]}m`;\n let regex = style.regex = new RegExp(`\\\\u001b\\\\[${style.codes[1]}m`, 'g');\n style.wrap = (input, newline) => {\n if (input.includes(close)) input = input.replace(regex, close + open);\n let output = open + input + close;\n // see https://github.com/chalk/chalk/pull/92, thanks to the\n // chalk contributors for this fix. However, we've confirmed that\n // this issue is also present in Windows terminals\n return newline ? output.replace(/\\r*\\n/g, `${close}$&${open}`) : output;\n };\n return style;\n };\n\n const wrap = (style, input, newline) => {\n return typeof style === 'function' ? style(input) : style.wrap(input, newline);\n };\n\n const style = (input, stack) => {\n if (input === '' || input == null) return '';\n if (colors.enabled === false) return input;\n if (colors.visible === false) return '';\n let str = '' + input;\n let nl = str.includes('\\n');\n let n = stack.length;\n if (n > 0 && stack.includes('unstyle')) {\n stack = [...new Set(['unstyle', ...stack])].reverse();\n }\n while (n-- > 0) str = wrap(colors.styles[stack[n]], str, nl);\n return str;\n };\n\n const define = (name, codes, type) => {\n colors.styles[name] = ansi({ name, codes });\n let keys = colors.keys[type] || (colors.keys[type] = []);\n keys.push(name);\n\n Reflect.defineProperty(colors, name, {\n configurable: true,\n enumerable: true,\n set(value) {\n colors.alias(name, value);\n },\n get() {\n let color = input => style(input, color.stack);\n Reflect.setPrototypeOf(color, colors);\n color.stack = this.stack ? this.stack.concat(name) : [name];\n return color;\n }\n });\n };\n\n define('reset', [0, 0], 'modifier');\n define('bold', [1, 22], 'modifier');\n define('dim', [2, 22], 'modifier');\n define('italic', [3, 23], 'modifier');\n define('underline', [4, 24], 'modifier');\n define('inverse', [7, 27], 'modifier');\n define('hidden', [8, 28], 'modifier');\n define('strikethrough', [9, 29], 'modifier');\n\n define('black', [30, 39], 'color');\n define('red', [31, 39], 'color');\n define('green', [32, 39], 'color');\n define('yellow', [33, 39], 'color');\n define('blue', [34, 39], 'color');\n define('magenta', [35, 39], 'color');\n define('cyan', [36, 39], 'color');\n define('white', [37, 39], 'color');\n define('gray', [90, 39], 'color');\n define('grey', [90, 39], 'color');\n\n define('bgBlack', [40, 49], 'bg');\n define('bgRed', [41, 49], 'bg');\n define('bgGreen', [42, 49], 'bg');\n define('bgYellow', [43, 49], 'bg');\n define('bgBlue', [44, 49], 'bg');\n define('bgMagenta', [45, 49], 'bg');\n define('bgCyan', [46, 49], 'bg');\n define('bgWhite', [47, 49], 'bg');\n\n define('blackBright', [90, 39], 'bright');\n define('redBright', [91, 39], 'bright');\n define('greenBright', [92, 39], 'bright');\n define('yellowBright', [93, 39], 'bright');\n define('blueBright', [94, 39], 'bright');\n define('magentaBright', [95, 39], 'bright');\n define('cyanBright', [96, 39], 'bright');\n define('whiteBright', [97, 39], 'bright');\n\n define('bgBlackBright', [100, 49], 'bgBright');\n define('bgRedBright', [101, 49], 'bgBright');\n define('bgGreenBright', [102, 49], 'bgBright');\n define('bgYellowBright', [103, 49], 'bgBright');\n define('bgBlueBright', [104, 49], 'bgBright');\n define('bgMagentaBright', [105, 49], 'bgBright');\n define('bgCyanBright', [106, 49], 'bgBright');\n define('bgWhiteBright', [107, 49], 'bgBright');\n\n colors.ansiRegex = ANSI_REGEX;\n colors.hasColor = colors.hasAnsi = str => {\n colors.ansiRegex.lastIndex = 0;\n return typeof str === 'string' && str !== '' && colors.ansiRegex.test(str);\n };\n\n colors.alias = (name, color) => {\n let fn = typeof color === 'string' ? colors[color] : color;\n\n if (typeof fn !== 'function') {\n throw new TypeError('Expected alias to be the name of an existing color (string) or a function');\n }\n\n if (!fn.stack) {\n Reflect.defineProperty(fn, 'name', { value: name });\n colors.styles[name] = fn;\n fn.stack = [name];\n }\n\n Reflect.defineProperty(colors, name, {\n configurable: true,\n enumerable: true,\n set(value) {\n colors.alias(name, value);\n },\n get() {\n let color = input => style(input, color.stack);\n Reflect.setPrototypeOf(color, colors);\n color.stack = this.stack ? this.stack.concat(fn.stack) : fn.stack;\n return color;\n }\n });\n };\n\n colors.theme = custom => {\n if (!isObject(custom)) throw new TypeError('Expected theme to be an object');\n for (let name of Object.keys(custom)) {\n colors.alias(name, custom[name]);\n }\n return colors;\n };\n\n colors.alias('unstyle', str => {\n if (typeof str === 'string' && str !== '') {\n colors.ansiRegex.lastIndex = 0;\n return str.replace(colors.ansiRegex, '');\n }\n return '';\n });\n\n colors.alias('noop', str => str);\n colors.none = colors.clear = colors.noop;\n\n colors.stripColor = colors.unstyle;\n colors.symbols = require('./symbols');\n colors.define = define;\n return colors;\n};\n\nmodule.exports = create();\nmodule.exports.create = create;\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\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' && isFinite(val)) {\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|weeks?|w|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 'weeks':\n case 'week':\n case 'w':\n return n * w;\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 var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= 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 var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => enableOverride === null ? createDebug.enabled(namespace) : enableOverride,\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\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\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar bent = require('bent');\nvar promiseRetry = require('promise-retry');\nvar ansi_colors = require('ansi-colors');\nvar debug = require('debug');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar bent__default = /*#__PURE__*/_interopDefaultLegacy(bent);\nvar promiseRetry__default = /*#__PURE__*/_interopDefaultLegacy(promiseRetry);\nvar ansi_colors__default = /*#__PURE__*/_interopDefaultLegacy(ansi_colors);\nvar debug__default = /*#__PURE__*/_interopDefaultLegacy(debug);\n\nconst { unstyle } = ansi_colors__default['default'];\n\nconst log = debug__default['default']('reveal-compiler-explorer:compiler-explorer-directives');\n\n// https://github.com/highlightjs/highlight.js/blob/master/SUPPORTED_LANGUAGES.md\nconst langAliases = {\n 'cpp': 'c++', 'hpp': 'c++', 'cc': 'c++', 'hh': 'c++', 'h++': 'c++', 'cxx': 'c++', 'hxx': 'c++',\n 'ada': 'ada',\n 'x86asm': 'assembly',\n 'h': 'c',\n 'f90': 'fortran', 'f95': 'fortran',\n 'golang': 'go',\n 'hs': 'haskell',\n 'nimrod': 'nim',\n 'ml': 'ocaml',\n 'py': 'python', 'gyp': 'python',\n 'rs': 'rust'\n};\n\nconst GODBOLT_URL = 'https://godbolt.org';\nconst get = bent__default['default'](`${GODBOLT_URL}/api`, 'GET', 'json', { 'Accept': 'application/json' });\nconst post = bent__default['default'](`${GODBOLT_URL}/api`, 'POST', 'json');\n\nconst langConfig = (() => {\n let langConfig;\n return async function () {\n if (!langConfig) {\n const predefined = new Map([\n ['c++', {\n options: '-O2 -march=haswell -Wall -Wextra -pedantic -Wno-unused-variable -Wno-unused-parameter',\n mainRegex: /\\bmain\\(/\n }],\n ['c', {\n options: '-O2 -march=haswell -Wall -Wextra -pedantic -Wno-unused-variable -Wno-unused-parameter',\n mainRegex: /\\bmain\\(/\n }],\n ['d', {\n mainRegex: /\\bmain\\(/\n }]\n ]);\n log(`reading languages from ${GODBOLT_URL}`);\n const languages = await get('/languages?fields=id,defaultCompiler');\n langConfig = new Map(languages\n .map(({ id, defaultCompiler }) => [id, Object.assign({ 'compiler': defaultCompiler }, predefined.get(id))]));\n log('default language configuration is %o', langConfig);\n }\n return langConfig;\n };\n})();\n\nconst defaultConfig = {\n runMain: true,\n useLocal: false,\n localPort: 10240,\n directives: []\n};\n\nconst directive = pattern => new RegExp(`^\\\\s*\\\\/\\\\/\\\\/\\\\s*${pattern}$`);\n\nconst builtinDirectives = [\n ['compiler=(.*)', (matches, info) => matches.slice(1).forEach(match => {\n info.compiler = match;\n })],\n ['options=(.*)', (matches, info) => matches.slice(1).forEach(match => info.options = match)],\n ['options\\\\+=(.*)', (matches, info) => matches.slice(1).forEach(match => info.options += ' ' + match)],\n ['libs=(\\\\w+:\\\\w+(?:,\\\\w+:\\\\w+)*)', (matches, info) => matches.slice(1).forEach(match => {\n [...match.matchAll(/(\\w+):(\\w+)/g)].forEach(match => {\n info.libs.push({\n name: match[1],\n ver: match[2]\n });\n });\n })],\n ['(no)?execute', (matches, info) => matches.slice(1).forEach(match => info.execute = !match)],\n ['external', (matches, info) => matches.forEach(_ => info.forceExternal = true)],\n ['(un)?hide', (matches, info) => matches.slice(1).forEach(match => info.hide = !match)],\n];\n\nconst parseCode = async (code, language, config) => {\n log('parsing %o, language %s, config %o', code, language, config);\n language = langAliases[language] || language;\n const lg = await langConfig();\n if (!lg.has(language)) {\n log('language %s is not supported', language);\n return null;\n }\n\n config = Object.assign({}, defaultConfig, lg.get(language), config);\n const directives = builtinDirectives.concat(config.directives)\n .map(([regex, action]) => [directive(regex), action]);\n const lines = unescape(code).split('\\n');\n const matches = (line, regex) => line.match(regex) || [];\n\n const info = {\n source: [],\n displaySource: [],\n language: language,\n compiler: config.compiler,\n options: config.options || '',\n libs: config.libs || [],\n forceExternal: false,\n hide: false\n };\n\n for (const line of lines) {\n if (line.match(directive('.*'))) {\n directives.forEach(([regex, action]) => action(matches(line, regex), info));\n } else {\n if (config.runMain\n && config.mainRegex\n && line.match(config.mainRegex)\n && !info.hasOwnProperty('execute')) {\n info.execute = true;\n }\n info.source.push(line);\n if (!info.hide)\n info.displaySource.push(line);\n }\n }\n\n info.baseUrl = (config.useLocal && !info.forceExternal)\n ? `http://localhost:${config.localPort}`\n : GODBOLT_URL;\n info.source = info.source.join('\\n');\n info.displaySource = info.displaySource.join('\\n');\n delete info.hide;\n delete info.forceExternal;\n\n log('parse result %o', info);\n return info;\n};\n\nconst displayUrl = (info) => {\n let content = [\n {\n type: 'component',\n componentName: 'codeEditor',\n componentState: {\n id: 1,\n source: info.source,\n options: { compileOnChange: true, colouriseAsm: true },\n fontScale: 2.5\n }\n },\n {\n type: 'column',\n content: [{\n type: 'component',\n componentName: 'compiler',\n componentState: {\n source: 1,\n lang: info.language,\n compiler: info.compiler,\n options: info.options,\n libs: info.libs,\n fontScale: 3.0,\n filters: {\n commentOnly: true,\n directives: true,\n intel: true,\n labels: true,\n trim: true,\n execute: info.execute\n }\n }\n }, {\n type: 'component',\n componentName: 'output',\n componentState: {\n compiler: 1\n }\n }\n ]\n }\n ];\n let obj = {\n version: 4,\n content: [{ type: 'row', content: content }],\n settings: {\n theme: 'dark'\n }\n };\n\n let ceFragment = encodeURIComponent(JSON.stringify(obj));\n\n return `${info.baseUrl}/#${ceFragment}`;\n};\n\nclass CompileError extends Error {\n constructor(code, message) {\n super(message);\n this.name = 'CompileError';\n this.code = code;\n }\n}\n\nconst compile = async (info, retryOptions = {}) => {\n log('compiling %o', info);\n const data = {\n source: info.source,\n options: {\n userArguments: info.options || '',\n filters: {\n execute: info.execute || false\n },\n libraries: (info.libs || []).map(function (lib) {\n return {\n id: lib.name,\n version: lib.ver\n };\n })\n }\n };\n const response = await promiseRetry__default['default'](retryOptions, async (retry) => {\n try {\n return await post(`/compiler/${info.compiler}/compile`, data);\n }\n catch (err) {\n log('compile error %o', err);\n if (Math.trunc(err.statusCode / 100) === 5) {\n log('retrying');\n retry(err);\n }\n\n throw err;\n }\n });\n\n log('response is %o', response);\n\n const text = (stream) => unstyle(stream.stderr.concat(stream.stdout).map(x => x.text).join('\\n'));\n\n if (response.code === 0) {\n if (info.execute) {\n if (response.execResult.buildResult.code === 0) {\n return text(response.execResult);\n }\n\n throw new CompileError(response.execResult.buildResult.code,\n text(response.execResult.buildResult));\n }\n\n return text(response);\n }\n\n throw new CompileError(response.code, text(response));\n};\n\nexports.CompileError = CompileError;\nexports.compile = compile;\nexports.displayUrl = displayUrl;\nexports.parseCode = parseCode;\n//# sourceMappingURL=compiler-explorer-directives.cjs.map\n","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n 'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n var i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function() {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^Object.\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || (merge && dest[keys[i]] === undefined)) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.addEventListener(type, handler, false);\n });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.removeEventListener(type, handler, false);\n });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n return i;\n }\n i++;\n }\n return -1;\n }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = (prefix) ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n\n}\n\nInput.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function() { },\n\n /**\n * bind the events\n */\n init: function() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n\n /**\n * unbind the events\n */\n destroy: function() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity, velocityX, velocityY, direction;\n\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n var x = 0, y = 0, i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n\n return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n});\n\nvar POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n\n Input.apply(this, arguments);\n\n this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n\n Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n\n Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function(touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n changedTargetTouches\n ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n Input.apply(this, arguments);\n\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n\n this.primaryTouch = null;\n this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n\n this.callback(manager, inputEvent, inputData);\n },\n\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n});\n\nfunction recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n}\n\nfunction setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {x: touch.clientX, y: touch.clientY};\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function() {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n}\n\nfunction isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n}\n\nTouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function(value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n\n /**\n * just re-set the touchAction value\n */\n update: function() {\n this.set(this.manager.options.touchAction);\n },\n\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function() {\n var actions = [];\n each(this.manager.recognizers, function(recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone ||\n (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n (hasPanX && direction & DIRECTION_VERTICAL)) {\n return this.preventSrc(srcEvent);\n }\n },\n\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n\n this.id = uniqueId();\n\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n\n this.state = STATE_POSSIBLE;\n\n this.simultaneous = {};\n this.requireFail = [];\n}\n\nRecognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function(options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function() {\n return this.requireFail.length > 0;\n },\n\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function(input) {\n var self = this;\n var state = this.state;\n\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function() {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function(inputData) { }, // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function() { },\n\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function(input) {\n var state = this.state;\n var eventType = input.eventType;\n\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n\n this.pX = null;\n this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n\n getTouchAction: function() {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n\n directionTest: function(input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n\n attrTest: function(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) &&\n (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n },\n\n emit: function(input) {\n\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n\n var direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n\n emit: function(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n Recognizer.apply(this, arguments);\n\n this._timer = null;\n this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251, // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_AUTO];\n },\n\n process: function(input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && (input.eventType & INPUT_END)) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n\n getTouchAction: function() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n\n attrTest: function(input) {\n var direction = this.options.direction;\n var velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return this._super.attrTest.call(this, input) &&\n direction & input.offsetDirection &&\n input.distance > this.options.threshold &&\n input.maxPointers == this.options.pointers &&\n abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n\n emit: function(input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n\n this._timer = null;\n this._input = null;\n this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300, // max time between the multi-tap taps\n time: 250, // max time of the pointer to be down (like finger on the screen)\n threshold: 9, // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_MANIPULATION];\n },\n\n process: function(input) {\n var options = this.options;\n\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n\n this.reset();\n\n if ((input.eventType & INPUT_START) && (this.count === 0)) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n\n var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n\n failTimeout: function() {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function() {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {enable: false}],\n [PinchRecognizer, {enable: false}, ['rotate']],\n [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n [TapRecognizer],\n [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n [PressRecognizer]\n ],\n\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n\n this.options.inputTarget = this.options.inputTarget || element;\n\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n\n toggleCssProps(this, true);\n\n each(this.options.recognizers, function(item) {\n var recognizer = this.add(new (item[0])(item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n}\n\nManager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function(options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n curRecognizer = session.curRecognizer = null;\n }\n\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && ( // 1\n !curRecognizer || recognizer == curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) { // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function(recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n\n this.touchAction.update();\n return recognizer;\n },\n\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function(recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n },\n\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function(events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function(events, handler) {\n if (events === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n data.preventDefault = function() {\n data.srcEvent.preventDefault();\n };\n\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function() {\n this.element && toggleCssProps(this, false);\n\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function(value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n// style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n define(function() {\n return Hammer;\n });\n} else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n} else {\n window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","const UA = navigator.userAgent;\nconst testElement = document.createElement( 'div' );\n\nexport const isMobile = /(iphone|ipod|ipad|android)/gi.test( UA ) ||\n\t\t\t\t\t\t( navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 ); // iPadOS\n\nexport const isChrome = /chrome/i.test( UA ) && !/edge/i.test( UA );\n\nexport const isAndroid = /android/gi.test( UA );\n\n// Flags if we should use zoom instead of transform to scale\n// up slides. Zoom produces crisper results but has a lot of\n// xbrowser quirks so we only use it in whitelisted browsers.\nexport const supportsZoom = 'zoom' in testElement.style && !isMobile &&\n\t\t\t\t( isChrome || /Version\\/[\\d\\.]+.*Safari/.test( UA ) );","import { parseCode, displayUrl, compile } from 'compiler-explorer-directives';\nimport Hammer from 'hammerjs';\nimport { isMobile } from 'reveal.js/js/utils/device';\n\nasync function parseBlock(block, config) {\n const lang = block.classList.length > 0 ? block.classList[0].replace('language-', '') : config.language;\n // highlighting line numbers removes line break so we need to restore them\n const code = block.hasAttribute( 'data-line-numbers' ) && block.classList.contains('hljs')\n ? Array.from(block.querySelectorAll('tr').values()).map(v => v.textContent).join('\\n')\n : block.textContent;\n const info = await parseCode(code, lang, config);\n if (!info) {\n return;\n }\n const url = displayUrl(info);\n\n if (isMobile) {\n delete Hammer.defaults.cssProps.userSelect; // keep default behavior\n var hammer = new Hammer.Manager(block.parentNode);\n hammer.add(new Hammer.Tap({ event: 'doubletap', taps: 2 }));\n hammer.on('doubletap', e => {\n window.open(url, 'ce');\n });\n } else {\n block.parentNode.onclick = (evt) => {\n if (evt.ctrlKey || evt.metaKey) {\n window.open(url, 'ce');\n }\n };\n }\n\n block.textContent = info.displaySource;\n}\n\nexport default {\n id: 'compiler-explorer',\n init: (reveal) => {\n const highlighPlugin = reveal.getPlugin('highlight');\n const highlightConfig = reveal.getConfig().highlight || {};\n const highlightOnLoad = typeof highlightConfig.highlightOnLoad === 'boolean' ? highlightConfig.highlightOnLoad : true;\n const config = reveal.getConfig().compilerExplorer;\n\n return Promise.all([].slice.call(reveal.getRevealElement().querySelectorAll('pre code')).map(async (block) => {\n await parseBlock(block, config);\n if (highlightOnLoad) {\n highlighPlugin.highlightBlock(block);\n }\n }));\n },\n compile: compile\n};\n"],"names":["RetryOperation","require$$0","retry","errcode","global","browser","bent","promiseRetry","ansi_colors","debug","undefined","define","parseCode","displayUrl","Hammer","hammer","compile"],"mappings":"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"} \ No newline at end of file diff --git a/packages/reveal-compiler-explorer/dist/reveal-compiler-explorer.mjs b/packages/reveal-compiler-explorer/dist/reveal-compiler-explorer.mjs index 37303d6..40ec324 100644 --- a/packages/reveal-compiler-explorer/dist/reveal-compiler-explorer.mjs +++ b/packages/reveal-compiler-explorer/dist/reveal-compiler-explorer.mjs @@ -1707,6 +1707,10 @@ const langConfig = (() => { options: '-O2 -march=haswell -Wall -Wextra -pedantic -Wno-unused-variable -Wno-unused-parameter', mainRegex: /\bmain\(/ }], + ['c', { + options: '-O2 -march=haswell -Wall -Wextra -pedantic -Wno-unused-variable -Wno-unused-parameter', + mainRegex: /\bmain\(/ + }], ['d', { mainRegex: /\bmain\(/ }] diff --git a/packages/reveal-compiler-explorer/dist/reveal-compiler-explorer.mjs.map b/packages/reveal-compiler-explorer/dist/reveal-compiler-explorer.mjs.map index 6c2dcf2..8f84675 100644 --- a/packages/reveal-compiler-explorer/dist/reveal-compiler-explorer.mjs.map +++ b/packages/reveal-compiler-explorer/dist/reveal-compiler-explorer.mjs.map @@ -1 +1 @@ -{"version":3,"file":"reveal-compiler-explorer.mjs","sources":["../../../node_modules/bent/src/core.js","../../../node_modules/bent/src/browser.js","../../compiler-explorer-directives/node_modules/err-code/index.js","../../compiler-explorer-directives/node_modules/retry/lib/retry_operation.js","../../compiler-explorer-directives/node_modules/retry/lib/retry.js","../../compiler-explorer-directives/node_modules/retry/index.js","../../compiler-explorer-directives/node_modules/promise-retry/index.js","../../../node_modules/rollup-plugin-node-globals/src/global.js","../../../node_modules/process-es6/browser.js","../../../node_modules/ansi-colors/symbols.js","../../../node_modules/ansi-colors/index.js","../../../node_modules/ms/index.js","../../compiler-explorer-directives/node_modules/debug/src/common.js","../../compiler-explorer-directives/node_modules/debug/src/browser.js","../../compiler-explorer-directives/dist/compiler-explorer-directives.cjs","../../../node_modules/hammerjs/hammer.js","../../../node_modules/reveal.js/js/utils/device.js","../src/reveal-compiler-explorer.js"],"sourcesContent":["'use strict'\nconst encodings = new Set(['json', 'buffer', 'string'])\n\nmodule.exports = mkrequest => (...args) => {\n const statusCodes = new Set()\n let method\n let encoding\n let headers\n let baseurl = ''\n\n args.forEach(arg => {\n if (typeof arg === 'string') {\n if (arg.toUpperCase() === arg) {\n if (method) {\n const msg = `Can't set method to ${arg}, already set to ${method}.`\n throw new Error(msg)\n } else {\n method = arg\n }\n } else if (arg.startsWith('http:') || arg.startsWith('https:')) {\n baseurl = arg\n } else {\n if (encodings.has(arg)) {\n encoding = arg\n } else {\n throw new Error(`Unknown encoding, ${arg}`)\n }\n }\n } else if (typeof arg === 'number') {\n statusCodes.add(arg)\n } else if (typeof arg === 'object') {\n if (Array.isArray(arg) || arg instanceof Set) {\n arg.forEach(code => statusCodes.add(code))\n } else {\n if (headers) {\n throw new Error('Cannot set headers twice.')\n }\n headers = arg\n }\n } else {\n throw new Error(`Unknown type: ${typeof arg}`)\n }\n })\n\n if (!method) method = 'GET'\n if (statusCodes.size === 0) {\n statusCodes.add(200)\n }\n\n return mkrequest(statusCodes, method, encoding, headers, baseurl)\n}\n","'use strict'\n/* global fetch, btoa, Headers */\nconst core = require('./core')\n\nclass StatusError extends Error {\n constructor (res, ...params) {\n super(...params)\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, StatusError)\n }\n\n this.name = 'StatusError'\n this.message = res.statusMessage\n this.statusCode = res.status\n this.res = res\n this.json = res.json.bind(res)\n this.text = res.text.bind(res)\n this.arrayBuffer = res.arrayBuffer.bind(res)\n let buffer\n const get = () => {\n if (!buffer) buffer = this.arrayBuffer()\n return buffer\n }\n Object.defineProperty(this, 'responseBody', { get })\n // match Node.js headers object\n this.headers = {}\n for (const [key, value] of res.headers.entries()) {\n this.headers[key.toLowerCase()] = value\n }\n }\n}\n\nconst mkrequest = (statusCodes, method, encoding, headers, baseurl) => async (_url, body, _headers = {}) => {\n _url = baseurl + (_url || '')\n let parsed = new URL(_url)\n\n if (!headers) headers = {}\n if (parsed.username) {\n headers.Authorization = 'Basic ' + btoa(parsed.username + ':' + parsed.password)\n parsed = new URL(parsed.protocol + '//' + parsed.host + parsed.pathname + parsed.search)\n }\n if (parsed.protocol !== 'https:' && parsed.protocol !== 'http:') {\n throw new Error(`Unknown protocol, ${parsed.protocol}`)\n }\n\n if (body) {\n if (body instanceof ArrayBuffer ||\n ArrayBuffer.isView(body) ||\n typeof body === 'string'\n ) {\n // noop\n } else if (typeof body === 'object') {\n body = JSON.stringify(body)\n headers['Content-Type'] = 'application/json'\n } else {\n throw new Error('Unknown body type.')\n }\n }\n\n _headers = new Headers({ ...(headers || {}), ..._headers })\n\n const resp = await fetch(parsed, { method, headers: _headers, body })\n resp.statusCode = resp.status\n\n if (!statusCodes.has(resp.status)) {\n throw new StatusError(resp)\n }\n\n if (encoding === 'json') return resp.json()\n else if (encoding === 'buffer') return resp.arrayBuffer()\n else if (encoding === 'string') return resp.text()\n else return resp\n}\n\nmodule.exports = core(mkrequest)\n","'use strict';\n\nfunction assign(obj, props) {\n for (const key in props) {\n Object.defineProperty(obj, key, {\n value: props[key],\n enumerable: true,\n configurable: true,\n });\n }\n\n return obj;\n}\n\nfunction createError(err, code, props) {\n if (!err || typeof err === 'string') {\n throw new TypeError('Please pass an Error to err-code');\n }\n\n if (!props) {\n props = {};\n }\n\n if (typeof code === 'object') {\n props = code;\n code = undefined;\n }\n\n if (code != null) {\n props.code = code;\n }\n\n try {\n return assign(err, props);\n } catch (_) {\n props.message = err.message;\n props.stack = err.stack;\n\n const ErrClass = function () {};\n\n ErrClass.prototype = Object.create(Object.getPrototypeOf(err));\n\n return assign(new ErrClass(), props);\n }\n}\n\nmodule.exports = createError;\n","function RetryOperation(timeouts, options) {\n // Compatibility for the old (timeouts, retryForever) signature\n if (typeof options === 'boolean') {\n options = { forever: options };\n }\n\n this._originalTimeouts = JSON.parse(JSON.stringify(timeouts));\n this._timeouts = timeouts;\n this._options = options || {};\n this._maxRetryTime = options && options.maxRetryTime || Infinity;\n this._fn = null;\n this._errors = [];\n this._attempts = 1;\n this._operationTimeout = null;\n this._operationTimeoutCb = null;\n this._timeout = null;\n this._operationStart = null;\n\n if (this._options.forever) {\n this._cachedTimeouts = this._timeouts.slice(0);\n }\n}\nmodule.exports = RetryOperation;\n\nRetryOperation.prototype.reset = function() {\n this._attempts = 1;\n this._timeouts = this._originalTimeouts;\n}\n\nRetryOperation.prototype.stop = function() {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n\n this._timeouts = [];\n this._cachedTimeouts = null;\n};\n\nRetryOperation.prototype.retry = function(err) {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n\n if (!err) {\n return false;\n }\n var currentTime = new Date().getTime();\n if (err && currentTime - this._operationStart >= this._maxRetryTime) {\n this._errors.unshift(new Error('RetryOperation timeout occurred'));\n return false;\n }\n\n this._errors.push(err);\n\n var timeout = this._timeouts.shift();\n if (timeout === undefined) {\n if (this._cachedTimeouts) {\n // retry forever, only keep last error\n this._errors.splice(this._errors.length - 1, this._errors.length);\n this._timeouts = this._cachedTimeouts.slice(0);\n timeout = this._timeouts.shift();\n } else {\n return false;\n }\n }\n\n var self = this;\n var timer = setTimeout(function() {\n self._attempts++;\n\n if (self._operationTimeoutCb) {\n self._timeout = setTimeout(function() {\n self._operationTimeoutCb(self._attempts);\n }, self._operationTimeout);\n\n if (self._options.unref) {\n self._timeout.unref();\n }\n }\n\n self._fn(self._attempts);\n }, timeout);\n\n if (this._options.unref) {\n timer.unref();\n }\n\n return true;\n};\n\nRetryOperation.prototype.attempt = function(fn, timeoutOps) {\n this._fn = fn;\n\n if (timeoutOps) {\n if (timeoutOps.timeout) {\n this._operationTimeout = timeoutOps.timeout;\n }\n if (timeoutOps.cb) {\n this._operationTimeoutCb = timeoutOps.cb;\n }\n }\n\n var self = this;\n if (this._operationTimeoutCb) {\n this._timeout = setTimeout(function() {\n self._operationTimeoutCb();\n }, self._operationTimeout);\n }\n\n this._operationStart = new Date().getTime();\n\n this._fn(this._attempts);\n};\n\nRetryOperation.prototype.try = function(fn) {\n console.log('Using RetryOperation.try() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = function(fn) {\n console.log('Using RetryOperation.start() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = RetryOperation.prototype.try;\n\nRetryOperation.prototype.errors = function() {\n return this._errors;\n};\n\nRetryOperation.prototype.attempts = function() {\n return this._attempts;\n};\n\nRetryOperation.prototype.mainError = function() {\n if (this._errors.length === 0) {\n return null;\n }\n\n var counts = {};\n var mainError = null;\n var mainErrorCount = 0;\n\n for (var i = 0; i < this._errors.length; i++) {\n var error = this._errors[i];\n var message = error.message;\n var count = (counts[message] || 0) + 1;\n\n counts[message] = count;\n\n if (count >= mainErrorCount) {\n mainError = error;\n mainErrorCount = count;\n }\n }\n\n return mainError;\n};\n","var RetryOperation = require('./retry_operation');\n\nexports.operation = function(options) {\n var timeouts = exports.timeouts(options);\n return new RetryOperation(timeouts, {\n forever: options && options.forever,\n unref: options && options.unref,\n maxRetryTime: options && options.maxRetryTime\n });\n};\n\nexports.timeouts = function(options) {\n if (options instanceof Array) {\n return [].concat(options);\n }\n\n var opts = {\n retries: 10,\n factor: 2,\n minTimeout: 1 * 1000,\n maxTimeout: Infinity,\n randomize: false\n };\n for (var key in options) {\n opts[key] = options[key];\n }\n\n if (opts.minTimeout > opts.maxTimeout) {\n throw new Error('minTimeout is greater than maxTimeout');\n }\n\n var timeouts = [];\n for (var i = 0; i < opts.retries; i++) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n if (options && options.forever && !timeouts.length) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n // sort the array numerically ascending\n timeouts.sort(function(a,b) {\n return a - b;\n });\n\n return timeouts;\n};\n\nexports.createTimeout = function(attempt, opts) {\n var random = (opts.randomize)\n ? (Math.random() + 1)\n : 1;\n\n var timeout = Math.round(random * opts.minTimeout * Math.pow(opts.factor, attempt));\n timeout = Math.min(timeout, opts.maxTimeout);\n\n return timeout;\n};\n\nexports.wrap = function(obj, options, methods) {\n if (options instanceof Array) {\n methods = options;\n options = null;\n }\n\n if (!methods) {\n methods = [];\n for (var key in obj) {\n if (typeof obj[key] === 'function') {\n methods.push(key);\n }\n }\n }\n\n for (var i = 0; i < methods.length; i++) {\n var method = methods[i];\n var original = obj[method];\n\n obj[method] = function retryWrapper(original) {\n var op = exports.operation(options);\n var args = Array.prototype.slice.call(arguments, 1);\n var callback = args.pop();\n\n args.push(function(err) {\n if (op.retry(err)) {\n return;\n }\n if (err) {\n arguments[0] = op.mainError();\n }\n callback.apply(this, arguments);\n });\n\n op.attempt(function() {\n original.apply(obj, args);\n });\n }.bind(obj, original);\n obj[method].options = options;\n }\n};\n","module.exports = require('./lib/retry');","'use strict';\n\nvar errcode = require('err-code');\nvar retry = require('retry');\n\nvar hasOwn = Object.prototype.hasOwnProperty;\n\nfunction isRetryError(err) {\n return err && err.code === 'EPROMISERETRY' && hasOwn.call(err, 'retried');\n}\n\nfunction promiseRetry(fn, options) {\n var temp;\n var operation;\n\n if (typeof fn === 'object' && typeof options === 'function') {\n // Swap options and fn when using alternate signature (options, fn)\n temp = options;\n options = fn;\n fn = temp;\n }\n\n operation = retry.operation(options);\n\n return new Promise(function (resolve, reject) {\n operation.attempt(function (number) {\n Promise.resolve()\n .then(function () {\n return fn(function (err) {\n if (isRetryError(err)) {\n err = err.retried;\n }\n\n throw errcode(new Error('Retrying'), 'EPROMISERETRY', { retried: err });\n }, number);\n })\n .then(resolve, function (err) {\n if (isRetryError(err)) {\n err = err.retried;\n\n if (operation.retry(err || new Error())) {\n return;\n }\n }\n\n reject(err);\n });\n });\n });\n}\n\nmodule.exports = promiseRetry;\n","export default (typeof global !== \"undefined\" ? global :\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window : {});\n","// shim for using process in browser\n// based off https://github.com/defunctzombie/node-process/blob/master/browser.js\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}\nvar cachedSetTimeout = defaultSetTimout;\nvar cachedClearTimeout = defaultClearTimeout;\nif (typeof global.setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n}\nif (typeof global.clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\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}\nexport function nextTick(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// 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};\nexport var title = 'browser';\nexport var platform = 'browser';\nexport var browser = true;\nexport var env = {};\nexport var argv = [];\nexport var version = ''; // empty string to avoid regexp issues\nexport var versions = {};\nexport var release = {};\nexport var config = {};\n\nfunction noop() {}\n\nexport var on = noop;\nexport var addListener = noop;\nexport var once = noop;\nexport var off = noop;\nexport var removeListener = noop;\nexport var removeAllListeners = noop;\nexport var emit = noop;\n\nexport function binding(name) {\n throw new Error('process.binding is not supported');\n}\n\nexport function cwd () { return '/' }\nexport function chdir (dir) {\n throw new Error('process.chdir is not supported');\n};\nexport function umask() { return 0; }\n\n// from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js\nvar performance = global.performance || {}\nvar performanceNow =\n performance.now ||\n performance.mozNow ||\n performance.msNow ||\n performance.oNow ||\n performance.webkitNow ||\n function(){ return (new Date()).getTime() }\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nexport function hrtime(previousTimestamp){\n var clocktime = performanceNow.call(performance)*1e-3\n var seconds = Math.floor(clocktime)\n var nanoseconds = Math.floor((clocktime%1)*1e9)\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0]\n nanoseconds = nanoseconds - previousTimestamp[1]\n if (nanoseconds<0) {\n seconds--\n nanoseconds += 1e9\n }\n }\n return [seconds,nanoseconds]\n}\n\nvar startTime = new Date();\nexport function uptime() {\n var currentTime = new Date();\n var dif = currentTime - startTime;\n return dif / 1000;\n}\n\nexport default {\n nextTick: nextTick,\n title: title,\n browser: browser,\n env: env,\n argv: argv,\n version: version,\n versions: versions,\n on: on,\n addListener: addListener,\n once: once,\n off: off,\n removeListener: removeListener,\n removeAllListeners: removeAllListeners,\n emit: emit,\n binding: binding,\n cwd: cwd,\n chdir: chdir,\n umask: umask,\n hrtime: hrtime,\n platform: platform,\n release: release,\n config: config,\n uptime: uptime\n};\n","'use strict';\n\nconst isHyper = process.env.TERM_PROGRAM === 'Hyper';\nconst isWindows = process.platform === 'win32';\nconst isLinux = process.platform === 'linux';\n\nconst common = {\n ballotDisabled: '☒',\n ballotOff: '☐',\n ballotOn: '☑',\n bullet: '•',\n bulletWhite: '◦',\n fullBlock: '█',\n heart: '❤',\n identicalTo: '≡',\n line: '─',\n mark: '※',\n middot: '·',\n minus: '-',\n multiplication: '×',\n obelus: '÷',\n pencilDownRight: '✎',\n pencilRight: '✏',\n pencilUpRight: '✐',\n percent: '%',\n pilcrow2: '❡',\n pilcrow: '¶',\n plusMinus: '±',\n section: '§',\n starsOff: '☆',\n starsOn: '★',\n upDownArrow: '↕'\n};\n\nconst windows = Object.assign({}, common, {\n check: '√',\n cross: '×',\n ellipsisLarge: '...',\n ellipsis: '...',\n info: 'i',\n question: '?',\n questionSmall: '?',\n pointer: '>',\n pointerSmall: '»',\n radioOff: '( )',\n radioOn: '(*)',\n warning: '‼'\n});\n\nconst other = Object.assign({}, common, {\n ballotCross: '✘',\n check: '✔',\n cross: '✖',\n ellipsisLarge: '⋯',\n ellipsis: '…',\n info: 'ℹ',\n question: '?',\n questionFull: '?',\n questionSmall: '﹖',\n pointer: isLinux ? '▸' : '❯',\n pointerSmall: isLinux ? '‣' : '›',\n radioOff: '◯',\n radioOn: '◉',\n warning: '⚠'\n});\n\nmodule.exports = (isWindows && !isHyper) ? windows : other;\nReflect.defineProperty(module.exports, 'common', { enumerable: false, value: common });\nReflect.defineProperty(module.exports, 'windows', { enumerable: false, value: windows });\nReflect.defineProperty(module.exports, 'other', { enumerable: false, value: other });\n","'use strict';\n\nconst isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\nconst identity = val => val;\n\n/* eslint-disable no-control-regex */\n// this is a modified version of https://github.com/chalk/ansi-regex (MIT License)\nconst ANSI_REGEX = /[\\u001b\\u009b][[\\]#;?()]*(?:(?:(?:[^\\W_]*;?[^\\W_]*)\\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g;\n\nconst create = () => {\n const colors = { enabled: true, visible: true, styles: {}, keys: {} };\n\n if ('FORCE_COLOR' in process.env) {\n colors.enabled = process.env.FORCE_COLOR !== '0';\n }\n\n const ansi = style => {\n let open = style.open = `\\u001b[${style.codes[0]}m`;\n let close = style.close = `\\u001b[${style.codes[1]}m`;\n let regex = style.regex = new RegExp(`\\\\u001b\\\\[${style.codes[1]}m`, 'g');\n style.wrap = (input, newline) => {\n if (input.includes(close)) input = input.replace(regex, close + open);\n let output = open + input + close;\n // see https://github.com/chalk/chalk/pull/92, thanks to the\n // chalk contributors for this fix. However, we've confirmed that\n // this issue is also present in Windows terminals\n return newline ? output.replace(/\\r*\\n/g, `${close}$&${open}`) : output;\n };\n return style;\n };\n\n const wrap = (style, input, newline) => {\n return typeof style === 'function' ? style(input) : style.wrap(input, newline);\n };\n\n const style = (input, stack) => {\n if (input === '' || input == null) return '';\n if (colors.enabled === false) return input;\n if (colors.visible === false) return '';\n let str = '' + input;\n let nl = str.includes('\\n');\n let n = stack.length;\n if (n > 0 && stack.includes('unstyle')) {\n stack = [...new Set(['unstyle', ...stack])].reverse();\n }\n while (n-- > 0) str = wrap(colors.styles[stack[n]], str, nl);\n return str;\n };\n\n const define = (name, codes, type) => {\n colors.styles[name] = ansi({ name, codes });\n let keys = colors.keys[type] || (colors.keys[type] = []);\n keys.push(name);\n\n Reflect.defineProperty(colors, name, {\n configurable: true,\n enumerable: true,\n set(value) {\n colors.alias(name, value);\n },\n get() {\n let color = input => style(input, color.stack);\n Reflect.setPrototypeOf(color, colors);\n color.stack = this.stack ? this.stack.concat(name) : [name];\n return color;\n }\n });\n };\n\n define('reset', [0, 0], 'modifier');\n define('bold', [1, 22], 'modifier');\n define('dim', [2, 22], 'modifier');\n define('italic', [3, 23], 'modifier');\n define('underline', [4, 24], 'modifier');\n define('inverse', [7, 27], 'modifier');\n define('hidden', [8, 28], 'modifier');\n define('strikethrough', [9, 29], 'modifier');\n\n define('black', [30, 39], 'color');\n define('red', [31, 39], 'color');\n define('green', [32, 39], 'color');\n define('yellow', [33, 39], 'color');\n define('blue', [34, 39], 'color');\n define('magenta', [35, 39], 'color');\n define('cyan', [36, 39], 'color');\n define('white', [37, 39], 'color');\n define('gray', [90, 39], 'color');\n define('grey', [90, 39], 'color');\n\n define('bgBlack', [40, 49], 'bg');\n define('bgRed', [41, 49], 'bg');\n define('bgGreen', [42, 49], 'bg');\n define('bgYellow', [43, 49], 'bg');\n define('bgBlue', [44, 49], 'bg');\n define('bgMagenta', [45, 49], 'bg');\n define('bgCyan', [46, 49], 'bg');\n define('bgWhite', [47, 49], 'bg');\n\n define('blackBright', [90, 39], 'bright');\n define('redBright', [91, 39], 'bright');\n define('greenBright', [92, 39], 'bright');\n define('yellowBright', [93, 39], 'bright');\n define('blueBright', [94, 39], 'bright');\n define('magentaBright', [95, 39], 'bright');\n define('cyanBright', [96, 39], 'bright');\n define('whiteBright', [97, 39], 'bright');\n\n define('bgBlackBright', [100, 49], 'bgBright');\n define('bgRedBright', [101, 49], 'bgBright');\n define('bgGreenBright', [102, 49], 'bgBright');\n define('bgYellowBright', [103, 49], 'bgBright');\n define('bgBlueBright', [104, 49], 'bgBright');\n define('bgMagentaBright', [105, 49], 'bgBright');\n define('bgCyanBright', [106, 49], 'bgBright');\n define('bgWhiteBright', [107, 49], 'bgBright');\n\n colors.ansiRegex = ANSI_REGEX;\n colors.hasColor = colors.hasAnsi = str => {\n colors.ansiRegex.lastIndex = 0;\n return typeof str === 'string' && str !== '' && colors.ansiRegex.test(str);\n };\n\n colors.alias = (name, color) => {\n let fn = typeof color === 'string' ? colors[color] : color;\n\n if (typeof fn !== 'function') {\n throw new TypeError('Expected alias to be the name of an existing color (string) or a function');\n }\n\n if (!fn.stack) {\n Reflect.defineProperty(fn, 'name', { value: name });\n colors.styles[name] = fn;\n fn.stack = [name];\n }\n\n Reflect.defineProperty(colors, name, {\n configurable: true,\n enumerable: true,\n set(value) {\n colors.alias(name, value);\n },\n get() {\n let color = input => style(input, color.stack);\n Reflect.setPrototypeOf(color, colors);\n color.stack = this.stack ? this.stack.concat(fn.stack) : fn.stack;\n return color;\n }\n });\n };\n\n colors.theme = custom => {\n if (!isObject(custom)) throw new TypeError('Expected theme to be an object');\n for (let name of Object.keys(custom)) {\n colors.alias(name, custom[name]);\n }\n return colors;\n };\n\n colors.alias('unstyle', str => {\n if (typeof str === 'string' && str !== '') {\n colors.ansiRegex.lastIndex = 0;\n return str.replace(colors.ansiRegex, '');\n }\n return '';\n });\n\n colors.alias('noop', str => str);\n colors.none = colors.clear = colors.noop;\n\n colors.stripColor = colors.unstyle;\n colors.symbols = require('./symbols');\n colors.define = define;\n return colors;\n};\n\nmodule.exports = create();\nmodule.exports.create = create;\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\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' && isFinite(val)) {\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|weeks?|w|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 'weeks':\n case 'week':\n case 'w':\n return n * w;\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 var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= 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 var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => enableOverride === null ? createDebug.enabled(namespace) : enableOverride,\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\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\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar bent = require('bent');\nvar promiseRetry = require('promise-retry');\nvar ansi_colors = require('ansi-colors');\nvar debug = require('debug');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar bent__default = /*#__PURE__*/_interopDefaultLegacy(bent);\nvar promiseRetry__default = /*#__PURE__*/_interopDefaultLegacy(promiseRetry);\nvar ansi_colors__default = /*#__PURE__*/_interopDefaultLegacy(ansi_colors);\nvar debug__default = /*#__PURE__*/_interopDefaultLegacy(debug);\n\nconst { unstyle } = ansi_colors__default['default'];\n\nconst log = debug__default['default']('reveal-compiler-explorer:compiler-explorer-directives');\n\n// https://github.com/highlightjs/highlight.js/blob/master/SUPPORTED_LANGUAGES.md\nconst langAliases = {\n 'cpp': 'c++', 'hpp': 'c++', 'cc': 'c++', 'hh': 'c++', 'h++': 'c++', 'cxx': 'c++', 'hxx': 'c++',\n 'ada': 'ada',\n 'x86asm': 'assembly',\n 'h': 'c',\n 'f90': 'fortran', 'f95': 'fortran',\n 'golang': 'go',\n 'hs': 'haskell',\n 'nimrod': 'nim',\n 'ml': 'ocaml',\n 'py': 'python', 'gyp': 'python',\n 'rs': 'rust'\n};\n\nconst GODBOLT_URL = 'https://godbolt.org';\nconst get = bent__default['default'](`${GODBOLT_URL}/api`, 'GET', 'json', { 'Accept': 'application/json' });\nconst post = bent__default['default'](`${GODBOLT_URL}/api`, 'POST', 'json');\n\nconst langConfig = (() => {\n let langConfig;\n return async function () {\n if (!langConfig) {\n const predefined = new Map([\n ['c++', {\n options: '-O2 -march=haswell -Wall -Wextra -pedantic -Wno-unused-variable -Wno-unused-parameter',\n mainRegex: /\\bmain\\(/\n }],\n ['d', {\n mainRegex: /\\bmain\\(/\n }]\n ]);\n log(`reading languages from ${GODBOLT_URL}`);\n const languages = await get('/languages?fields=id,defaultCompiler');\n langConfig = new Map(languages\n .map(({ id, defaultCompiler }) => [id, Object.assign({ 'compiler': defaultCompiler }, predefined.get(id))]));\n log('default language configuration is %o', langConfig);\n }\n return langConfig;\n };\n})();\n\nconst defaultConfig = {\n runMain: true,\n useLocal: false,\n localPort: 10240,\n directives: []\n};\n\nconst directive = pattern => new RegExp(`^\\\\s*\\\\/\\\\/\\\\/\\\\s*${pattern}$`);\n\nconst builtinDirectives = [\n ['compiler=(.*)', (matches, info) => matches.slice(1).forEach(match => {\n info.compiler = match;\n })],\n ['options=(.*)', (matches, info) => matches.slice(1).forEach(match => info.options = match)],\n ['options\\\\+=(.*)', (matches, info) => matches.slice(1).forEach(match => info.options += ' ' + match)],\n ['libs=(\\\\w+:\\\\w+(?:,\\\\w+:\\\\w+)*)', (matches, info) => matches.slice(1).forEach(match => {\n [...match.matchAll(/(\\w+):(\\w+)/g)].forEach(match => {\n info.libs.push({\n name: match[1],\n ver: match[2]\n });\n });\n })],\n ['(no)?execute', (matches, info) => matches.slice(1).forEach(match => info.execute = !match)],\n ['external', (matches, info) => matches.forEach(_ => info.forceExternal = true)],\n ['(un)?hide', (matches, info) => matches.slice(1).forEach(match => info.hide = !match)],\n];\n\nconst parseCode = async (code, language, config) => {\n log('parsing %o, language %s, config %o', code, language, config);\n language = langAliases[language] || language;\n const lg = await langConfig();\n if (!lg.has(language)) {\n log('language %s is not supported', language);\n return null;\n }\n\n config = Object.assign({}, defaultConfig, lg.get(language), config);\n const directives = builtinDirectives.concat(config.directives)\n .map(([regex, action]) => [directive(regex), action]);\n const lines = unescape(code).split('\\n');\n const matches = (line, regex) => line.match(regex) || [];\n\n const info = {\n source: [],\n displaySource: [],\n language: language,\n compiler: config.compiler,\n options: config.options || '',\n libs: config.libs || [],\n forceExternal: false,\n hide: false\n };\n\n for (const line of lines) {\n if (line.match(directive('.*'))) {\n directives.forEach(([regex, action]) => action(matches(line, regex), info));\n } else {\n if (config.runMain\n && config.mainRegex\n && line.match(config.mainRegex)\n && !info.hasOwnProperty('execute')) {\n info.execute = true;\n }\n info.source.push(line);\n if (!info.hide)\n info.displaySource.push(line);\n }\n }\n\n info.baseUrl = (config.useLocal && !info.forceExternal)\n ? `http://localhost:${config.localPort}`\n : GODBOLT_URL;\n info.source = info.source.join('\\n');\n info.displaySource = info.displaySource.join('\\n');\n delete info.hide;\n delete info.forceExternal;\n\n log('parse result %o', info);\n return info;\n};\n\nconst displayUrl = (info) => {\n let content = [\n {\n type: 'component',\n componentName: 'codeEditor',\n componentState: {\n id: 1,\n source: info.source,\n options: { compileOnChange: true, colouriseAsm: true },\n fontScale: 2.5\n }\n },\n {\n type: 'column',\n content: [{\n type: 'component',\n componentName: 'compiler',\n componentState: {\n source: 1,\n lang: info.language,\n compiler: info.compiler,\n options: info.options,\n libs: info.libs,\n fontScale: 3.0,\n filters: {\n commentOnly: true,\n directives: true,\n intel: true,\n labels: true,\n trim: true,\n execute: info.execute\n }\n }\n }, {\n type: 'component',\n componentName: 'output',\n componentState: {\n compiler: 1\n }\n }\n ]\n }\n ];\n let obj = {\n version: 4,\n content: [{ type: 'row', content: content }],\n settings: {\n theme: 'dark'\n }\n };\n\n let ceFragment = encodeURIComponent(JSON.stringify(obj));\n\n return `${info.baseUrl}/#${ceFragment}`;\n};\n\nclass CompileError extends Error {\n constructor(code, message) {\n super(message);\n this.name = 'CompileError';\n this.code = code;\n }\n}\n\nconst compile = async (info, retryOptions = {}) => {\n log('compiling %o', info);\n const data = {\n source: info.source,\n options: {\n userArguments: info.options || '',\n filters: {\n execute: info.execute || false\n },\n libraries: (info.libs || []).map(function (lib) {\n return {\n id: lib.name,\n version: lib.ver\n };\n })\n }\n };\n const response = await promiseRetry__default['default'](retryOptions, async (retry) => {\n try {\n return await post(`/compiler/${info.compiler}/compile`, data);\n }\n catch (err) {\n log('compile error %o', err);\n if (Math.trunc(err.statusCode / 100) === 5) {\n log('retrying');\n retry(err);\n }\n\n throw err;\n }\n });\n\n log('response is %o', response);\n\n const text = (stream) => unstyle(stream.stderr.concat(stream.stdout).map(x => x.text).join('\\n'));\n\n if (response.code === 0) {\n if (info.execute) {\n if (response.execResult.buildResult.code === 0) {\n return text(response.execResult);\n }\n\n throw new CompileError(response.execResult.buildResult.code,\n text(response.execResult.buildResult));\n }\n\n return text(response);\n }\n\n throw new CompileError(response.code, text(response));\n};\n\nexports.CompileError = CompileError;\nexports.compile = compile;\nexports.displayUrl = displayUrl;\nexports.parseCode = parseCode;\n//# sourceMappingURL=compiler-explorer-directives.cjs.map\n","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n 'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n var i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function() {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^Object.\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || (merge && dest[keys[i]] === undefined)) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.addEventListener(type, handler, false);\n });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.removeEventListener(type, handler, false);\n });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n return i;\n }\n i++;\n }\n return -1;\n }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = (prefix) ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n\n}\n\nInput.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function() { },\n\n /**\n * bind the events\n */\n init: function() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n\n /**\n * unbind the events\n */\n destroy: function() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity, velocityX, velocityY, direction;\n\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n var x = 0, y = 0, i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n\n return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n});\n\nvar POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n\n Input.apply(this, arguments);\n\n this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n\n Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n\n Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function(touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n changedTargetTouches\n ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n Input.apply(this, arguments);\n\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n\n this.primaryTouch = null;\n this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n\n this.callback(manager, inputEvent, inputData);\n },\n\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n});\n\nfunction recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n}\n\nfunction setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {x: touch.clientX, y: touch.clientY};\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function() {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n}\n\nfunction isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n}\n\nTouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function(value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n\n /**\n * just re-set the touchAction value\n */\n update: function() {\n this.set(this.manager.options.touchAction);\n },\n\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function() {\n var actions = [];\n each(this.manager.recognizers, function(recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone ||\n (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n (hasPanX && direction & DIRECTION_VERTICAL)) {\n return this.preventSrc(srcEvent);\n }\n },\n\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n\n this.id = uniqueId();\n\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n\n this.state = STATE_POSSIBLE;\n\n this.simultaneous = {};\n this.requireFail = [];\n}\n\nRecognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function(options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function() {\n return this.requireFail.length > 0;\n },\n\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function(input) {\n var self = this;\n var state = this.state;\n\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function() {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function(inputData) { }, // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function() { },\n\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function(input) {\n var state = this.state;\n var eventType = input.eventType;\n\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n\n this.pX = null;\n this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n\n getTouchAction: function() {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n\n directionTest: function(input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n\n attrTest: function(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) &&\n (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n },\n\n emit: function(input) {\n\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n\n var direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n\n emit: function(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n Recognizer.apply(this, arguments);\n\n this._timer = null;\n this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251, // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_AUTO];\n },\n\n process: function(input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && (input.eventType & INPUT_END)) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n\n getTouchAction: function() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n\n attrTest: function(input) {\n var direction = this.options.direction;\n var velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return this._super.attrTest.call(this, input) &&\n direction & input.offsetDirection &&\n input.distance > this.options.threshold &&\n input.maxPointers == this.options.pointers &&\n abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n\n emit: function(input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n\n this._timer = null;\n this._input = null;\n this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300, // max time between the multi-tap taps\n time: 250, // max time of the pointer to be down (like finger on the screen)\n threshold: 9, // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_MANIPULATION];\n },\n\n process: function(input) {\n var options = this.options;\n\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n\n this.reset();\n\n if ((input.eventType & INPUT_START) && (this.count === 0)) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n\n var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n\n failTimeout: function() {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function() {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {enable: false}],\n [PinchRecognizer, {enable: false}, ['rotate']],\n [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n [TapRecognizer],\n [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n [PressRecognizer]\n ],\n\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n\n this.options.inputTarget = this.options.inputTarget || element;\n\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n\n toggleCssProps(this, true);\n\n each(this.options.recognizers, function(item) {\n var recognizer = this.add(new (item[0])(item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n}\n\nManager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function(options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n curRecognizer = session.curRecognizer = null;\n }\n\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && ( // 1\n !curRecognizer || recognizer == curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) { // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function(recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n\n this.touchAction.update();\n return recognizer;\n },\n\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function(recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n },\n\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function(events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function(events, handler) {\n if (events === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n data.preventDefault = function() {\n data.srcEvent.preventDefault();\n };\n\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function() {\n this.element && toggleCssProps(this, false);\n\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function(value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n// style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n define(function() {\n return Hammer;\n });\n} else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n} else {\n window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","const UA = navigator.userAgent;\nconst testElement = document.createElement( 'div' );\n\nexport const isMobile = /(iphone|ipod|ipad|android)/gi.test( UA ) ||\n\t\t\t\t\t\t( navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 ); // iPadOS\n\nexport const isChrome = /chrome/i.test( UA ) && !/edge/i.test( UA );\n\nexport const isAndroid = /android/gi.test( UA );\n\n// Flags if we should use zoom instead of transform to scale\n// up slides. Zoom produces crisper results but has a lot of\n// xbrowser quirks so we only use it in whitelisted browsers.\nexport const supportsZoom = 'zoom' in testElement.style && !isMobile &&\n\t\t\t\t( isChrome || /Version\\/[\\d\\.]+.*Safari/.test( UA ) );","import { parseCode, displayUrl, compile } from 'compiler-explorer-directives';\nimport Hammer from 'hammerjs';\nimport { isMobile } from 'reveal.js/js/utils/device';\n\nasync function parseBlock(block, config) {\n const lang = block.classList.length > 0 ? block.classList[0].replace('language-', '') : config.language;\n // highlighting line numbers removes line break so we need to restore them\n const code = block.hasAttribute( 'data-line-numbers' ) && block.classList.contains('hljs')\n ? Array.from(block.querySelectorAll('tr').values()).map(v => v.textContent).join('\\n')\n : block.textContent;\n const info = await parseCode(code, lang, config);\n if (!info) {\n return;\n }\n const url = displayUrl(info);\n\n if (isMobile) {\n delete Hammer.defaults.cssProps.userSelect; // keep default behavior\n var hammer = new Hammer.Manager(block.parentNode);\n hammer.add(new Hammer.Tap({ event: 'doubletap', taps: 2 }));\n hammer.on('doubletap', e => {\n window.open(url, 'ce');\n });\n } else {\n block.parentNode.onclick = (evt) => {\n if (evt.ctrlKey || evt.metaKey) {\n window.open(url, 'ce');\n }\n };\n }\n\n block.textContent = info.displaySource;\n}\n\nexport default {\n id: 'compiler-explorer',\n init: (reveal) => {\n const highlighPlugin = reveal.getPlugin('highlight');\n const highlightConfig = reveal.getConfig().highlight || {};\n const highlightOnLoad = typeof highlightConfig.highlightOnLoad === 'boolean' ? highlightConfig.highlightOnLoad : true;\n const config = reveal.getConfig().compilerExplorer;\n\n return Promise.all([].slice.call(reveal.getRevealElement().querySelectorAll('pre code')).map(async (block) => {\n await parseBlock(block, config);\n if (highlightOnLoad) {\n highlighPlugin.highlightBlock(block);\n }\n }));\n },\n compile: compile\n};\n"],"names":["RetryOperation","require$$0","retry","errcode","global","browser","bent","promiseRetry","ansi_colors","debug","undefined","define","parseCode","displayUrl","Hammer","hammer","compile"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"reveal-compiler-explorer.mjs","sources":["../../../node_modules/bent/src/core.js","../../../node_modules/bent/src/browser.js","../../compiler-explorer-directives/node_modules/err-code/index.js","../../compiler-explorer-directives/node_modules/retry/lib/retry_operation.js","../../compiler-explorer-directives/node_modules/retry/lib/retry.js","../../compiler-explorer-directives/node_modules/retry/index.js","../../compiler-explorer-directives/node_modules/promise-retry/index.js","../../../node_modules/rollup-plugin-node-globals/src/global.js","../../../node_modules/process-es6/browser.js","../../../node_modules/ansi-colors/symbols.js","../../../node_modules/ansi-colors/index.js","../../../node_modules/ms/index.js","../../compiler-explorer-directives/node_modules/debug/src/common.js","../../compiler-explorer-directives/node_modules/debug/src/browser.js","../../compiler-explorer-directives/dist/compiler-explorer-directives.cjs","../../../node_modules/hammerjs/hammer.js","../../../node_modules/reveal.js/js/utils/device.js","../src/reveal-compiler-explorer.js"],"sourcesContent":["'use strict'\nconst encodings = new Set(['json', 'buffer', 'string'])\n\nmodule.exports = mkrequest => (...args) => {\n const statusCodes = new Set()\n let method\n let encoding\n let headers\n let baseurl = ''\n\n args.forEach(arg => {\n if (typeof arg === 'string') {\n if (arg.toUpperCase() === arg) {\n if (method) {\n const msg = `Can't set method to ${arg}, already set to ${method}.`\n throw new Error(msg)\n } else {\n method = arg\n }\n } else if (arg.startsWith('http:') || arg.startsWith('https:')) {\n baseurl = arg\n } else {\n if (encodings.has(arg)) {\n encoding = arg\n } else {\n throw new Error(`Unknown encoding, ${arg}`)\n }\n }\n } else if (typeof arg === 'number') {\n statusCodes.add(arg)\n } else if (typeof arg === 'object') {\n if (Array.isArray(arg) || arg instanceof Set) {\n arg.forEach(code => statusCodes.add(code))\n } else {\n if (headers) {\n throw new Error('Cannot set headers twice.')\n }\n headers = arg\n }\n } else {\n throw new Error(`Unknown type: ${typeof arg}`)\n }\n })\n\n if (!method) method = 'GET'\n if (statusCodes.size === 0) {\n statusCodes.add(200)\n }\n\n return mkrequest(statusCodes, method, encoding, headers, baseurl)\n}\n","'use strict'\n/* global fetch, btoa, Headers */\nconst core = require('./core')\n\nclass StatusError extends Error {\n constructor (res, ...params) {\n super(...params)\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, StatusError)\n }\n\n this.name = 'StatusError'\n this.message = res.statusMessage\n this.statusCode = res.status\n this.res = res\n this.json = res.json.bind(res)\n this.text = res.text.bind(res)\n this.arrayBuffer = res.arrayBuffer.bind(res)\n let buffer\n const get = () => {\n if (!buffer) buffer = this.arrayBuffer()\n return buffer\n }\n Object.defineProperty(this, 'responseBody', { get })\n // match Node.js headers object\n this.headers = {}\n for (const [key, value] of res.headers.entries()) {\n this.headers[key.toLowerCase()] = value\n }\n }\n}\n\nconst mkrequest = (statusCodes, method, encoding, headers, baseurl) => async (_url, body, _headers = {}) => {\n _url = baseurl + (_url || '')\n let parsed = new URL(_url)\n\n if (!headers) headers = {}\n if (parsed.username) {\n headers.Authorization = 'Basic ' + btoa(parsed.username + ':' + parsed.password)\n parsed = new URL(parsed.protocol + '//' + parsed.host + parsed.pathname + parsed.search)\n }\n if (parsed.protocol !== 'https:' && parsed.protocol !== 'http:') {\n throw new Error(`Unknown protocol, ${parsed.protocol}`)\n }\n\n if (body) {\n if (body instanceof ArrayBuffer ||\n ArrayBuffer.isView(body) ||\n typeof body === 'string'\n ) {\n // noop\n } else if (typeof body === 'object') {\n body = JSON.stringify(body)\n headers['Content-Type'] = 'application/json'\n } else {\n throw new Error('Unknown body type.')\n }\n }\n\n _headers = new Headers({ ...(headers || {}), ..._headers })\n\n const resp = await fetch(parsed, { method, headers: _headers, body })\n resp.statusCode = resp.status\n\n if (!statusCodes.has(resp.status)) {\n throw new StatusError(resp)\n }\n\n if (encoding === 'json') return resp.json()\n else if (encoding === 'buffer') return resp.arrayBuffer()\n else if (encoding === 'string') return resp.text()\n else return resp\n}\n\nmodule.exports = core(mkrequest)\n","'use strict';\n\nfunction assign(obj, props) {\n for (const key in props) {\n Object.defineProperty(obj, key, {\n value: props[key],\n enumerable: true,\n configurable: true,\n });\n }\n\n return obj;\n}\n\nfunction createError(err, code, props) {\n if (!err || typeof err === 'string') {\n throw new TypeError('Please pass an Error to err-code');\n }\n\n if (!props) {\n props = {};\n }\n\n if (typeof code === 'object') {\n props = code;\n code = undefined;\n }\n\n if (code != null) {\n props.code = code;\n }\n\n try {\n return assign(err, props);\n } catch (_) {\n props.message = err.message;\n props.stack = err.stack;\n\n const ErrClass = function () {};\n\n ErrClass.prototype = Object.create(Object.getPrototypeOf(err));\n\n return assign(new ErrClass(), props);\n }\n}\n\nmodule.exports = createError;\n","function RetryOperation(timeouts, options) {\n // Compatibility for the old (timeouts, retryForever) signature\n if (typeof options === 'boolean') {\n options = { forever: options };\n }\n\n this._originalTimeouts = JSON.parse(JSON.stringify(timeouts));\n this._timeouts = timeouts;\n this._options = options || {};\n this._maxRetryTime = options && options.maxRetryTime || Infinity;\n this._fn = null;\n this._errors = [];\n this._attempts = 1;\n this._operationTimeout = null;\n this._operationTimeoutCb = null;\n this._timeout = null;\n this._operationStart = null;\n\n if (this._options.forever) {\n this._cachedTimeouts = this._timeouts.slice(0);\n }\n}\nmodule.exports = RetryOperation;\n\nRetryOperation.prototype.reset = function() {\n this._attempts = 1;\n this._timeouts = this._originalTimeouts;\n}\n\nRetryOperation.prototype.stop = function() {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n\n this._timeouts = [];\n this._cachedTimeouts = null;\n};\n\nRetryOperation.prototype.retry = function(err) {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n\n if (!err) {\n return false;\n }\n var currentTime = new Date().getTime();\n if (err && currentTime - this._operationStart >= this._maxRetryTime) {\n this._errors.unshift(new Error('RetryOperation timeout occurred'));\n return false;\n }\n\n this._errors.push(err);\n\n var timeout = this._timeouts.shift();\n if (timeout === undefined) {\n if (this._cachedTimeouts) {\n // retry forever, only keep last error\n this._errors.splice(this._errors.length - 1, this._errors.length);\n this._timeouts = this._cachedTimeouts.slice(0);\n timeout = this._timeouts.shift();\n } else {\n return false;\n }\n }\n\n var self = this;\n var timer = setTimeout(function() {\n self._attempts++;\n\n if (self._operationTimeoutCb) {\n self._timeout = setTimeout(function() {\n self._operationTimeoutCb(self._attempts);\n }, self._operationTimeout);\n\n if (self._options.unref) {\n self._timeout.unref();\n }\n }\n\n self._fn(self._attempts);\n }, timeout);\n\n if (this._options.unref) {\n timer.unref();\n }\n\n return true;\n};\n\nRetryOperation.prototype.attempt = function(fn, timeoutOps) {\n this._fn = fn;\n\n if (timeoutOps) {\n if (timeoutOps.timeout) {\n this._operationTimeout = timeoutOps.timeout;\n }\n if (timeoutOps.cb) {\n this._operationTimeoutCb = timeoutOps.cb;\n }\n }\n\n var self = this;\n if (this._operationTimeoutCb) {\n this._timeout = setTimeout(function() {\n self._operationTimeoutCb();\n }, self._operationTimeout);\n }\n\n this._operationStart = new Date().getTime();\n\n this._fn(this._attempts);\n};\n\nRetryOperation.prototype.try = function(fn) {\n console.log('Using RetryOperation.try() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = function(fn) {\n console.log('Using RetryOperation.start() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = RetryOperation.prototype.try;\n\nRetryOperation.prototype.errors = function() {\n return this._errors;\n};\n\nRetryOperation.prototype.attempts = function() {\n return this._attempts;\n};\n\nRetryOperation.prototype.mainError = function() {\n if (this._errors.length === 0) {\n return null;\n }\n\n var counts = {};\n var mainError = null;\n var mainErrorCount = 0;\n\n for (var i = 0; i < this._errors.length; i++) {\n var error = this._errors[i];\n var message = error.message;\n var count = (counts[message] || 0) + 1;\n\n counts[message] = count;\n\n if (count >= mainErrorCount) {\n mainError = error;\n mainErrorCount = count;\n }\n }\n\n return mainError;\n};\n","var RetryOperation = require('./retry_operation');\n\nexports.operation = function(options) {\n var timeouts = exports.timeouts(options);\n return new RetryOperation(timeouts, {\n forever: options && options.forever,\n unref: options && options.unref,\n maxRetryTime: options && options.maxRetryTime\n });\n};\n\nexports.timeouts = function(options) {\n if (options instanceof Array) {\n return [].concat(options);\n }\n\n var opts = {\n retries: 10,\n factor: 2,\n minTimeout: 1 * 1000,\n maxTimeout: Infinity,\n randomize: false\n };\n for (var key in options) {\n opts[key] = options[key];\n }\n\n if (opts.minTimeout > opts.maxTimeout) {\n throw new Error('minTimeout is greater than maxTimeout');\n }\n\n var timeouts = [];\n for (var i = 0; i < opts.retries; i++) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n if (options && options.forever && !timeouts.length) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n // sort the array numerically ascending\n timeouts.sort(function(a,b) {\n return a - b;\n });\n\n return timeouts;\n};\n\nexports.createTimeout = function(attempt, opts) {\n var random = (opts.randomize)\n ? (Math.random() + 1)\n : 1;\n\n var timeout = Math.round(random * opts.minTimeout * Math.pow(opts.factor, attempt));\n timeout = Math.min(timeout, opts.maxTimeout);\n\n return timeout;\n};\n\nexports.wrap = function(obj, options, methods) {\n if (options instanceof Array) {\n methods = options;\n options = null;\n }\n\n if (!methods) {\n methods = [];\n for (var key in obj) {\n if (typeof obj[key] === 'function') {\n methods.push(key);\n }\n }\n }\n\n for (var i = 0; i < methods.length; i++) {\n var method = methods[i];\n var original = obj[method];\n\n obj[method] = function retryWrapper(original) {\n var op = exports.operation(options);\n var args = Array.prototype.slice.call(arguments, 1);\n var callback = args.pop();\n\n args.push(function(err) {\n if (op.retry(err)) {\n return;\n }\n if (err) {\n arguments[0] = op.mainError();\n }\n callback.apply(this, arguments);\n });\n\n op.attempt(function() {\n original.apply(obj, args);\n });\n }.bind(obj, original);\n obj[method].options = options;\n }\n};\n","module.exports = require('./lib/retry');","'use strict';\n\nvar errcode = require('err-code');\nvar retry = require('retry');\n\nvar hasOwn = Object.prototype.hasOwnProperty;\n\nfunction isRetryError(err) {\n return err && err.code === 'EPROMISERETRY' && hasOwn.call(err, 'retried');\n}\n\nfunction promiseRetry(fn, options) {\n var temp;\n var operation;\n\n if (typeof fn === 'object' && typeof options === 'function') {\n // Swap options and fn when using alternate signature (options, fn)\n temp = options;\n options = fn;\n fn = temp;\n }\n\n operation = retry.operation(options);\n\n return new Promise(function (resolve, reject) {\n operation.attempt(function (number) {\n Promise.resolve()\n .then(function () {\n return fn(function (err) {\n if (isRetryError(err)) {\n err = err.retried;\n }\n\n throw errcode(new Error('Retrying'), 'EPROMISERETRY', { retried: err });\n }, number);\n })\n .then(resolve, function (err) {\n if (isRetryError(err)) {\n err = err.retried;\n\n if (operation.retry(err || new Error())) {\n return;\n }\n }\n\n reject(err);\n });\n });\n });\n}\n\nmodule.exports = promiseRetry;\n","export default (typeof global !== \"undefined\" ? global :\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window : {});\n","// shim for using process in browser\n// based off https://github.com/defunctzombie/node-process/blob/master/browser.js\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}\nvar cachedSetTimeout = defaultSetTimout;\nvar cachedClearTimeout = defaultClearTimeout;\nif (typeof global.setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n}\nif (typeof global.clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\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}\nexport function nextTick(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// 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};\nexport var title = 'browser';\nexport var platform = 'browser';\nexport var browser = true;\nexport var env = {};\nexport var argv = [];\nexport var version = ''; // empty string to avoid regexp issues\nexport var versions = {};\nexport var release = {};\nexport var config = {};\n\nfunction noop() {}\n\nexport var on = noop;\nexport var addListener = noop;\nexport var once = noop;\nexport var off = noop;\nexport var removeListener = noop;\nexport var removeAllListeners = noop;\nexport var emit = noop;\n\nexport function binding(name) {\n throw new Error('process.binding is not supported');\n}\n\nexport function cwd () { return '/' }\nexport function chdir (dir) {\n throw new Error('process.chdir is not supported');\n};\nexport function umask() { return 0; }\n\n// from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js\nvar performance = global.performance || {}\nvar performanceNow =\n performance.now ||\n performance.mozNow ||\n performance.msNow ||\n performance.oNow ||\n performance.webkitNow ||\n function(){ return (new Date()).getTime() }\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nexport function hrtime(previousTimestamp){\n var clocktime = performanceNow.call(performance)*1e-3\n var seconds = Math.floor(clocktime)\n var nanoseconds = Math.floor((clocktime%1)*1e9)\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0]\n nanoseconds = nanoseconds - previousTimestamp[1]\n if (nanoseconds<0) {\n seconds--\n nanoseconds += 1e9\n }\n }\n return [seconds,nanoseconds]\n}\n\nvar startTime = new Date();\nexport function uptime() {\n var currentTime = new Date();\n var dif = currentTime - startTime;\n return dif / 1000;\n}\n\nexport default {\n nextTick: nextTick,\n title: title,\n browser: browser,\n env: env,\n argv: argv,\n version: version,\n versions: versions,\n on: on,\n addListener: addListener,\n once: once,\n off: off,\n removeListener: removeListener,\n removeAllListeners: removeAllListeners,\n emit: emit,\n binding: binding,\n cwd: cwd,\n chdir: chdir,\n umask: umask,\n hrtime: hrtime,\n platform: platform,\n release: release,\n config: config,\n uptime: uptime\n};\n","'use strict';\n\nconst isHyper = process.env.TERM_PROGRAM === 'Hyper';\nconst isWindows = process.platform === 'win32';\nconst isLinux = process.platform === 'linux';\n\nconst common = {\n ballotDisabled: '☒',\n ballotOff: '☐',\n ballotOn: '☑',\n bullet: '•',\n bulletWhite: '◦',\n fullBlock: '█',\n heart: '❤',\n identicalTo: '≡',\n line: '─',\n mark: '※',\n middot: '·',\n minus: '-',\n multiplication: '×',\n obelus: '÷',\n pencilDownRight: '✎',\n pencilRight: '✏',\n pencilUpRight: '✐',\n percent: '%',\n pilcrow2: '❡',\n pilcrow: '¶',\n plusMinus: '±',\n section: '§',\n starsOff: '☆',\n starsOn: '★',\n upDownArrow: '↕'\n};\n\nconst windows = Object.assign({}, common, {\n check: '√',\n cross: '×',\n ellipsisLarge: '...',\n ellipsis: '...',\n info: 'i',\n question: '?',\n questionSmall: '?',\n pointer: '>',\n pointerSmall: '»',\n radioOff: '( )',\n radioOn: '(*)',\n warning: '‼'\n});\n\nconst other = Object.assign({}, common, {\n ballotCross: '✘',\n check: '✔',\n cross: '✖',\n ellipsisLarge: '⋯',\n ellipsis: '…',\n info: 'ℹ',\n question: '?',\n questionFull: '?',\n questionSmall: '﹖',\n pointer: isLinux ? '▸' : '❯',\n pointerSmall: isLinux ? '‣' : '›',\n radioOff: '◯',\n radioOn: '◉',\n warning: '⚠'\n});\n\nmodule.exports = (isWindows && !isHyper) ? windows : other;\nReflect.defineProperty(module.exports, 'common', { enumerable: false, value: common });\nReflect.defineProperty(module.exports, 'windows', { enumerable: false, value: windows });\nReflect.defineProperty(module.exports, 'other', { enumerable: false, value: other });\n","'use strict';\n\nconst isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\nconst identity = val => val;\n\n/* eslint-disable no-control-regex */\n// this is a modified version of https://github.com/chalk/ansi-regex (MIT License)\nconst ANSI_REGEX = /[\\u001b\\u009b][[\\]#;?()]*(?:(?:(?:[^\\W_]*;?[^\\W_]*)\\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g;\n\nconst create = () => {\n const colors = { enabled: true, visible: true, styles: {}, keys: {} };\n\n if ('FORCE_COLOR' in process.env) {\n colors.enabled = process.env.FORCE_COLOR !== '0';\n }\n\n const ansi = style => {\n let open = style.open = `\\u001b[${style.codes[0]}m`;\n let close = style.close = `\\u001b[${style.codes[1]}m`;\n let regex = style.regex = new RegExp(`\\\\u001b\\\\[${style.codes[1]}m`, 'g');\n style.wrap = (input, newline) => {\n if (input.includes(close)) input = input.replace(regex, close + open);\n let output = open + input + close;\n // see https://github.com/chalk/chalk/pull/92, thanks to the\n // chalk contributors for this fix. However, we've confirmed that\n // this issue is also present in Windows terminals\n return newline ? output.replace(/\\r*\\n/g, `${close}$&${open}`) : output;\n };\n return style;\n };\n\n const wrap = (style, input, newline) => {\n return typeof style === 'function' ? style(input) : style.wrap(input, newline);\n };\n\n const style = (input, stack) => {\n if (input === '' || input == null) return '';\n if (colors.enabled === false) return input;\n if (colors.visible === false) return '';\n let str = '' + input;\n let nl = str.includes('\\n');\n let n = stack.length;\n if (n > 0 && stack.includes('unstyle')) {\n stack = [...new Set(['unstyle', ...stack])].reverse();\n }\n while (n-- > 0) str = wrap(colors.styles[stack[n]], str, nl);\n return str;\n };\n\n const define = (name, codes, type) => {\n colors.styles[name] = ansi({ name, codes });\n let keys = colors.keys[type] || (colors.keys[type] = []);\n keys.push(name);\n\n Reflect.defineProperty(colors, name, {\n configurable: true,\n enumerable: true,\n set(value) {\n colors.alias(name, value);\n },\n get() {\n let color = input => style(input, color.stack);\n Reflect.setPrototypeOf(color, colors);\n color.stack = this.stack ? this.stack.concat(name) : [name];\n return color;\n }\n });\n };\n\n define('reset', [0, 0], 'modifier');\n define('bold', [1, 22], 'modifier');\n define('dim', [2, 22], 'modifier');\n define('italic', [3, 23], 'modifier');\n define('underline', [4, 24], 'modifier');\n define('inverse', [7, 27], 'modifier');\n define('hidden', [8, 28], 'modifier');\n define('strikethrough', [9, 29], 'modifier');\n\n define('black', [30, 39], 'color');\n define('red', [31, 39], 'color');\n define('green', [32, 39], 'color');\n define('yellow', [33, 39], 'color');\n define('blue', [34, 39], 'color');\n define('magenta', [35, 39], 'color');\n define('cyan', [36, 39], 'color');\n define('white', [37, 39], 'color');\n define('gray', [90, 39], 'color');\n define('grey', [90, 39], 'color');\n\n define('bgBlack', [40, 49], 'bg');\n define('bgRed', [41, 49], 'bg');\n define('bgGreen', [42, 49], 'bg');\n define('bgYellow', [43, 49], 'bg');\n define('bgBlue', [44, 49], 'bg');\n define('bgMagenta', [45, 49], 'bg');\n define('bgCyan', [46, 49], 'bg');\n define('bgWhite', [47, 49], 'bg');\n\n define('blackBright', [90, 39], 'bright');\n define('redBright', [91, 39], 'bright');\n define('greenBright', [92, 39], 'bright');\n define('yellowBright', [93, 39], 'bright');\n define('blueBright', [94, 39], 'bright');\n define('magentaBright', [95, 39], 'bright');\n define('cyanBright', [96, 39], 'bright');\n define('whiteBright', [97, 39], 'bright');\n\n define('bgBlackBright', [100, 49], 'bgBright');\n define('bgRedBright', [101, 49], 'bgBright');\n define('bgGreenBright', [102, 49], 'bgBright');\n define('bgYellowBright', [103, 49], 'bgBright');\n define('bgBlueBright', [104, 49], 'bgBright');\n define('bgMagentaBright', [105, 49], 'bgBright');\n define('bgCyanBright', [106, 49], 'bgBright');\n define('bgWhiteBright', [107, 49], 'bgBright');\n\n colors.ansiRegex = ANSI_REGEX;\n colors.hasColor = colors.hasAnsi = str => {\n colors.ansiRegex.lastIndex = 0;\n return typeof str === 'string' && str !== '' && colors.ansiRegex.test(str);\n };\n\n colors.alias = (name, color) => {\n let fn = typeof color === 'string' ? colors[color] : color;\n\n if (typeof fn !== 'function') {\n throw new TypeError('Expected alias to be the name of an existing color (string) or a function');\n }\n\n if (!fn.stack) {\n Reflect.defineProperty(fn, 'name', { value: name });\n colors.styles[name] = fn;\n fn.stack = [name];\n }\n\n Reflect.defineProperty(colors, name, {\n configurable: true,\n enumerable: true,\n set(value) {\n colors.alias(name, value);\n },\n get() {\n let color = input => style(input, color.stack);\n Reflect.setPrototypeOf(color, colors);\n color.stack = this.stack ? this.stack.concat(fn.stack) : fn.stack;\n return color;\n }\n });\n };\n\n colors.theme = custom => {\n if (!isObject(custom)) throw new TypeError('Expected theme to be an object');\n for (let name of Object.keys(custom)) {\n colors.alias(name, custom[name]);\n }\n return colors;\n };\n\n colors.alias('unstyle', str => {\n if (typeof str === 'string' && str !== '') {\n colors.ansiRegex.lastIndex = 0;\n return str.replace(colors.ansiRegex, '');\n }\n return '';\n });\n\n colors.alias('noop', str => str);\n colors.none = colors.clear = colors.noop;\n\n colors.stripColor = colors.unstyle;\n colors.symbols = require('./symbols');\n colors.define = define;\n return colors;\n};\n\nmodule.exports = create();\nmodule.exports.create = create;\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\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' && isFinite(val)) {\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|weeks?|w|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 'weeks':\n case 'week':\n case 'w':\n return n * w;\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 var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= 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 var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => enableOverride === null ? createDebug.enabled(namespace) : enableOverride,\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\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\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar bent = require('bent');\nvar promiseRetry = require('promise-retry');\nvar ansi_colors = require('ansi-colors');\nvar debug = require('debug');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar bent__default = /*#__PURE__*/_interopDefaultLegacy(bent);\nvar promiseRetry__default = /*#__PURE__*/_interopDefaultLegacy(promiseRetry);\nvar ansi_colors__default = /*#__PURE__*/_interopDefaultLegacy(ansi_colors);\nvar debug__default = /*#__PURE__*/_interopDefaultLegacy(debug);\n\nconst { unstyle } = ansi_colors__default['default'];\n\nconst log = debug__default['default']('reveal-compiler-explorer:compiler-explorer-directives');\n\n// https://github.com/highlightjs/highlight.js/blob/master/SUPPORTED_LANGUAGES.md\nconst langAliases = {\n 'cpp': 'c++', 'hpp': 'c++', 'cc': 'c++', 'hh': 'c++', 'h++': 'c++', 'cxx': 'c++', 'hxx': 'c++',\n 'ada': 'ada',\n 'x86asm': 'assembly',\n 'h': 'c',\n 'f90': 'fortran', 'f95': 'fortran',\n 'golang': 'go',\n 'hs': 'haskell',\n 'nimrod': 'nim',\n 'ml': 'ocaml',\n 'py': 'python', 'gyp': 'python',\n 'rs': 'rust'\n};\n\nconst GODBOLT_URL = 'https://godbolt.org';\nconst get = bent__default['default'](`${GODBOLT_URL}/api`, 'GET', 'json', { 'Accept': 'application/json' });\nconst post = bent__default['default'](`${GODBOLT_URL}/api`, 'POST', 'json');\n\nconst langConfig = (() => {\n let langConfig;\n return async function () {\n if (!langConfig) {\n const predefined = new Map([\n ['c++', {\n options: '-O2 -march=haswell -Wall -Wextra -pedantic -Wno-unused-variable -Wno-unused-parameter',\n mainRegex: /\\bmain\\(/\n }],\n ['c', {\n options: '-O2 -march=haswell -Wall -Wextra -pedantic -Wno-unused-variable -Wno-unused-parameter',\n mainRegex: /\\bmain\\(/\n }],\n ['d', {\n mainRegex: /\\bmain\\(/\n }]\n ]);\n log(`reading languages from ${GODBOLT_URL}`);\n const languages = await get('/languages?fields=id,defaultCompiler');\n langConfig = new Map(languages\n .map(({ id, defaultCompiler }) => [id, Object.assign({ 'compiler': defaultCompiler }, predefined.get(id))]));\n log('default language configuration is %o', langConfig);\n }\n return langConfig;\n };\n})();\n\nconst defaultConfig = {\n runMain: true,\n useLocal: false,\n localPort: 10240,\n directives: []\n};\n\nconst directive = pattern => new RegExp(`^\\\\s*\\\\/\\\\/\\\\/\\\\s*${pattern}$`);\n\nconst builtinDirectives = [\n ['compiler=(.*)', (matches, info) => matches.slice(1).forEach(match => {\n info.compiler = match;\n })],\n ['options=(.*)', (matches, info) => matches.slice(1).forEach(match => info.options = match)],\n ['options\\\\+=(.*)', (matches, info) => matches.slice(1).forEach(match => info.options += ' ' + match)],\n ['libs=(\\\\w+:\\\\w+(?:,\\\\w+:\\\\w+)*)', (matches, info) => matches.slice(1).forEach(match => {\n [...match.matchAll(/(\\w+):(\\w+)/g)].forEach(match => {\n info.libs.push({\n name: match[1],\n ver: match[2]\n });\n });\n })],\n ['(no)?execute', (matches, info) => matches.slice(1).forEach(match => info.execute = !match)],\n ['external', (matches, info) => matches.forEach(_ => info.forceExternal = true)],\n ['(un)?hide', (matches, info) => matches.slice(1).forEach(match => info.hide = !match)],\n];\n\nconst parseCode = async (code, language, config) => {\n log('parsing %o, language %s, config %o', code, language, config);\n language = langAliases[language] || language;\n const lg = await langConfig();\n if (!lg.has(language)) {\n log('language %s is not supported', language);\n return null;\n }\n\n config = Object.assign({}, defaultConfig, lg.get(language), config);\n const directives = builtinDirectives.concat(config.directives)\n .map(([regex, action]) => [directive(regex), action]);\n const lines = unescape(code).split('\\n');\n const matches = (line, regex) => line.match(regex) || [];\n\n const info = {\n source: [],\n displaySource: [],\n language: language,\n compiler: config.compiler,\n options: config.options || '',\n libs: config.libs || [],\n forceExternal: false,\n hide: false\n };\n\n for (const line of lines) {\n if (line.match(directive('.*'))) {\n directives.forEach(([regex, action]) => action(matches(line, regex), info));\n } else {\n if (config.runMain\n && config.mainRegex\n && line.match(config.mainRegex)\n && !info.hasOwnProperty('execute')) {\n info.execute = true;\n }\n info.source.push(line);\n if (!info.hide)\n info.displaySource.push(line);\n }\n }\n\n info.baseUrl = (config.useLocal && !info.forceExternal)\n ? `http://localhost:${config.localPort}`\n : GODBOLT_URL;\n info.source = info.source.join('\\n');\n info.displaySource = info.displaySource.join('\\n');\n delete info.hide;\n delete info.forceExternal;\n\n log('parse result %o', info);\n return info;\n};\n\nconst displayUrl = (info) => {\n let content = [\n {\n type: 'component',\n componentName: 'codeEditor',\n componentState: {\n id: 1,\n source: info.source,\n options: { compileOnChange: true, colouriseAsm: true },\n fontScale: 2.5\n }\n },\n {\n type: 'column',\n content: [{\n type: 'component',\n componentName: 'compiler',\n componentState: {\n source: 1,\n lang: info.language,\n compiler: info.compiler,\n options: info.options,\n libs: info.libs,\n fontScale: 3.0,\n filters: {\n commentOnly: true,\n directives: true,\n intel: true,\n labels: true,\n trim: true,\n execute: info.execute\n }\n }\n }, {\n type: 'component',\n componentName: 'output',\n componentState: {\n compiler: 1\n }\n }\n ]\n }\n ];\n let obj = {\n version: 4,\n content: [{ type: 'row', content: content }],\n settings: {\n theme: 'dark'\n }\n };\n\n let ceFragment = encodeURIComponent(JSON.stringify(obj));\n\n return `${info.baseUrl}/#${ceFragment}`;\n};\n\nclass CompileError extends Error {\n constructor(code, message) {\n super(message);\n this.name = 'CompileError';\n this.code = code;\n }\n}\n\nconst compile = async (info, retryOptions = {}) => {\n log('compiling %o', info);\n const data = {\n source: info.source,\n options: {\n userArguments: info.options || '',\n filters: {\n execute: info.execute || false\n },\n libraries: (info.libs || []).map(function (lib) {\n return {\n id: lib.name,\n version: lib.ver\n };\n })\n }\n };\n const response = await promiseRetry__default['default'](retryOptions, async (retry) => {\n try {\n return await post(`/compiler/${info.compiler}/compile`, data);\n }\n catch (err) {\n log('compile error %o', err);\n if (Math.trunc(err.statusCode / 100) === 5) {\n log('retrying');\n retry(err);\n }\n\n throw err;\n }\n });\n\n log('response is %o', response);\n\n const text = (stream) => unstyle(stream.stderr.concat(stream.stdout).map(x => x.text).join('\\n'));\n\n if (response.code === 0) {\n if (info.execute) {\n if (response.execResult.buildResult.code === 0) {\n return text(response.execResult);\n }\n\n throw new CompileError(response.execResult.buildResult.code,\n text(response.execResult.buildResult));\n }\n\n return text(response);\n }\n\n throw new CompileError(response.code, text(response));\n};\n\nexports.CompileError = CompileError;\nexports.compile = compile;\nexports.displayUrl = displayUrl;\nexports.parseCode = parseCode;\n//# sourceMappingURL=compiler-explorer-directives.cjs.map\n","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n 'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n var i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function() {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^Object.\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || (merge && dest[keys[i]] === undefined)) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.addEventListener(type, handler, false);\n });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.removeEventListener(type, handler, false);\n });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n return i;\n }\n i++;\n }\n return -1;\n }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = (prefix) ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n\n}\n\nInput.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function() { },\n\n /**\n * bind the events\n */\n init: function() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n\n /**\n * unbind the events\n */\n destroy: function() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity, velocityX, velocityY, direction;\n\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n var x = 0, y = 0, i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n\n return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n});\n\nvar POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n\n Input.apply(this, arguments);\n\n this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n\n Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n\n Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function(touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n changedTargetTouches\n ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n Input.apply(this, arguments);\n\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n\n this.primaryTouch = null;\n this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n\n this.callback(manager, inputEvent, inputData);\n },\n\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n});\n\nfunction recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n}\n\nfunction setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {x: touch.clientX, y: touch.clientY};\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function() {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n}\n\nfunction isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n}\n\nTouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function(value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n\n /**\n * just re-set the touchAction value\n */\n update: function() {\n this.set(this.manager.options.touchAction);\n },\n\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function() {\n var actions = [];\n each(this.manager.recognizers, function(recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone ||\n (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n (hasPanX && direction & DIRECTION_VERTICAL)) {\n return this.preventSrc(srcEvent);\n }\n },\n\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n\n this.id = uniqueId();\n\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n\n this.state = STATE_POSSIBLE;\n\n this.simultaneous = {};\n this.requireFail = [];\n}\n\nRecognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function(options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function() {\n return this.requireFail.length > 0;\n },\n\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function(input) {\n var self = this;\n var state = this.state;\n\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function() {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function(inputData) { }, // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function() { },\n\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function(input) {\n var state = this.state;\n var eventType = input.eventType;\n\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n\n this.pX = null;\n this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n\n getTouchAction: function() {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n\n directionTest: function(input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n\n attrTest: function(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) &&\n (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n },\n\n emit: function(input) {\n\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n\n var direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n\n emit: function(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n Recognizer.apply(this, arguments);\n\n this._timer = null;\n this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251, // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_AUTO];\n },\n\n process: function(input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && (input.eventType & INPUT_END)) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n\n getTouchAction: function() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n\n attrTest: function(input) {\n var direction = this.options.direction;\n var velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return this._super.attrTest.call(this, input) &&\n direction & input.offsetDirection &&\n input.distance > this.options.threshold &&\n input.maxPointers == this.options.pointers &&\n abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n\n emit: function(input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n\n this._timer = null;\n this._input = null;\n this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300, // max time between the multi-tap taps\n time: 250, // max time of the pointer to be down (like finger on the screen)\n threshold: 9, // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_MANIPULATION];\n },\n\n process: function(input) {\n var options = this.options;\n\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n\n this.reset();\n\n if ((input.eventType & INPUT_START) && (this.count === 0)) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n\n var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n\n failTimeout: function() {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function() {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {enable: false}],\n [PinchRecognizer, {enable: false}, ['rotate']],\n [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n [TapRecognizer],\n [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n [PressRecognizer]\n ],\n\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n\n this.options.inputTarget = this.options.inputTarget || element;\n\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n\n toggleCssProps(this, true);\n\n each(this.options.recognizers, function(item) {\n var recognizer = this.add(new (item[0])(item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n}\n\nManager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function(options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n curRecognizer = session.curRecognizer = null;\n }\n\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && ( // 1\n !curRecognizer || recognizer == curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) { // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function(recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n\n this.touchAction.update();\n return recognizer;\n },\n\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function(recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n },\n\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function(events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function(events, handler) {\n if (events === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n data.preventDefault = function() {\n data.srcEvent.preventDefault();\n };\n\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function() {\n this.element && toggleCssProps(this, false);\n\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function(value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n// style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n define(function() {\n return Hammer;\n });\n} else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n} else {\n window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","const UA = navigator.userAgent;\nconst testElement = document.createElement( 'div' );\n\nexport const isMobile = /(iphone|ipod|ipad|android)/gi.test( UA ) ||\n\t\t\t\t\t\t( navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 ); // iPadOS\n\nexport const isChrome = /chrome/i.test( UA ) && !/edge/i.test( UA );\n\nexport const isAndroid = /android/gi.test( UA );\n\n// Flags if we should use zoom instead of transform to scale\n// up slides. Zoom produces crisper results but has a lot of\n// xbrowser quirks so we only use it in whitelisted browsers.\nexport const supportsZoom = 'zoom' in testElement.style && !isMobile &&\n\t\t\t\t( isChrome || /Version\\/[\\d\\.]+.*Safari/.test( UA ) );","import { parseCode, displayUrl, compile } from 'compiler-explorer-directives';\nimport Hammer from 'hammerjs';\nimport { isMobile } from 'reveal.js/js/utils/device';\n\nasync function parseBlock(block, config) {\n const lang = block.classList.length > 0 ? block.classList[0].replace('language-', '') : config.language;\n // highlighting line numbers removes line break so we need to restore them\n const code = block.hasAttribute( 'data-line-numbers' ) && block.classList.contains('hljs')\n ? Array.from(block.querySelectorAll('tr').values()).map(v => v.textContent).join('\\n')\n : block.textContent;\n const info = await parseCode(code, lang, config);\n if (!info) {\n return;\n }\n const url = displayUrl(info);\n\n if (isMobile) {\n delete Hammer.defaults.cssProps.userSelect; // keep default behavior\n var hammer = new Hammer.Manager(block.parentNode);\n hammer.add(new Hammer.Tap({ event: 'doubletap', taps: 2 }));\n hammer.on('doubletap', e => {\n window.open(url, 'ce');\n });\n } else {\n block.parentNode.onclick = (evt) => {\n if (evt.ctrlKey || evt.metaKey) {\n window.open(url, 'ce');\n }\n };\n }\n\n block.textContent = info.displaySource;\n}\n\nexport default {\n id: 'compiler-explorer',\n init: (reveal) => {\n const highlighPlugin = reveal.getPlugin('highlight');\n const highlightConfig = reveal.getConfig().highlight || {};\n const highlightOnLoad = typeof highlightConfig.highlightOnLoad === 'boolean' ? highlightConfig.highlightOnLoad : true;\n const config = reveal.getConfig().compilerExplorer;\n\n return Promise.all([].slice.call(reveal.getRevealElement().querySelectorAll('pre code')).map(async (block) => {\n await parseBlock(block, config);\n if (highlightOnLoad) {\n highlighPlugin.highlightBlock(block);\n }\n }));\n },\n compile: compile\n};\n"],"names":["RetryOperation","require$$0","retry","errcode","global","browser","bent","promiseRetry","ansi_colors","debug","undefined","define","parseCode","displayUrl","Hammer","hammer","compile"],"mappings":"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"} \ No newline at end of file